diff --git a/.gitignore b/.gitignore index 8961ce21f170309bae02d0b72ada31aa5ec7235a..ec34b920c62338335146d60ed112e9c5115c65e9 100644 --- a/.gitignore +++ b/.gitignore @@ -45,6 +45,20 @@ Builds/VisualStudio2012/open-ephys.vcxproj.user Builds/VisualStudio2012/windowState.xml Builds/VisualStudio2012/pipetest.bit +Builds/VisualStudio2013/Debug +Builds/VisualStudio2013/Release +Builds/VisualStudio2013/Debug64 +Builds/VisualStudio2013/Release64 +Builds/VisualStudio2013/x64 +Builds/VisualStudio2013/ipch +Builds/VisualStudio2013/open-ephys.sdf +Builds/VisualStudio2013/open-ephys.opensdf +Builds/VisualStudio2013/open-ephys.suo +Builds/VisualStudio2013/open-ephys.v11.suo +Builds/VisualStudio2013/open-ephys.vcxproj.user +Builds/VisualStudio2013/windowState.xml +Builds/VisualStudio2013/pipetest.bit + Builds/VisualStudio2010/Debug Builds/VisualStudio2010/Release Builds/VisualStudio2010/ipch diff --git a/Builds/Linux/Makefile b/Builds/Linux/Makefile index efe7e5bda398f1d4a8ec5b3569e132f88aef73eb..ddb257dede2b362df391be32f65510ef09ac27df 100644 --- a/Builds/Linux/Makefile +++ b/Builds/Linux/Makefile @@ -1,30 +1,32 @@ # Automatically generated makefile, created by the Introjucer # Don't edit this file! Your changes will be overwritten when you re-save the Introjucer project! +# (this disables dependency generation if multiple architectures are set) +DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD) + ifndef CONFIG CONFIG=Debug endif -ifeq ($(TARGET_ARCH),) - TARGET_ARCH := -march=native -endif - -# (this disables dependency generation if multiple architectures are set) -DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD) - ifeq ($(CONFIG),Debug) BINDIR := build LIBDIR := build OBJDIR := build/intermediate/Debug OUTDIR := build - CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode - CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O3 - CXXFLAGS += $(CFLAGS) -export-dynamic -g -pg -std=c++0x - LDFLAGS += -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -L/usr/local/include -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt -pg -ldl -lXext -lGLU + + ifeq ($(TARGET_ARCH),) + TARGET_ARCH := -march=native + endif + + CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=0.3.2" -D "JUCE_APP_VERSION_HEX=0x302" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules + CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O3 -export-dynamic -g -pg -std=c++0x + CXXFLAGS += $(CFLAGS) + LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -L/usr/local/include -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt -pg -ldl -lXext -lGLU -lhdf5 -lhdf5_cpp LDDEPS := - RESFLAGS := -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode + RESFLAGS := -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=0.3.2" -D "JUCE_APP_VERSION_HEX=0x302" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules TARGET := open-ephys BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) + CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR) endif ifeq ($(CONFIG),Release) @@ -32,94 +34,37 @@ ifeq ($(CONFIG),Release) LIBDIR := build OBJDIR := build/intermediate/Release OUTDIR := build - CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode - CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3 - CXXFLAGS += $(CFLAGS) -export-dynamic -g -pg -std=c++0x - LDFLAGS += -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt -pg -ldl -lXext -lGLU + + ifeq ($(TARGET_ARCH),) + TARGET_ARCH := -march=native + endif + + CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=0.3.2" -D "JUCE_APP_VERSION_HEX=0x302" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules + CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3 -export-dynamic -g -pg -std=c++0x + CXXFLAGS += $(CFLAGS) + LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt -pg -ldl -lXext -lGLU -lhdf5 -lhdf5_cpp LDDEPS := - RESFLAGS := -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode + RESFLAGS := -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=0.3.2" -D "JUCE_APP_VERSION_HEX=0x302" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules TARGET := open-ephys-release BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) + CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR) endif OBJECTS := \ $(OBJDIR)/AccessClass_de9602d5.o \ $(OBJDIR)/PracticalSocket_2574ecc8.o \ - $(OBJDIR)/Bessel_63b88b81.o \ - $(OBJDIR)/Biquad_479045c5.o \ - $(OBJDIR)/Butterworth_a752fb81.o \ - $(OBJDIR)/Cascade_7ab417a7.o \ - $(OBJDIR)/ChebyshevI_f2af4063.o \ - $(OBJDIR)/ChebyshevII_649cfe90.o \ - $(OBJDIR)/Custom_e24db5a8.o \ - $(OBJDIR)/Design_3ed2fd75.o \ - $(OBJDIR)/Documentation_c5f0da2d.o \ - $(OBJDIR)/Elliptic_8ad9a5b9.o \ - $(OBJDIR)/Filter_e4029a2f.o \ - $(OBJDIR)/Legendre_89451537.o \ - $(OBJDIR)/Param_13628c80.o \ - $(OBJDIR)/PoleFilter_e04f707.o \ - $(OBJDIR)/RBJ_418b612d.o \ - $(OBJDIR)/RootFinder_239a995f.o \ - $(OBJDIR)/State_22979684.o \ $(OBJDIR)/AudioComponent_521bd9c9.o \ - $(OBJDIR)/SerialInput_855a46b1.o \ - $(OBJDIR)/FileReader_18023b0e.o \ - $(OBJDIR)/ChannelMappingNode_d9219b9c.o \ - $(OBJDIR)/PulsePalOutput_9f4ef492.o \ - $(OBJDIR)/ReferenceNode_519d3b68.o \ - $(OBJDIR)/PhaseDetector_7193f7dc.o \ - $(OBJDIR)/AudioResamplingNode_3dbffa2d.o \ - $(OBJDIR)/Channel_33a3e5fe.o \ - $(OBJDIR)/PulsePal_14932a18.o \ - $(OBJDIR)/ofArduino_12f202a5.o \ - $(OBJDIR)/ofSerial_c3b0a9e1.o \ - $(OBJDIR)/EventDetector_4807aa7b.o \ - $(OBJDIR)/FPGAOutput_73b5ffd4.o \ - $(OBJDIR)/ArduinoOutput_391e90c4.o \ - $(OBJDIR)/Parameter_ae008024.o \ - $(OBJDIR)/SpikeDisplayNode_9c52e4ad.o \ - $(OBJDIR)/WiFiOutput_fa464ec5.o \ - $(OBJDIR)/LfpDisplayNode_30ef22fd.o \ - $(OBJDIR)/RecordControl_3e1c6062.o \ - $(OBJDIR)/Merger_2f90542e.o \ - $(OBJDIR)/Splitter_6e27a57b.o \ - $(OBJDIR)/SpikeObject_24e8c655.o \ - $(OBJDIR)/SpikeDisplayCanvas_b208ff6e.o \ - $(OBJDIR)/DataWindow_83ce6754.o \ - $(OBJDIR)/LfpDisplayCanvas_4a58e87e.o \ - $(OBJDIR)/SpikeDetector_300d85e7.o \ - $(OBJDIR)/AudioNode_94606ff3.o \ - $(OBJDIR)/EventNode_95c842b7.o \ - $(OBJDIR)/LfpTriggeredAverageEditor_101d75b.o \ - $(OBJDIR)/SerialInputEditor_c00f31f5.o \ - $(OBJDIR)/ElectrodeButtons_a6064cc.o \ - $(OBJDIR)/ChannelMappingEditor_dd803b0.o \ - $(OBJDIR)/FileReaderEditor_16fd7744.o \ - $(OBJDIR)/PhaseDetectorEditor_f53aa520.o \ - $(OBJDIR)/PulsePalOutputEditor_ab5be148.o \ - $(OBJDIR)/RHD2000Editor_d7ddd6b.o \ - $(OBJDIR)/RecordControlEditor_244084cb.o \ - $(OBJDIR)/ReferenceNodeEditor_19ee0fac.o \ - $(OBJDIR)/ResamplingNodeEditor_f2d6f061.o \ - $(OBJDIR)/FPGAOutputEditor_cfe00f8a.o \ - $(OBJDIR)/ArduinoOutputEditor_1118f008.o \ - $(OBJDIR)/ChannelSelector_c1430874.o \ - $(OBJDIR)/ParameterEditor_91f62ae8.o \ - $(OBJDIR)/SpikeDisplayEditor_e1812c1.o \ - $(OBJDIR)/VisualizerEditor_3672b003.o \ - $(OBJDIR)/MergerEditor_d1fcc0df.o \ - $(OBJDIR)/ImageIcon_c89b23a6.o \ - $(OBJDIR)/WiFiOutputEditor_1d3ba5bb.o \ - $(OBJDIR)/EventNodeEditor_2198733b.o \ - $(OBJDIR)/SignalGeneratorEditor_3223ac0a.o \ - $(OBJDIR)/LfpDisplayEditor_99d75351.o \ - $(OBJDIR)/SourceNodeEditor_8d813122.o \ - $(OBJDIR)/SplitterEditor_c2199b6c.o \ - $(OBJDIR)/SpikeDetectorEditor_2fb63eeb.o \ - $(OBJDIR)/AudioEditor_fb2c6555.o \ - $(OBJDIR)/FilterEditor_dfe1f39d.o \ - $(OBJDIR)/GenericEditor_becb2ad6.o \ + $(OBJDIR)/ArduinoOutput_d5a968de.o \ + $(OBJDIR)/ArduinoOutputEditor_e1b7e52b.o \ + $(OBJDIR)/AudioEditor_3931be27.o \ + $(OBJDIR)/AudioNode_3db3557c.o \ + $(OBJDIR)/AudioResamplingNode_bdba71b0.o \ + $(OBJDIR)/Channel_5cb2d4d2.o \ + $(OBJDIR)/ChannelMappingEditor_9b145f15.o \ + $(OBJDIR)/ChannelMappingNode_ec0559ea.o \ + $(OBJDIR)/EcubeEditor_ba242592.o \ + $(OBJDIR)/RHD2000Editor_dbd5a24.o \ + $(OBJDIR)/EcubeThread_d0477baf.o \ $(OBJDIR)/okFrontPanelDLL_87687880.o \ $(OBJDIR)/rhd2000datablock_722d8dae.o \ $(OBJDIR)/rhd2000evalboard_e0b412d5.o \ @@ -129,13 +74,92 @@ OBJECTS := \ $(OBJDIR)/FPGAThread_a8dc34ed.o \ $(OBJDIR)/DataBuffer_6ae4f549.o \ $(OBJDIR)/DataThread_b2a47a13.o \ - $(OBJDIR)/RecordNode_2b7a1a2.o \ - $(OBJDIR)/SignalGenerator_a9cf4806.o \ - $(OBJDIR)/ResamplingNode_27a58a6b.o \ - $(OBJDIR)/FilterNode_817e9c9.o \ - $(OBJDIR)/SourceNode_c2d6336c.o \ - $(OBJDIR)/GenericProcessor_733760aa.o \ - $(OBJDIR)/ProcessorGraph_68b34a0b.o \ + $(OBJDIR)/Bessel_7e54cb27.o \ + $(OBJDIR)/Biquad_622c856b.o \ + $(OBJDIR)/Butterworth_6aca939b.o \ + $(OBJDIR)/Cascade_b39fccc1.o \ + $(OBJDIR)/ChebyshevI_e0373d09.o \ + $(OBJDIR)/ChebyshevII_281496aa.o \ + $(OBJDIR)/Custom_fce9f54e.o \ + $(OBJDIR)/Design_596f3d1b.o \ + $(OBJDIR)/Documentation_89e2d3c7.o \ + $(OBJDIR)/Elliptic_6f6493df.o \ + $(OBJDIR)/Filter_fe9ed9d5.o \ + $(OBJDIR)/Legendre_6dd0035d.o \ + $(OBJDIR)/Param_4e0cc01a.o \ + $(OBJDIR)/PoleFilter_fb8cf3ad.o \ + $(OBJDIR)/RBJ_6081b347.o \ + $(OBJDIR)/RootFinder_11229605.o \ + $(OBJDIR)/State_5d41ca1e.o \ + $(OBJDIR)/ChannelSelector_c1430874.o \ + $(OBJDIR)/ElectrodeButtons_a6064cc.o \ + $(OBJDIR)/GenericEditor_becb2ad6.o \ + $(OBJDIR)/ImageIcon_c89b23a6.o \ + $(OBJDIR)/VisualizerEditor_3672b003.o \ + $(OBJDIR)/EventDetector_d0f4d00c.o \ + $(OBJDIR)/EventNode_857d5604.o \ + $(OBJDIR)/EventNodeEditor_2652ddd1.o \ + $(OBJDIR)/FileReader_e4a9ccaa.o \ + $(OBJDIR)/FileReaderEditor_e1193ff7.o \ + $(OBJDIR)/FilterEditor_93e366f5.o \ + $(OBJDIR)/FilterNode_d2b4d9ca.o \ + $(OBJDIR)/FPGAOutput_9ccd34ea.o \ + $(OBJDIR)/FPGAOutputEditor_749d7837.o \ + $(OBJDIR)/GenericProcessor_3e79932a.o \ + $(OBJDIR)/LfpDisplayCanvas_9bbf9660.o \ + $(OBJDIR)/LfpDisplayEditor_e7c32ff5.o \ + $(OBJDIR)/LfpDisplayNode_fdf2e2ca.o \ + $(OBJDIR)/LfpTriggeredAverageCanvas_5ba95b5e.o \ + $(OBJDIR)/LfpTriggeredAverageEditor_a7acf4f3.o \ + $(OBJDIR)/LfpTriggeredAverageNode_2ee5cf48.o \ + $(OBJDIR)/Merger_53fb4e4a.o \ + $(OBJDIR)/MergerEditor_e36b0997.o \ + $(OBJDIR)/MessageCenter_bd1ba084.o \ + $(OBJDIR)/MessageCenterEditor_afaf4851.o \ + $(OBJDIR)/ParameterEditor_112258eb.o \ + $(OBJDIR)/Parameter_b3e5ac9e.o \ + $(OBJDIR)/PhaseDetector_8a25ed0e.o \ + $(OBJDIR)/PhaseDetectorEditor_eaec855b.o \ + $(OBJDIR)/ProcessorGraph_8c3a250a.o \ + $(OBJDIR)/PulsePalOutput_f41ce62a.o \ + $(OBJDIR)/PulsePalOutputEditor_3d333977.o \ + $(OBJDIR)/RecordControl_ecb8ada4.o \ + $(OBJDIR)/RecordControlEditor_4355fd71.o \ + $(OBJDIR)/EngineConfigWindow_4fd44ceb.o \ + $(OBJDIR)/HDF5FileFormat_be712135.o \ + $(OBJDIR)/HDF5Recording_d14f7b19.o \ + $(OBJDIR)/OriginalRecording_d6dc3293.o \ + $(OBJDIR)/RecordEngine_97ef83aa.o \ + $(OBJDIR)/RecordNode_cc21a82a.o \ + $(OBJDIR)/ReferenceNode_97454f26.o \ + $(OBJDIR)/ReferenceNodeEditor_7d0ff573.o \ + $(OBJDIR)/ResamplingNode_9825590a.o \ + $(OBJDIR)/ResamplingNodeEditor_8b120457.o \ + $(OBJDIR)/PulsePal_14932a18.o \ + $(OBJDIR)/ofArduino_12f202a5.o \ + $(OBJDIR)/ofSerial_c3b0a9e1.o \ + $(OBJDIR)/SerialInput_f5b197b8.o \ + $(OBJDIR)/SerialInputEditor_46740885.o \ + $(OBJDIR)/SignalGenerator_993274e2.o \ + $(OBJDIR)/SignalGeneratorEditor_b8e0de2f.o \ + $(OBJDIR)/SourceNode_de3985ea.o \ + $(OBJDIR)/SourceNodeEditor_cdc90937.o \ + $(OBJDIR)/SpikeDetector_50b619e4.o \ + $(OBJDIR)/SpikeDetectorEditor_502139b1.o \ + $(OBJDIR)/SpikeDisplayCanvas_2219bd20.o \ + $(OBJDIR)/SpikeDisplayEditor_6e1d56b5.o \ + $(OBJDIR)/SpikeDisplayNode_be27b98a.o \ + $(OBJDIR)/SpikeSortBoxes_17f37282.o \ + $(OBJDIR)/SpikeSorter_5f160cae.o \ + $(OBJDIR)/SpikeSorterCanvas_f0ead366.o \ + $(OBJDIR)/SpikeSorterEditor_3cee6cfb.o \ + $(OBJDIR)/Splitter_889c68aa.o \ + $(OBJDIR)/SplitterEditor_93a6dbf7.o \ + $(OBJDIR)/DataWindow_83ce6754.o \ + $(OBJDIR)/SpikeObject_24e8c655.o \ + $(OBJDIR)/WiFiOutput_416d244a.o \ + $(OBJDIR)/WiFiOutputEditor_ada45f97.o \ + $(OBJDIR)/EcubeDialogComponent_2ec3bd57.o \ $(OBJDIR)/CustomArrowButton_206e4278.o \ $(OBJDIR)/GraphViewer_e43fd2ce.o \ $(OBJDIR)/EditorViewportButtons_29af2a5c.o \ @@ -145,7 +169,6 @@ OBJECTS := \ $(OBJDIR)/CustomLookAndFeel_53a8fcdb.o \ $(OBJDIR)/InfoLabel_a2051bf4.o \ $(OBJDIR)/DataViewport_2cf95d2c.o \ - $(OBJDIR)/MessageCenter_748a1cca.o \ $(OBJDIR)/ControlPanel_a895ede3.o \ $(OBJDIR)/UIComponent_d667ba37.o \ $(OBJDIR)/MainWindow_499ac812.o \ @@ -177,9 +200,7 @@ $(OUTDIR)/$(TARGET): $(OBJECTS) $(LDDEPS) $(RESOURCES) clean: @echo Cleaning open-ephys - -@rm -f $(OUTDIR)/$(TARGET) - -@rm -rf $(OBJDIR)/* - -@rm -rf $(OBJDIR) + @$(CLEANCMD) strip: @echo Stripping open-ephys @@ -195,459 +216,539 @@ $(OBJDIR)/PracticalSocket_2574ecc8.o: ../../Source/Network/PracticalSocket.cpp @echo "Compiling PracticalSocket.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Bessel_63b88b81.o: ../../Source/Dsp/Bessel.cpp +$(OBJDIR)/AudioComponent_521bd9c9.o: ../../Source/Audio/AudioComponent.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling AudioComponent.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/ArduinoOutput_d5a968de.o: ../../Source/Processors/ArduinoOutput/ArduinoOutput.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling ArduinoOutput.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/ArduinoOutputEditor_e1b7e52b.o: ../../Source/Processors/ArduinoOutput/ArduinoOutputEditor.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling ArduinoOutputEditor.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/AudioEditor_3931be27.o: ../../Source/Processors/AudioNode/AudioEditor.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling AudioEditor.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/AudioNode_3db3557c.o: ../../Source/Processors/AudioNode/AudioNode.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling AudioNode.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/AudioResamplingNode_bdba71b0.o: ../../Source/Processors/AudioResamplingNode/AudioResamplingNode.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling AudioResamplingNode.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/Channel_5cb2d4d2.o: ../../Source/Processors/Channel/Channel.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling Channel.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/ChannelMappingEditor_9b145f15.o: ../../Source/Processors/ChannelMappingNode/ChannelMappingEditor.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling ChannelMappingEditor.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/ChannelMappingNode_ec0559ea.o: ../../Source/Processors/ChannelMappingNode/ChannelMappingNode.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling ChannelMappingNode.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/EcubeEditor_ba242592.o: ../../Source/Processors/DataThreads/EcubeEditor.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling EcubeEditor.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/RHD2000Editor_dbd5a24.o: ../../Source/Processors/DataThreads/RHD2000Editor.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling RHD2000Editor.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/EcubeThread_d0477baf.o: ../../Source/Processors/DataThreads/EcubeThread.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling EcubeThread.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/okFrontPanelDLL_87687880.o: ../../Source/Processors/DataThreads/rhythm-api/okFrontPanelDLL.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling okFrontPanelDLL.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/rhd2000datablock_722d8dae.o: ../../Source/Processors/DataThreads/rhythm-api/rhd2000datablock.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling rhd2000datablock.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/rhd2000evalboard_e0b412d5.o: ../../Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling rhd2000evalboard.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/rhd2000registers_cf6cd63b.o: ../../Source/Processors/DataThreads/rhythm-api/rhd2000registers.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling rhd2000registers.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/RHD2000Thread_23e0b041.o: ../../Source/Processors/DataThreads/RHD2000Thread.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling RHD2000Thread.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/FileReaderThread_933ea08.o: ../../Source/Processors/DataThreads/FileReaderThread.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling FileReaderThread.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/FPGAThread_a8dc34ed.o: ../../Source/Processors/DataThreads/FPGAThread.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling FPGAThread.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/DataBuffer_6ae4f549.o: ../../Source/Processors/DataThreads/DataBuffer.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling DataBuffer.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/DataThread_b2a47a13.o: ../../Source/Processors/DataThreads/DataThread.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling DataThread.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + +$(OBJDIR)/Bessel_7e54cb27.o: ../../Source/Processors/Dsp/Bessel.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Bessel.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Biquad_479045c5.o: ../../Source/Dsp/Biquad.cpp +$(OBJDIR)/Biquad_622c856b.o: ../../Source/Processors/Dsp/Biquad.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Biquad.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Butterworth_a752fb81.o: ../../Source/Dsp/Butterworth.cpp +$(OBJDIR)/Butterworth_6aca939b.o: ../../Source/Processors/Dsp/Butterworth.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Butterworth.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Cascade_7ab417a7.o: ../../Source/Dsp/Cascade.cpp +$(OBJDIR)/Cascade_b39fccc1.o: ../../Source/Processors/Dsp/Cascade.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Cascade.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ChebyshevI_f2af4063.o: ../../Source/Dsp/ChebyshevI.cpp +$(OBJDIR)/ChebyshevI_e0373d09.o: ../../Source/Processors/Dsp/ChebyshevI.cpp -@mkdir -p $(OBJDIR) @echo "Compiling ChebyshevI.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ChebyshevII_649cfe90.o: ../../Source/Dsp/ChebyshevII.cpp +$(OBJDIR)/ChebyshevII_281496aa.o: ../../Source/Processors/Dsp/ChebyshevII.cpp -@mkdir -p $(OBJDIR) @echo "Compiling ChebyshevII.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Custom_e24db5a8.o: ../../Source/Dsp/Custom.cpp +$(OBJDIR)/Custom_fce9f54e.o: ../../Source/Processors/Dsp/Custom.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Custom.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Design_3ed2fd75.o: ../../Source/Dsp/Design.cpp +$(OBJDIR)/Design_596f3d1b.o: ../../Source/Processors/Dsp/Design.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Design.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Documentation_c5f0da2d.o: ../../Source/Dsp/Documentation.cpp +$(OBJDIR)/Documentation_89e2d3c7.o: ../../Source/Processors/Dsp/Documentation.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Documentation.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Elliptic_8ad9a5b9.o: ../../Source/Dsp/Elliptic.cpp +$(OBJDIR)/Elliptic_6f6493df.o: ../../Source/Processors/Dsp/Elliptic.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Elliptic.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Filter_e4029a2f.o: ../../Source/Dsp/Filter.cpp +$(OBJDIR)/Filter_fe9ed9d5.o: ../../Source/Processors/Dsp/Filter.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Filter.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Legendre_89451537.o: ../../Source/Dsp/Legendre.cpp +$(OBJDIR)/Legendre_6dd0035d.o: ../../Source/Processors/Dsp/Legendre.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Legendre.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Param_13628c80.o: ../../Source/Dsp/Param.cpp +$(OBJDIR)/Param_4e0cc01a.o: ../../Source/Processors/Dsp/Param.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Param.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/PoleFilter_e04f707.o: ../../Source/Dsp/PoleFilter.cpp +$(OBJDIR)/PoleFilter_fb8cf3ad.o: ../../Source/Processors/Dsp/PoleFilter.cpp -@mkdir -p $(OBJDIR) @echo "Compiling PoleFilter.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/RBJ_418b612d.o: ../../Source/Dsp/RBJ.cpp +$(OBJDIR)/RBJ_6081b347.o: ../../Source/Processors/Dsp/RBJ.cpp -@mkdir -p $(OBJDIR) @echo "Compiling RBJ.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/RootFinder_239a995f.o: ../../Source/Dsp/RootFinder.cpp +$(OBJDIR)/RootFinder_11229605.o: ../../Source/Processors/Dsp/RootFinder.cpp -@mkdir -p $(OBJDIR) @echo "Compiling RootFinder.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/State_22979684.o: ../../Source/Dsp/State.cpp +$(OBJDIR)/State_5d41ca1e.o: ../../Source/Processors/Dsp/State.cpp -@mkdir -p $(OBJDIR) @echo "Compiling State.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/AudioComponent_521bd9c9.o: ../../Source/Audio/AudioComponent.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling AudioComponent.cpp" - @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" - -$(OBJDIR)/SerialInput_855a46b1.o: ../../Source/Processors/SerialInput.cpp +$(OBJDIR)/ChannelSelector_c1430874.o: ../../Source/Processors/Editors/ChannelSelector.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SerialInput.cpp" + @echo "Compiling ChannelSelector.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/FileReader_18023b0e.o: ../../Source/Processors/FileReader.cpp +$(OBJDIR)/ElectrodeButtons_a6064cc.o: ../../Source/Processors/Editors/ElectrodeButtons.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling FileReader.cpp" + @echo "Compiling ElectrodeButtons.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ChannelMappingNode_d9219b9c.o: ../../Source/Processors/ChannelMappingNode.cpp +$(OBJDIR)/GenericEditor_becb2ad6.o: ../../Source/Processors/Editors/GenericEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ChannelMappingNode.cpp" + @echo "Compiling GenericEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/PulsePalOutput_9f4ef492.o: ../../Source/Processors/PulsePalOutput.cpp +$(OBJDIR)/ImageIcon_c89b23a6.o: ../../Source/Processors/Editors/ImageIcon.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling PulsePalOutput.cpp" + @echo "Compiling ImageIcon.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ReferenceNode_519d3b68.o: ../../Source/Processors/ReferenceNode.cpp +$(OBJDIR)/VisualizerEditor_3672b003.o: ../../Source/Processors/Editors/VisualizerEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ReferenceNode.cpp" + @echo "Compiling VisualizerEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/PhaseDetector_7193f7dc.o: ../../Source/Processors/PhaseDetector.cpp +$(OBJDIR)/EventDetector_d0f4d00c.o: ../../Source/Processors/EventDetector/EventDetector.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling PhaseDetector.cpp" + @echo "Compiling EventDetector.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/AudioResamplingNode_3dbffa2d.o: ../../Source/Processors/AudioResamplingNode.cpp +$(OBJDIR)/EventNode_857d5604.o: ../../Source/Processors/EventNode/EventNode.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling AudioResamplingNode.cpp" + @echo "Compiling EventNode.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Channel_33a3e5fe.o: ../../Source/Processors/Channel.cpp +$(OBJDIR)/EventNodeEditor_2652ddd1.o: ../../Source/Processors/EventNode/EventNodeEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling Channel.cpp" + @echo "Compiling EventNodeEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/PulsePal_14932a18.o: ../../Source/Processors/Serial/PulsePal.cpp +$(OBJDIR)/FileReader_e4a9ccaa.o: ../../Source/Processors/FileReader/FileReader.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling PulsePal.cpp" + @echo "Compiling FileReader.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ofArduino_12f202a5.o: ../../Source/Processors/Serial/ofArduino.cpp +$(OBJDIR)/FileReaderEditor_e1193ff7.o: ../../Source/Processors/FileReader/FileReaderEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ofArduino.cpp" + @echo "Compiling FileReaderEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ofSerial_c3b0a9e1.o: ../../Source/Processors/Serial/ofSerial.cpp +$(OBJDIR)/FilterEditor_93e366f5.o: ../../Source/Processors/FilterNode/FilterEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ofSerial.cpp" + @echo "Compiling FilterEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/EventDetector_4807aa7b.o: ../../Source/Processors/EventDetector.cpp +$(OBJDIR)/FilterNode_d2b4d9ca.o: ../../Source/Processors/FilterNode/FilterNode.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling EventDetector.cpp" + @echo "Compiling FilterNode.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/FPGAOutput_73b5ffd4.o: ../../Source/Processors/FPGAOutput.cpp +$(OBJDIR)/FPGAOutput_9ccd34ea.o: ../../Source/Processors/FPGAOutput/FPGAOutput.cpp -@mkdir -p $(OBJDIR) @echo "Compiling FPGAOutput.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ArduinoOutput_391e90c4.o: ../../Source/Processors/ArduinoOutput.cpp +$(OBJDIR)/FPGAOutputEditor_749d7837.o: ../../Source/Processors/FPGAOutput/FPGAOutputEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ArduinoOutput.cpp" + @echo "Compiling FPGAOutputEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/Parameter_ae008024.o: ../../Source/Processors/Parameter.cpp +$(OBJDIR)/GenericProcessor_3e79932a.o: ../../Source/Processors/GenericProcessor/GenericProcessor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling Parameter.cpp" + @echo "Compiling GenericProcessor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/SpikeDisplayNode_9c52e4ad.o: ../../Source/Processors/SpikeDisplayNode.cpp +$(OBJDIR)/LfpDisplayCanvas_9bbf9660.o: ../../Source/Processors/LfpDisplayNode/LfpDisplayCanvas.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SpikeDisplayNode.cpp" + @echo "Compiling LfpDisplayCanvas.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/WiFiOutput_fa464ec5.o: ../../Source/Processors/WiFiOutput.cpp +$(OBJDIR)/LfpDisplayEditor_e7c32ff5.o: ../../Source/Processors/LfpDisplayNode/LfpDisplayEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling WiFiOutput.cpp" + @echo "Compiling LfpDisplayEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/LfpDisplayNode_30ef22fd.o: ../../Source/Processors/LfpDisplayNode.cpp +$(OBJDIR)/LfpDisplayNode_fdf2e2ca.o: ../../Source/Processors/LfpDisplayNode/LfpDisplayNode.cpp -@mkdir -p $(OBJDIR) @echo "Compiling LfpDisplayNode.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/RecordControl_3e1c6062.o: ../../Source/Processors/Utilities/RecordControl.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling RecordControl.cpp" - @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" - -$(OBJDIR)/Merger_2f90542e.o: ../../Source/Processors/Utilities/Merger.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling Merger.cpp" - @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" - -$(OBJDIR)/Splitter_6e27a57b.o: ../../Source/Processors/Utilities/Splitter.cpp +$(OBJDIR)/LfpTriggeredAverageCanvas_5ba95b5e.o: ../../Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageCanvas.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling Splitter.cpp" + @echo "Compiling LfpTriggeredAverageCanvas.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/SpikeObject_24e8c655.o: ../../Source/Processors/Visualization/SpikeObject.cpp +$(OBJDIR)/LfpTriggeredAverageEditor_a7acf4f3.o: ../../Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SpikeObject.cpp" - @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" - -$(OBJDIR)/SpikeDisplayCanvas_b208ff6e.o: ../../Source/Processors/Visualization/SpikeDisplayCanvas.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling SpikeDisplayCanvas.cpp" + @echo "Compiling LfpTriggeredAverageEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/DataWindow_83ce6754.o: ../../Source/Processors/Visualization/DataWindow.cpp +$(OBJDIR)/LfpTriggeredAverageNode_2ee5cf48.o: ../../Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageNode.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling DataWindow.cpp" + @echo "Compiling LfpTriggeredAverageNode.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/LfpDisplayCanvas_4a58e87e.o: ../../Source/Processors/Visualization/LfpDisplayCanvas.cpp +$(OBJDIR)/Merger_53fb4e4a.o: ../../Source/Processors/Merger/Merger.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling LfpDisplayCanvas.cpp" + @echo "Compiling Merger.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/SpikeDetector_300d85e7.o: ../../Source/Processors/SpikeDetector.cpp +$(OBJDIR)/MergerEditor_e36b0997.o: ../../Source/Processors/Merger/MergerEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SpikeDetector.cpp" + @echo "Compiling MergerEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/AudioNode_94606ff3.o: ../../Source/Processors/AudioNode.cpp +$(OBJDIR)/MessageCenter_bd1ba084.o: ../../Source/Processors/MessageCenter/MessageCenter.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling AudioNode.cpp" + @echo "Compiling MessageCenter.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/EventNode_95c842b7.o: ../../Source/Processors/EventNode.cpp +$(OBJDIR)/MessageCenterEditor_afaf4851.o: ../../Source/Processors/MessageCenter/MessageCenterEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling EventNode.cpp" + @echo "Compiling MessageCenterEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/LfpTriggeredAverageEditor_101d75b.o: ../../Source/Processors/Editors/LfpTriggeredAverageEditor.cpp +$(OBJDIR)/ParameterEditor_112258eb.o: ../../Source/Processors/Parameter/ParameterEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling LfpTriggeredAverageEditor.cpp" + @echo "Compiling ParameterEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/SerialInputEditor_c00f31f5.o: ../../Source/Processors/Editors/SerialInputEditor.cpp +$(OBJDIR)/Parameter_b3e5ac9e.o: ../../Source/Processors/Parameter/Parameter.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SerialInputEditor.cpp" + @echo "Compiling Parameter.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ElectrodeButtons_a6064cc.o: ../../Source/Processors/Editors/ElectrodeButtons.cpp +$(OBJDIR)/PhaseDetector_8a25ed0e.o: ../../Source/Processors/PhaseDetector/PhaseDetector.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ElectrodeButtons.cpp" + @echo "Compiling PhaseDetector.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ChannelMappingEditor_dd803b0.o: ../../Source/Processors/Editors/ChannelMappingEditor.cpp +$(OBJDIR)/PhaseDetectorEditor_eaec855b.o: ../../Source/Processors/PhaseDetector/PhaseDetectorEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ChannelMappingEditor.cpp" + @echo "Compiling PhaseDetectorEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/FileReaderEditor_16fd7744.o: ../../Source/Processors/Editors/FileReaderEditor.cpp +$(OBJDIR)/ProcessorGraph_8c3a250a.o: ../../Source/Processors/ProcessorGraph/ProcessorGraph.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling FileReaderEditor.cpp" + @echo "Compiling ProcessorGraph.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/PhaseDetectorEditor_f53aa520.o: ../../Source/Processors/Editors/PhaseDetectorEditor.cpp +$(OBJDIR)/PulsePalOutput_f41ce62a.o: ../../Source/Processors/PulsePalOutput/PulsePalOutput.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling PhaseDetectorEditor.cpp" + @echo "Compiling PulsePalOutput.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/PulsePalOutputEditor_ab5be148.o: ../../Source/Processors/Editors/PulsePalOutputEditor.cpp +$(OBJDIR)/PulsePalOutputEditor_3d333977.o: ../../Source/Processors/PulsePalOutput/PulsePalOutputEditor.cpp -@mkdir -p $(OBJDIR) @echo "Compiling PulsePalOutputEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/RHD2000Editor_d7ddd6b.o: ../../Source/Processors/Editors/RHD2000Editor.cpp +$(OBJDIR)/RecordControl_ecb8ada4.o: ../../Source/Processors/RecordControl/RecordControl.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling RHD2000Editor.cpp" + @echo "Compiling RecordControl.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/RecordControlEditor_244084cb.o: ../../Source/Processors/Editors/RecordControlEditor.cpp +$(OBJDIR)/RecordControlEditor_4355fd71.o: ../../Source/Processors/RecordControl/RecordControlEditor.cpp -@mkdir -p $(OBJDIR) @echo "Compiling RecordControlEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ReferenceNodeEditor_19ee0fac.o: ../../Source/Processors/Editors/ReferenceNodeEditor.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling ReferenceNodeEditor.cpp" - @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" - -$(OBJDIR)/ResamplingNodeEditor_f2d6f061.o: ../../Source/Processors/Editors/ResamplingNodeEditor.cpp +$(OBJDIR)/EngineConfigWindow_4fd44ceb.o: ../../Source/Processors/RecordNode/EngineConfigWindow.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ResamplingNodeEditor.cpp" + @echo "Compiling EngineConfigWindow.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/FPGAOutputEditor_cfe00f8a.o: ../../Source/Processors/Editors/FPGAOutputEditor.cpp +$(OBJDIR)/HDF5FileFormat_be712135.o: ../../Source/Processors/RecordNode/HDF5FileFormat.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling FPGAOutputEditor.cpp" + @echo "Compiling HDF5FileFormat.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ArduinoOutputEditor_1118f008.o: ../../Source/Processors/Editors/ArduinoOutputEditor.cpp +$(OBJDIR)/HDF5Recording_d14f7b19.o: ../../Source/Processors/RecordNode/HDF5Recording.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ArduinoOutputEditor.cpp" + @echo "Compiling HDF5Recording.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ChannelSelector_c1430874.o: ../../Source/Processors/Editors/ChannelSelector.cpp +$(OBJDIR)/OriginalRecording_d6dc3293.o: ../../Source/Processors/RecordNode/OriginalRecording.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ChannelSelector.cpp" + @echo "Compiling OriginalRecording.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ParameterEditor_91f62ae8.o: ../../Source/Processors/Editors/ParameterEditor.cpp +$(OBJDIR)/RecordEngine_97ef83aa.o: ../../Source/Processors/RecordNode/RecordEngine.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ParameterEditor.cpp" + @echo "Compiling RecordEngine.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/SpikeDisplayEditor_e1812c1.o: ../../Source/Processors/Editors/SpikeDisplayEditor.cpp +$(OBJDIR)/RecordNode_cc21a82a.o: ../../Source/Processors/RecordNode/RecordNode.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SpikeDisplayEditor.cpp" + @echo "Compiling RecordNode.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/VisualizerEditor_3672b003.o: ../../Source/Processors/Editors/VisualizerEditor.cpp +$(OBJDIR)/ReferenceNode_97454f26.o: ../../Source/Processors/ReferenceNode/ReferenceNode.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling VisualizerEditor.cpp" + @echo "Compiling ReferenceNode.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/MergerEditor_d1fcc0df.o: ../../Source/Processors/Editors/MergerEditor.cpp +$(OBJDIR)/ReferenceNodeEditor_7d0ff573.o: ../../Source/Processors/ReferenceNode/ReferenceNodeEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling MergerEditor.cpp" + @echo "Compiling ReferenceNodeEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ImageIcon_c89b23a6.o: ../../Source/Processors/Editors/ImageIcon.cpp +$(OBJDIR)/ResamplingNode_9825590a.o: ../../Source/Processors/ResamplingNode/ResamplingNode.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ImageIcon.cpp" + @echo "Compiling ResamplingNode.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/WiFiOutputEditor_1d3ba5bb.o: ../../Source/Processors/Editors/WiFiOutputEditor.cpp +$(OBJDIR)/ResamplingNodeEditor_8b120457.o: ../../Source/Processors/ResamplingNode/ResamplingNodeEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling WiFiOutputEditor.cpp" + @echo "Compiling ResamplingNodeEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/EventNodeEditor_2198733b.o: ../../Source/Processors/Editors/EventNodeEditor.cpp +$(OBJDIR)/PulsePal_14932a18.o: ../../Source/Processors/Serial/PulsePal.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling EventNodeEditor.cpp" + @echo "Compiling PulsePal.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/SignalGeneratorEditor_3223ac0a.o: ../../Source/Processors/Editors/SignalGeneratorEditor.cpp +$(OBJDIR)/ofArduino_12f202a5.o: ../../Source/Processors/Serial/ofArduino.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SignalGeneratorEditor.cpp" + @echo "Compiling ofArduino.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/LfpDisplayEditor_99d75351.o: ../../Source/Processors/Editors/LfpDisplayEditor.cpp +$(OBJDIR)/ofSerial_c3b0a9e1.o: ../../Source/Processors/Serial/ofSerial.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling LfpDisplayEditor.cpp" + @echo "Compiling ofSerial.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/SourceNodeEditor_8d813122.o: ../../Source/Processors/Editors/SourceNodeEditor.cpp +$(OBJDIR)/SerialInput_f5b197b8.o: ../../Source/Processors/SerialInput/SerialInput.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SourceNodeEditor.cpp" + @echo "Compiling SerialInput.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/SplitterEditor_c2199b6c.o: ../../Source/Processors/Editors/SplitterEditor.cpp +$(OBJDIR)/SerialInputEditor_46740885.o: ../../Source/Processors/SerialInput/SerialInputEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SplitterEditor.cpp" + @echo "Compiling SerialInputEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/SpikeDetectorEditor_2fb63eeb.o: ../../Source/Processors/Editors/SpikeDetectorEditor.cpp +$(OBJDIR)/SignalGenerator_993274e2.o: ../../Source/Processors/SignalGenerator/SignalGenerator.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SpikeDetectorEditor.cpp" + @echo "Compiling SignalGenerator.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/AudioEditor_fb2c6555.o: ../../Source/Processors/Editors/AudioEditor.cpp +$(OBJDIR)/SignalGeneratorEditor_b8e0de2f.o: ../../Source/Processors/SignalGenerator/SignalGeneratorEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling AudioEditor.cpp" + @echo "Compiling SignalGeneratorEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/FilterEditor_dfe1f39d.o: ../../Source/Processors/Editors/FilterEditor.cpp +$(OBJDIR)/SourceNode_de3985ea.o: ../../Source/Processors/SourceNode/SourceNode.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling FilterEditor.cpp" + @echo "Compiling SourceNode.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/GenericEditor_becb2ad6.o: ../../Source/Processors/Editors/GenericEditor.cpp +$(OBJDIR)/SourceNodeEditor_cdc90937.o: ../../Source/Processors/SourceNode/SourceNodeEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling GenericEditor.cpp" + @echo "Compiling SourceNodeEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/okFrontPanelDLL_87687880.o: ../../Source/Processors/DataThreads/rhythm-api/okFrontPanelDLL.cpp +$(OBJDIR)/SpikeDetector_50b619e4.o: ../../Source/Processors/SpikeDetector/SpikeDetector.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling okFrontPanelDLL.cpp" + @echo "Compiling SpikeDetector.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/rhd2000datablock_722d8dae.o: ../../Source/Processors/DataThreads/rhythm-api/rhd2000datablock.cpp +$(OBJDIR)/SpikeDetectorEditor_502139b1.o: ../../Source/Processors/SpikeDetector/SpikeDetectorEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling rhd2000datablock.cpp" + @echo "Compiling SpikeDetectorEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/rhd2000evalboard_e0b412d5.o: ../../Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.cpp +$(OBJDIR)/SpikeDisplayCanvas_2219bd20.o: ../../Source/Processors/SpikeDisplayNode/SpikeDisplayCanvas.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling rhd2000evalboard.cpp" + @echo "Compiling SpikeDisplayCanvas.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/rhd2000registers_cf6cd63b.o: ../../Source/Processors/DataThreads/rhythm-api/rhd2000registers.cpp +$(OBJDIR)/SpikeDisplayEditor_6e1d56b5.o: ../../Source/Processors/SpikeDisplayNode/SpikeDisplayEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling rhd2000registers.cpp" + @echo "Compiling SpikeDisplayEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/RHD2000Thread_23e0b041.o: ../../Source/Processors/DataThreads/RHD2000Thread.cpp +$(OBJDIR)/SpikeDisplayNode_be27b98a.o: ../../Source/Processors/SpikeDisplayNode/SpikeDisplayNode.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling RHD2000Thread.cpp" + @echo "Compiling SpikeDisplayNode.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/FileReaderThread_933ea08.o: ../../Source/Processors/DataThreads/FileReaderThread.cpp +$(OBJDIR)/SpikeSortBoxes_17f37282.o: ../../Source/Processors/SpikeSorter/SpikeSortBoxes.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling FileReaderThread.cpp" + @echo "Compiling SpikeSortBoxes.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/FPGAThread_a8dc34ed.o: ../../Source/Processors/DataThreads/FPGAThread.cpp +$(OBJDIR)/SpikeSorter_5f160cae.o: ../../Source/Processors/SpikeSorter/SpikeSorter.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling FPGAThread.cpp" + @echo "Compiling SpikeSorter.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/DataBuffer_6ae4f549.o: ../../Source/Processors/DataThreads/DataBuffer.cpp +$(OBJDIR)/SpikeSorterCanvas_f0ead366.o: ../../Source/Processors/SpikeSorter/SpikeSorterCanvas.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling DataBuffer.cpp" + @echo "Compiling SpikeSorterCanvas.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/DataThread_b2a47a13.o: ../../Source/Processors/DataThreads/DataThread.cpp +$(OBJDIR)/SpikeSorterEditor_3cee6cfb.o: ../../Source/Processors/SpikeSorter/SpikeSorterEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling DataThread.cpp" + @echo "Compiling SpikeSorterEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/RecordNode_2b7a1a2.o: ../../Source/Processors/RecordNode.cpp +$(OBJDIR)/Splitter_889c68aa.o: ../../Source/Processors/Splitter/Splitter.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling RecordNode.cpp" + @echo "Compiling Splitter.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/SignalGenerator_a9cf4806.o: ../../Source/Processors/SignalGenerator.cpp +$(OBJDIR)/SplitterEditor_93a6dbf7.o: ../../Source/Processors/Splitter/SplitterEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SignalGenerator.cpp" + @echo "Compiling SplitterEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ResamplingNode_27a58a6b.o: ../../Source/Processors/ResamplingNode.cpp +$(OBJDIR)/DataWindow_83ce6754.o: ../../Source/Processors/Visualization/DataWindow.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ResamplingNode.cpp" + @echo "Compiling DataWindow.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/FilterNode_817e9c9.o: ../../Source/Processors/FilterNode.cpp +$(OBJDIR)/SpikeObject_24e8c655.o: ../../Source/Processors/Visualization/SpikeObject.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling FilterNode.cpp" + @echo "Compiling SpikeObject.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/SourceNode_c2d6336c.o: ../../Source/Processors/SourceNode.cpp +$(OBJDIR)/WiFiOutput_416d244a.o: ../../Source/Processors/WiFiOutput/WiFiOutput.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling SourceNode.cpp" + @echo "Compiling WiFiOutput.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/GenericProcessor_733760aa.o: ../../Source/Processors/GenericProcessor.cpp +$(OBJDIR)/WiFiOutputEditor_ada45f97.o: ../../Source/Processors/WiFiOutput/WiFiOutputEditor.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling GenericProcessor.cpp" + @echo "Compiling WiFiOutputEditor.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/ProcessorGraph_68b34a0b.o: ../../Source/Processors/ProcessorGraph.cpp +$(OBJDIR)/EcubeDialogComponent_2ec3bd57.o: ../../Source/UI/EcubeDialogComponent.cpp -@mkdir -p $(OBJDIR) - @echo "Compiling ProcessorGraph.cpp" + @echo "Compiling EcubeDialogComponent.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/CustomArrowButton_206e4278.o: ../../Source/UI/CustomArrowButton.cpp @@ -695,11 +796,6 @@ $(OBJDIR)/DataViewport_2cf95d2c.o: ../../Source/UI/DataViewport.cpp @echo "Compiling DataViewport.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/MessageCenter_748a1cca.o: ../../Source/UI/MessageCenter.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling MessageCenter.cpp" - @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" - $(OBJDIR)/ControlPanel_a895ede3.o: ../../Source/UI/ControlPanel.cpp -@mkdir -p $(OBJDIR) @echo "Compiling ControlPanel.cpp" diff --git a/Builds/Linux/build/libokFrontPanel.so b/Builds/Linux/build/libokFrontPanel.so index 6eb1a88a56608f52474e05e824176e04535e4a9e..f8c6386c193b5822adc9a585a0445c1e5efa2c95 100755 Binary files a/Builds/Linux/build/libokFrontPanel.so and b/Builds/Linux/build/libokFrontPanel.so differ diff --git a/Builds/MacOSX/Info.plist b/Builds/MacOSX/Info.plist index 6ca85538f90062ec259a6f370c526d4795119164..1462805bd0e24f7a5d9bb1b84d6a1552dbfcf79c 100644 --- a/Builds/MacOSX/Info.plist +++ b/Builds/MacOSX/Info.plist @@ -16,9 +16,9 @@ <key>CFBundleSignature</key> <string>????</string> <key>CFBundleShortVersionString</key> - <string>0.3.1</string> + <string>0.3.2</string> <key>CFBundleVersion</key> - <string>0.3.1</string> + <string>0.3.2</string> <key>NSHumanReadableCopyright</key> <string>Open Ephys</string> <key>NSHighResolutionCapable</key> diff --git a/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj b/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj index 46cdbcc7af78a86a0056faf8f6ccbf44d5eaec0e..a4af177b4721522963e88fdb78474ce370e1bc6c 100644 --- a/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj +++ b/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj @@ -9,146 +9,161 @@ /* Begin PBXBuildFile section */ 002427B013C43CE3E6D4E9B5 /* juce_opengl.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5915DB02FB7CA8CEC1BF38A9 /* juce_opengl.mm */; }; 004E78BC139419671A9EA137 /* MainWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E08E877C3A6283CF5C803957 /* MainWindow.cpp */; }; - 00A0D05390DB9F2B74DDAA78 /* Bessel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1989E86F8DFDE34887AC0326 /* Bessel.cpp */; }; + 01646F263C203BB412580CB8 /* LfpTriggeredAverageNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA12F07F4F9C872C18A2817B /* LfpTriggeredAverageNode.cpp */; }; + 0203D029CE7420984F737E51 /* FilterEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 414969AEF838522C9FE1B807 /* FilterEditor.cpp */; }; + 027A01C5025DEA9DAFF605D3 /* SpikeSorterEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F46365D8E42099148B843C95 /* SpikeSorterEditor.cpp */; }; 029C3B11BE586DA100895A60 /* ElectrodeButtons.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28CCF04CCC028BAE0AEE5840 /* ElectrodeButtons.cpp */; }; + 031957790B288A3ABED26A87 /* ChebyshevII.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B58436E2B47FC6BB349129F /* ChebyshevII.cpp */; }; 06BCB79AE267E5841F641E38 /* juce_cryptography.mm in Sources */ = {isa = PBXBuildFile; fileRef = 488D1B00C9E5FE4DAB035EDF /* juce_cryptography.mm */; }; - 0836C50051EF59BF91D7B12D /* LfpDisplayEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A91849BE6B96EB8C0663469 /* LfpDisplayEditor.cpp */; }; + 07868E8D0C1A0BB3A94E87AB /* Custom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F603678D95461916B9D971AA /* Custom.cpp */; }; 09673DA3B4D6EA61DEFC0C46 /* DataViewport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 47A3942AC30A3212C01F1CAF /* DataViewport.cpp */; }; + 0A8D8C2D02858F0F08356EA9 /* OriginalRecording.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E39CC410838072043E3C30DC /* OriginalRecording.cpp */; }; 0AE243437B40602D35435C32 /* AudioComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B04D87ED6AA4897B6CD3CCF6 /* AudioComponent.cpp */; }; - 0CEFF81CD8861F959DB13362 /* RecordControlEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1552007C6C6AF750278C5BE5 /* RecordControlEditor.cpp */; }; 0D3DFADD627629AD52668186 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 39F287BE4C0B4F3BD4A949FD /* Accelerate.framework */; }; - 11D82BA398E9433440B76F66 /* PhaseDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FFD9560522567A033226BD7 /* PhaseDetector.cpp */; }; - 129ADFA8B25DE091AFA2D9E3 /* Custom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D8D895B3AD895C6E7FD446BF /* Custom.cpp */; }; + 0E036CEA1285F9B162A07356 /* HDF5FileFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F552E7A463C6207BC3E74C06 /* HDF5FileFormat.cpp */; }; + 0E62780F9978861D5D2BCF71 /* LfpTriggeredAverageCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CC9134D38EBEC67112CA7502 /* LfpTriggeredAverageCanvas.cpp */; }; 13F1111511DD01E843E631CA /* ProcessorList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79C91DDF3BC3F15D0338E504 /* ProcessorList.cpp */; }; 14BDAEA656AAFA60334CC55C /* AccessClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 420B0E95F1300ABFDC125DBF /* AccessClass.cpp */; }; - 1691EC0AC4C7083D65B925E2 /* FPGAOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9D78F50147005EDB0E89E2B4 /* FPGAOutput.cpp */; }; + 15C43033BAB27663B4226539 /* PulsePalOutputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE0EA2212323DEFEBA3D078F /* PulsePalOutputEditor.cpp */; }; 19BB86C918F89D1377F8A0E1 /* SpikeObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5894D40A0E8FA6E9B3EBF9D9 /* SpikeObject.cpp */; }; + 1A415CE073017DDDA7F2E234 /* FPGAOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4448875C40EAB061B2F8A289 /* FPGAOutput.cpp */; }; 1B620FC17AAECA4C5DE741E2 /* DataWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 66463AB11EA4D6341C32F27E /* DataWindow.cpp */; }; - 21539690A9A5DD20AFAF41D3 /* SignalGeneratorEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9136BD46BE1E28A96FBBD440 /* SignalGeneratorEditor.cpp */; }; + 1D0D651813C4A1DCBE811242 /* SignalGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 748F08ACA463113F570C51AC /* SignalGenerator.cpp */; }; + 2416F9D9E4D89A706514FC25 /* Cascade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5FA033C407367AE0793258B /* Cascade.cpp */; }; + 24800AF87AD21CE652552EDE /* FileReaderEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56F810EF10E01535A417B671 /* FileReaderEditor.cpp */; }; 24CC7E9A7E87F762D4AB0467 /* DataThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92602D7166325C7232B85EDD /* DataThread.cpp */; }; - 285FF16149C85F2793EBCBAE /* Design.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B93450006102A0093F5EACB /* Design.cpp */; }; - 2B29D90B985E9EB788472EFE /* SplitterEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D51315B4241B019BE43EE4F1 /* SplitterEditor.cpp */; }; - 2B4A80DCF867DC025C21966B /* Merger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4867923F31CC3EDC9B1A5BE5 /* Merger.cpp */; }; + 2B90821075BA2DF4565644D4 /* Design.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB5B6CEF112FC911B90E6E2 /* Design.cpp */; }; 2D2BDB63CBD0BED07FF9E44B /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = BBE1DB78E35135B41537DCB5 /* RecentFilesMenuTemplate.nib */; }; 3130878C465F3294A89CA142 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E31563D2E7DDD8315F369233 /* IOKit.framework */; }; 3162B66BC8118715AAA527D7 /* UIComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2A3B4CDD296B4CEC6902FD7 /* UIComponent.cpp */; }; - 352F3875222B1D233013AAF9 /* ReferenceNodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9C39C584DA6F507E773687EE /* ReferenceNodeEditor.cpp */; }; 38568B2E6C61E2F07173B568 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C868329EBC1BBA606AB2EB88 /* AudioToolbox.framework */; }; - 3933895CA488855A23943F61 /* ParameterEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46E3A634686BFEF787229582 /* ParameterEditor.cpp */; }; - 3A2E957EB8D117C535F119E9 /* ArduinoOutputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD76E8111A738A8F3717060 /* ArduinoOutputEditor.cpp */; }; + 395F1886484CA576C63B7112 /* RecordControlEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56242BB33B53F133914517BD /* RecordControlEditor.cpp */; }; + 3B05807D08271664EEC4977C /* MessageCenterEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AEFC8A0A9A35F50E59FDE678 /* MessageCenterEditor.cpp */; }; + 3BAE3A1FD0834E798B8602BF /* FilterNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA19ECEFE2B49832ECEED2F /* FilterNode.cpp */; }; 3D0C7CA4AD9E3963D52E89BD /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D685CFEA6344360FBFC355B6 /* DiscRecording.framework */; }; + 3E7939ABAA984EE8BFC8CEDD /* Parameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F5D51C5F8174E3824EF8B42 /* Parameter.cpp */; }; 3FF289281D3318A7BA8BB44D /* juce_audio_processors.mm in Sources */ = {isa = PBXBuildFile; fileRef = B20469D88488F0809126CC80 /* juce_audio_processors.mm */; }; - 4AD3281B0CCF122A25E33667 /* Biquad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 22801F75289646F6A85E5583 /* Biquad.cpp */; }; + 411543734DA2029A3030D903 /* State.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20BB146B925C4D4AD43BA479 /* State.cpp */; }; + 44D7379F739C19C7B78B95F5 /* EventDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5C843AC83A36BE87E3F97F8 /* EventDetector.cpp */; }; + 44DB81313BDDF1ECB6AD33FE /* AudioNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F22CC8D992B8B49D57DDB3F /* AudioNode.cpp */; }; + 469E1EF233BCD61F44687C0F /* RootFinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E122ECCE167A03BDF2D282FE /* RootFinder.cpp */; }; + 4910924155F31E96B9BAD050 /* Splitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B9068FF0373FA8321C33C42C /* Splitter.cpp */; }; + 4EF2825142BBAA76FD55FE26 /* MessageCenter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC1543B1F822FEEDCB9AC26D /* MessageCenter.cpp */; }; 4FA2949D3023FC2E377AFFB6 /* unibody-8.otf in Resources */ = {isa = PBXBuildFile; fileRef = 61317B5191E05925F232E18C /* unibody-8.otf */; }; - 4FEC4EC2796E37A3B11B50B9 /* Filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 587FCA2485B9C89C2A99C23A /* Filter.cpp */; }; 512D7D16D0A95BDD0D6D6E45 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4FD13AA663EEE7CC2F83033D /* WebKit.framework */; }; + 527EB48A4A9C2F4FF1BC4FB2 /* ArduinoOutputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E850C14F13F9855CE1E14C1A /* ArduinoOutputEditor.cpp */; }; 52AE3F7AEED81BA9ED5C4830 /* ChannelSelector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E216D095C98F850A5FB6FB0F /* ChannelSelector.cpp */; }; - 52E0D9DC7F5C4703257D8BEB /* ChannelMappingEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B083B1375828610D55F12CF3 /* ChannelMappingEditor.cpp */; }; - 5570682BF1A39FB3E3FAC182 /* LfpDisplayCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A94E809624F99387E600399 /* LfpDisplayCanvas.cpp */; }; - 55CD2E9F373B69C3E8363B78 /* SourceNodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6328434A329C353DB8D9512C /* SourceNodeEditor.cpp */; }; + 55227B30828797A8DCB0B91D /* ArduinoOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95A64508FF3D0140D3001A19 /* ArduinoOutput.cpp */; }; + 56C42E2DD0B4905488948796 /* Filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 388D5CAFAE66CCCB8ADA594C /* Filter.cpp */; }; 582C224AA50C9395810C8E27 /* ofSerial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 308F614D30DCB9AE3767C928 /* ofSerial.cpp */; }; 58D3FF3B1F462634167BDFB5 /* ControlPanel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 610E487E060C42B52FD5AAC9 /* ControlPanel.cpp */; }; 58E0EC510F2A88E14AE55439 /* juce_gui_extra.mm in Sources */ = {isa = PBXBuildFile; fileRef = 27DC0E650D6D54DF29E6DB68 /* juce_gui_extra.mm */; }; - 591CED1277A8C945EF60841C /* MessageCenter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7BD2C39F13FDE202141C4B41 /* MessageCenter.cpp */; }; - 5AE42EF7A713B1EC0ACF9EDE /* FilterNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B0E8FAD5AC445F612E3468B9 /* FilterNode.cpp */; }; - 6029B20DF2BD523AC0F78896 /* FilterEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D90290A0AA2C36CE757E46D5 /* FilterEditor.cpp */; }; - 6272253EB0051C1F215CD4D9 /* PulsePalOutputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 25A9484825F1B93ABC0E577F /* PulsePalOutputEditor.cpp */; }; - 627C7B84F5FD275FAF43663A /* WiFiOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D41C43686CDE35E86A389D7 /* WiFiOutput.cpp */; }; + 58EC9F834448B334410385EB /* SpikeSorterCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DF620BE87EA9F7F25A1144A /* SpikeSorterCanvas.cpp */; }; + 5C597B1A42C8CB3940CBDDA9 /* EcubeThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFBAE04615D379A18B133090 /* EcubeThread.cpp */; }; 6306AA945375749C4FE834E6 /* Main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C89EC72FF6A7118EF459DC3 /* Main.cpp */; }; + 63B3CC385B0988C7ABA3B07B /* FPGAOutputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB4D72F040FF59BED08826EC /* FPGAOutputEditor.cpp */; }; + 64FC0EA0C132341C1C3E98E1 /* AudioResamplingNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41E88094E8D929866A6DCA9A /* AudioResamplingNode.cpp */; }; 6510492BAE00C95DC620F493 /* juce_core.mm in Sources */ = {isa = PBXBuildFile; fileRef = A6A579E4E4AEA865BC71148C /* juce_core.mm */; }; - 66F3B79BDF9BFB631D7E3584 /* RecordNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A4E2CAAF556D557B24182414 /* RecordNode.cpp */; }; + 66308BBB808DBB920AB3CBAB /* SerialInputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D38B76951D31D96F1B71E0F /* SerialInputEditor.cpp */; }; + 66507CA290B4730FE77B7ABC /* ChebyshevI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D60B35D4E32DAE001056D4D5 /* ChebyshevI.cpp */; }; + 66DE280C28A69B2002C40A86 /* SplitterEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 607CC2BFCB0622B3348FA1AD /* SplitterEditor.cpp */; }; 6702EEA4E99D503C0EE933C4 /* GenericEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D3AE8303545E28D793312F46 /* GenericEditor.cpp */; }; - 685151FF4FB872983524A5C3 /* SpikeDisplayNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DAA04A0FD47097893712B241 /* SpikeDisplayNode.cpp */; }; - 69630D3ECA4D6014EE3734CD /* State.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C1CB526B75E406851FA918C6 /* State.cpp */; }; + 68EBB4CEB08BD3DEAC450B95 /* FileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34834859523571912C55AC94 /* FileReader.cpp */; }; + 69B5045877D4C674E8A4967F /* ResamplingNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E102C308B0722DFFFEFF2415 /* ResamplingNode.cpp */; }; 6A13D8F42A330E2C410B43E3 /* EditorViewport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E875E681E18D693D5ADB2FB /* EditorViewport.cpp */; }; 6B67D7B6301182C7621294B6 /* FPGAThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA23A1334E4CFA77BC18A153 /* FPGAThread.cpp */; }; + 6C0A7B0D658E39227319148F /* RBJ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAD15233FFB64C1608A60250 /* RBJ.cpp */; }; + 6D00BABD3FE1AA0EAA267C1C /* Merger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07B84F46CF90D04BB6B673C5 /* Merger.cpp */; }; + 6D8A9AC5ECC0F2D26304849E /* SpikeDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 89CDE7ED25D0EB7452486E85 /* SpikeDetector.cpp */; }; 7015D104F55D5B128341CEA8 /* juce_graphics.mm in Sources */ = {isa = PBXBuildFile; fileRef = BBDFB328C3D5FC72A0446E6A /* juce_graphics.mm */; }; 702C9BFCE865CB6C6B8BFB0D /* rhd2000registers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DB3B3197F8C1E5EE159D6FC /* rhd2000registers.cpp */; }; - 704484388E63CDE33491E1AB /* EventDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 39464D2A22940DA2DDCCCFC6 /* EventDetector.cpp */; }; - 7077270005BA819E3D5654B5 /* PulsePalOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DBB295F412798131D3F04045 /* PulsePalOutput.cpp */; }; - 71111DE81104B1536ECB6DFB /* SourceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ECA6FDB1366BE7EC30F1539B /* SourceNode.cpp */; }; 739573501D1D440A72C5C2E5 /* RHD2000Thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A3FB0EA0264580F6B00D993B /* RHD2000Thread.cpp */; }; - 784125612E2B7AC6CD89D835 /* EventNodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70151263C4CB8A4F79431E11 /* EventNodeEditor.cpp */; }; + 7398C5E00B9093F78C697706 /* Butterworth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 777D9B0FE3C110ADA980BD09 /* Butterworth.cpp */; }; + 74A14124A3B0C5FB13583B57 /* SourceNodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 326F8386BCD4E4189D0CC00F /* SourceNodeEditor.cpp */; }; + 74D0CA6935D890153FB58C56 /* WiFiOutputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3734FF118787377E4C8741D1 /* WiFiOutputEditor.cpp */; }; 790911EDF00A4BF77327D99A /* PulsePal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48E12736F471C43C959AD15C /* PulsePal.cpp */; }; + 79FC643530710BF2885932C1 /* ReferenceNodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D4D435D25CFC019E0FCF4A1 /* ReferenceNodeEditor.cpp */; }; + 7B69E73AF79BB2B10BAA559C /* SourceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 242B80832B3C8FF4F3CC18F1 /* SourceNode.cpp */; }; 7F188166D38DA7FB23311413 /* ImageIcon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04C6B933E1603B4D0916570D /* ImageIcon.cpp */; }; - 80E5365461A5A7A32C48C563 /* EventNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F94DD42C7BBF81C101D3F605 /* EventNode.cpp */; }; - 85A60568B3DC342C76B4E679 /* GenericProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AE038CACE48AF85C4FB1ED5 /* GenericProcessor.cpp */; }; - 88B896EB9793E0C44410D981 /* PhaseDetectorEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 75B1E4EFCDA9A506CFEDB09F /* PhaseDetectorEditor.cpp */; }; + 82160D8346428EC9F641FAD6 /* PulsePalOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 183701B0661B6FE784C6A75F /* PulsePalOutput.cpp */; }; + 8352817FEDC7542D3E65B49A /* AudioEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA4EAC64A750D0C3DEE83C5D /* AudioEditor.cpp */; }; + 846EF153B423E09BC5BFDAFD /* SerialInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C01F867D43DF7B1D98B887E /* SerialInput.cpp */; }; + 84BB28DDFF317D243DDC7FA2 /* SpikeDisplayCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAC6EC29963717E95428D7D2 /* SpikeDisplayCanvas.cpp */; }; 89FCE8890946693CD5FC4A70 /* okFrontPanelDLL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 235A8987D99A191D07208D2F /* okFrontPanelDLL.cpp */; }; - 8A5BACA019DA9B0EFAD5CE93 /* ProcessorGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 555D34D0CD8776EE5996CC3A /* ProcessorGraph.cpp */; }; + 8ED8249C48B1BB53F617A789 /* Param.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40F90FEFBD575E8A67DF68EB /* Param.cpp */; }; + 8F39AD3F7938EFE82D06E89F /* EcubeDialogComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF28CAB9C7531EF7422602E1 /* EcubeDialogComponent.cpp */; }; 9212DC2AEE118398CC970DDF /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 243817BA562AD7FA76C834C9 /* CoreMIDI.framework */; }; 9227961C07C0EE73E89C90B5 /* juce_audio_devices.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65F4459CC1832883FFF6C166 /* juce_audio_devices.mm */; }; + 9252537C12447F047243DEE9 /* Bessel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 041038F6E67FE0409D8ECC74 /* Bessel.cpp */; }; 955561F4FF4484648FDB9F73 /* FileReaderThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1718EC50691D8421EC00F8B3 /* FileReaderThread.cpp */; }; 95AE939ADE096394CCD2526F /* EditorViewportButtons.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F3B3184EC6D42CEA35D6ED8 /* EditorViewportButtons.cpp */; }; - 992137E90F9D41522FD56875 /* MergerEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29FD7B383C5DDACAA7B8DFD3 /* MergerEditor.cpp */; }; - 996F9E4989EB47941D8100DA /* SignalGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5522973FA48A13C6BED293FE /* SignalGenerator.cpp */; }; + 9635A954DB8FDD6E19B977C3 /* SpikeSortBoxes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92F51CF12E0C21F38D5E61E8 /* SpikeSortBoxes.cpp */; }; + 97105BCBC5B1BE4E86D48899 /* ResamplingNodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 55DFE30C901793E56A7E3A22 /* ResamplingNodeEditor.cpp */; }; 9A80E3D1D1758A31D2169497 /* CustomLookAndFeel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3774BBCA6CB133D9A854CF71 /* CustomLookAndFeel.cpp */; }; - 9D17609E468FC65EB70ED7F4 /* RBJ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A21A229CFACC67E31F4F727 /* RBJ.cpp */; }; 9E30156DBCE4EAF9EFAF0AC4 /* juce_audio_utils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 56728EC77C65482B9C86FF4D /* juce_audio_utils.mm */; }; - 9E8544C3983B3203530B5A49 /* Parameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD2370F8F4A44446558A08FB /* Parameter.cpp */; }; + 9F431DA23C92CA0F8E3A2A28 /* LfpDisplayCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D9BF6DA66C22FFF5C4D41991 /* LfpDisplayCanvas.cpp */; }; A0DAD4E5F7583349DC9275F2 /* juce_data_structures.mm in Sources */ = {isa = PBXBuildFile; fileRef = DBCA7E2FFCFD1354DD19DDD6 /* juce_data_structures.mm */; }; + A14CA9089A09267E95C93E1D /* SpikeDisplayEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2F0C721AB2973FAD23C7F47B /* SpikeDisplayEditor.cpp */; }; A269A876BDF3B7011FA4C681 /* juce_gui_basics.mm in Sources */ = {isa = PBXBuildFile; fileRef = 23609D430A25F54723269E91 /* juce_gui_basics.mm */; }; A2EE65335FB2810C04ECBFAF /* juce_audio_formats.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6B28CEAF75E22F2CCCACBCC7 /* juce_audio_formats.mm */; }; - A3CF90DE56808A47519FC101 /* SerialInputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07BEF02C2B930DF7847C2921 /* SerialInputEditor.cpp */; }; - A44FEA7117CFE2F06B9889B4 /* Legendre.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4B0DF8094C90543A65E03E3 /* Legendre.cpp */; }; - A454D138EC507C01D299AB0F /* WiFiOutputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C79249376E3FDF10615E16EA /* WiFiOutputEditor.cpp */; }; + A4A2DF3FA65BAB4322FE5E74 /* HDF5Recording.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 36332333DBF8363163F454E6 /* HDF5Recording.cpp */; }; + A5A90525A975EC3B1E40086E /* ReferenceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D9B10885C9D93CEF580EF167 /* ReferenceNode.cpp */; }; A94130738A9973148544664A /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5A00ACFA3D76168F22F1205 /* Cocoa.framework */; }; AA16BE5A6BBD024C8FCFCDA8 /* VisualizerEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CAA3B9396EA62166234DAEF1 /* VisualizerEditor.cpp */; }; - AD032CEA5DBE4D4C76D3D2D1 /* ArduinoOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D38E60AC4854B6E1EDE488EB /* ArduinoOutput.cpp */; }; + AD371C6F383F03EF392B6581 /* MergerEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BAA5B3AD1A27F8C4D37A6869 /* MergerEditor.cpp */; }; + AD588F05EDFE59FD48A3F9B8 /* PoleFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9C736D7B85CCD9EC40C5D0AF /* PoleFilter.cpp */; }; AD7D05519200FB0EE1C7617A /* BinaryData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A512C5B237A77EF6FB8E11A0 /* BinaryData.cpp */; }; - AE06672D2CBF8F64465B2126 /* RootFinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F69480D6145C77992FA59BA /* RootFinder.cpp */; }; - AF26E388BF6536803E762CB1 /* RHD2000Editor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45D78C8EF660EECE64BAA33F /* RHD2000Editor.cpp */; }; - AF67C81811F18FCE6AA9C895 /* SpikeDisplayEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC95CD1D830F6D85ADB3B9D /* SpikeDisplayEditor.cpp */; }; - B226387EB0FCE3BE6773FF61 /* Cascade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09BCBD414282A3AA4F66A3A5 /* Cascade.cpp */; }; - B3B08037F49EC7540586828F /* ChebyshevI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AC2CFF4DA5CE431FCC628BA3 /* ChebyshevI.cpp */; }; - B6C73582C501D8C3C03A4860 /* ChebyshevII.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B767A249792EB15A87054409 /* ChebyshevII.cpp */; }; - B89453078EB0A8107F39EDF3 /* SerialInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86688D712937F3D08918C68B /* SerialInput.cpp */; }; + AD938EF313A6AC879CA4BED7 /* Elliptic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52070E1171C046E4949ADFE5 /* Elliptic.cpp */; }; + AEDA8F23648EABF79215B566 /* RecordEngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F716728550EBD8FA7B9CA7EF /* RecordEngine.cpp */; }; + AEE1F2B70ED51F7AFEF4E93B /* WiFiOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B25949076F9BB831C5862415 /* WiFiOutput.cpp */; }; + AFC645928D103D9FA51481CA /* SpikeDetectorEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0F10367EBD3945780342A37 /* SpikeDetectorEditor.cpp */; }; + B081F3F4FA6D8C35E2EEE778 /* Biquad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CB5C14E82DE06F767EAD62F9 /* Biquad.cpp */; }; + B49852F77C0C392C159A1914 /* GenericProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5654EAA7B65445CF1340983 /* GenericProcessor.cpp */; }; + B806F023DF817BB2D59FEEFD /* RecordNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 949422DF0532222450E95926 /* RecordNode.cpp */; }; + B88BCF2522AD283DDC0B4F16 /* RHD2000Editor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAFA97C9B7C7635298E274DB /* RHD2000Editor.cpp */; }; + B9718533E5255AEC3F6C7B2F /* SpikeSorter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D45EF9812FBC284BCB7EEB7C /* SpikeSorter.cpp */; }; BA608CEFC85F7AB9E30E0EB3 /* CustomArrowButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F960CC94B136201BDA148EEA /* CustomArrowButton.cpp */; }; - BBE886EA79C50D0D68A5A753 /* PoleFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65312FAD0900119CDF6CF414 /* PoleFilter.cpp */; }; - BE54C019A73BBAE05BFD7D17 /* ResamplingNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A98A22CF5F208ED6DBE08063 /* ResamplingNode.cpp */; }; - BF3254F07C15D467D6DB3FEF /* AudioEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 10BE33089BA6F3468F36CD6C /* AudioEditor.cpp */; }; - C0E966234C8AF91C19CF6EA4 /* Param.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F6C67E29CDEDF2EF61C054F /* Param.cpp */; }; + BAC379C03C2E7995F2393EF5 /* ProcessorGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB63EE1552BBFDEB1DADB0A /* ProcessorGraph.cpp */; }; + BD091BDB684BB28E0F953B8B /* RecordControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E849E3966302E7D4D06712F5 /* RecordControl.cpp */; }; + BFAC940E5771516A92281F96 /* SignalGeneratorEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0915EBE101DD5974F692755B /* SignalGeneratorEditor.cpp */; }; + BFFD23BD72ECEC9E54936061 /* LfpDisplayEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 88C69F0563A99BD2F7BF5FBB /* LfpDisplayEditor.cpp */; }; C2475E008FEB33B3EA7B6C7F /* juce_audio_basics.mm in Sources */ = {isa = PBXBuildFile; fileRef = DF3C9A1DD67E879E4E0A2727 /* juce_audio_basics.mm */; }; - C3406F00595AEFF068EDB162 /* FPGAOutputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 169F1B20FC9FFE88C53D2735 /* FPGAOutputEditor.cpp */; }; - C59764685E62E7C4D323F84B /* LfpDisplayNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EA535EA158451360B7B8AE52 /* LfpDisplayNode.cpp */; }; - C6F08BF3EF53274A42BB88EB /* Channel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9BC055494F9FEE3F90630541 /* Channel.cpp */; }; + C45009DBCD71E9E234BFCE97 /* Channel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA8CC6FD54A9F20DA755F2EA /* Channel.cpp */; }; + C59D4B35ABCF3BE6D0A0665E /* PhaseDetectorEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FE8C41480F07050CC21635F /* PhaseDetectorEditor.cpp */; }; C853FCE2F6C91B3643322CF0 /* PracticalSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F577889CB6C54A2F7B1CA80 /* PracticalSocket.cpp */; }; C8D7AC0B88A9A2C182B2B752 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DBB769DEBCD6468C13A3CD25 /* Carbon.framework */; }; + C9678AAD3560E89CCE8FA529 /* EcubeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 80A19F69D9B205BCC0ABA293 /* EcubeEditor.cpp */; }; C9AC286A46B3A1318F298DEF /* rhd2000datablock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ECB5A75A81B90327F58CBD9E /* rhd2000datablock.cpp */; }; + C9F9AE4CB2009DFFD7D7A67F /* PhaseDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F10D1D2F5ED2E7F9A997D4C /* PhaseDetector.cpp */; }; CA4DCF67B48352BE633A616D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C055D09224D84121A3EBB29F /* QuartzCore.framework */; }; CAB9D9DEF279F93132B45F90 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 80C1B737D2C2CB519D1787D7 /* QTKit.framework */; }; - CB470032BC92A30906C96258 /* Elliptic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 392408C1943AC6234BAAC743 /* Elliptic.cpp */; }; - D0873C347977633B4421B94D /* SpikeDetectorEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A252FE4E6A360CBC4AF694B3 /* SpikeDetectorEditor.cpp */; }; - D0E9E20F9D8FDA700BB6D820 /* Splitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C4730CAFED4F6292B575318 /* Splitter.cpp */; }; - D19775DC99C67AD20F98EF17 /* Documentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90FCB43DA2FF766597DA75E /* Documentation.cpp */; }; + D1F0765F1497D5228ABCA63C /* EventNodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6BE430A8D1C6240286ED75B /* EventNodeEditor.cpp */; }; D499273B65D901D0A101CAAA /* GraphViewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5C1D021C0FD6FAD082C5D75 /* GraphViewer.cpp */; }; DA836EC803E4FF4EDEBE6386 /* rhd2000evalboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D2BAC4320470CF68743F58E /* rhd2000evalboard.cpp */; }; - DD77A0AB68C932F294B753C2 /* LfpTriggeredAverageEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B7819A5759B54D91E334447 /* LfpTriggeredAverageEditor.cpp */; }; + DC1D91C883B609DBEF7A4235 /* Legendre.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 78A1CE918B3E7ADD87DA4350 /* Legendre.cpp */; }; DDDFAE2042D8AD20CC78CE3C /* ofArduino.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3753B3B311AE0A9F4CC5AD40 /* ofArduino.cpp */; }; - DE758AF46844DF951655966C /* AudioNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27F558F42AC78F0E564B5AF /* AudioNode.cpp */; }; + DED0D08EFA1EFF4F1D4D3BEF /* SpikeDisplayNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AC9E30922A14330704FB2573 /* SpikeDisplayNode.cpp */; }; E100912B2FCE36A30D097C95 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C21DBFB38865E5AFE367C6F /* OpenGL.framework */; }; - E4DA638CDD4DD574A6CD843E /* RecordControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 258938780F93A7CF41366F26 /* RecordControl.cpp */; }; + E1247DDF1C88D99691499E52 /* EngineConfigWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7DB22AC6407EEA88F3FFA16D /* EngineConfigWindow.cpp */; }; + E13848868678C0655147C59D /* LfpTriggeredAverageEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20DBF92457AF75C0698D1B26 /* LfpTriggeredAverageEditor.cpp */; }; + E18FD0CB21E95A6E81286611 /* Documentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E5098D437FC0612291567AC /* Documentation.cpp */; }; E5CBEA12D7AD7788C9BF5737 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27313EA12BC45638321922CA /* CoreAudio.framework */; }; + E6038800731F7C747D181A51 /* ChannelMappingEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0105584D551FED59203CC84 /* ChannelMappingEditor.cpp */; }; E85DA5FC9A162F129ABA7113 /* SignalChainManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0987F7E90136D0E08A606A22 /* SignalChainManager.cpp */; }; - EA46BA3970E958013FF85690 /* FileReaderEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B0097003751A59A11FA8C5B /* FileReaderEditor.cpp */; }; - EA6A1BDDF81818D516B93DD6 /* ChannelMappingNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5654BDD4FBFF01AC3F17FA0D /* ChannelMappingNode.cpp */; }; - ED8CB527B27C67E9E4DA027C /* SpikeDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3B7E4E25505D9044BFACC7 /* SpikeDetector.cpp */; }; - EDEE5E21F0C9BDB7DB796083 /* AudioResamplingNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76F569AE7B444D8F69EE0E86 /* AudioResamplingNode.cpp */; }; - EE56A6BBBFA4A27A4BCF7279 /* SpikeDisplayCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7D4C9E3ED3763847C087F46 /* SpikeDisplayCanvas.cpp */; }; - F0EC60AEFAFF3D289F8110BE /* ResamplingNodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5ABE6BDCA91410BA92A7BD9 /* ResamplingNodeEditor.cpp */; }; - F25EC78DCCC9CCEE805AE011 /* FileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9215DC26F511C58DEE009209 /* FileReader.cpp */; }; + F2586A2DCEF44961AEA247E8 /* ParameterEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 934B37E2BECD69E6E27051F6 /* ParameterEditor.cpp */; }; F4397EAE00E0B9F96C8B6C07 /* InfoLabel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17E13CCDA0C82F92EAB05BE6 /* InfoLabel.cpp */; }; - F505DF3C2BA492B5A2F28D05 /* Butterworth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B47B3368AA1A182B0CA1AB26 /* Butterworth.cpp */; }; + F4808CE43E77C8EC285A39DC /* EventNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2592795DB135E0F2C04406F3 /* EventNode.cpp */; }; FA2A052548AAD146F3F5AD83 /* juce_video.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4A7695E93CE32F4E95042FCB /* juce_video.mm */; }; + FA882EEE408CBBDC7BD90F14 /* LfpDisplayNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C64C490BD7FE9E57D6C682D /* LfpDisplayNode.cpp */; }; FAE745870674A07A65690433 /* DataBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 788F8B7719B70465762B634B /* DataBuffer.cpp */; }; FCB767F14565886C9D823916 /* juce_events.mm in Sources */ = {isa = PBXBuildFile; fileRef = C29E664781AA2396C8D59543 /* juce_events.mm */; }; FD4865450F4C47FF3C6327FE /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56169D835A3E3029D6E3904C /* QuickTime.framework */; }; - FDCFDC9CC6D7A82131190FB0 /* ReferenceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BBD9C2AED6F500D090069007 /* ReferenceNode.cpp */; }; + FFCA1C44C024BCA1878F49FE /* ChannelMappingNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 25CEC111DFEC71FA6828257F /* ChannelMappingNode.cpp */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 0052A4FD257928E5D83927E6 /* juce_WavAudioFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_WavAudioFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp; sourceTree = SOURCE_ROOT; }; - 00A54510EFB9B0966D0B430C /* PulsePalOutputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PulsePalOutputEditor.h; path = ../../Source/Processors/Editors/PulsePalOutputEditor.h; sourceTree = SOURCE_ROOT; }; + 012F05BBF926C8F39AC7871B /* GenericProcessor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GenericProcessor.h; path = ../../Source/Processors/GenericProcessor/GenericProcessor.h; sourceTree = SOURCE_ROOT; }; 01859D6E7D95E44BD8E17D91 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_cryptography/juce_module_info; sourceTree = SOURCE_ROOT; }; 018F4E079EB12A78C4F8F773 /* juce_MidiBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MidiBuffer.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiBuffer.h; sourceTree = SOURCE_ROOT; }; 01C313C323E5CB995C939E0B /* juce_Component.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Component.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/components/juce_Component.cpp; sourceTree = SOURCE_ROOT; }; @@ -157,12 +172,12 @@ 0242AB5BCD8C002DC2E30BAC /* juce_MidiOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MidiOutput.h; path = ../../JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiOutput.h; sourceTree = SOURCE_ROOT; }; 027C1143CC66EA8F73C39A74 /* juce_ThreadWithProgressWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ThreadWithProgressWindow.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h; sourceTree = SOURCE_ROOT; }; 0287B009511521BEAAE8A52C /* DataThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataThread.h; path = ../../Source/Processors/DataThreads/DataThread.h; sourceTree = SOURCE_ROOT; }; - 028D4D3C0862B4B1312E2395 /* SourceNodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SourceNodeEditor.h; path = ../../Source/Processors/Editors/SourceNodeEditor.h; sourceTree = SOURCE_ROOT; }; 02DA588D3B873F1971ACD912 /* juce_FlacAudioFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FlacAudioFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp; sourceTree = SOURCE_ROOT; }; 0316B49B86725305C70783CA /* juce_AudioPluginFormatManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioPluginFormatManager.cpp; path = ../../JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp; sourceTree = SOURCE_ROOT; }; 033AE5DE19F0EEDC47D41C80 /* juce_FileChooserDialogBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileChooserDialogBox.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp; sourceTree = SOURCE_ROOT; }; 0384C68082FE4EAA41C8FBC2 /* juce_SharedResourcePointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SharedResourcePointer.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_SharedResourcePointer.h; sourceTree = SOURCE_ROOT; }; 03D7B457E0915E43A6AFF4B4 /* juce_AudioUnitPluginFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioUnitPluginFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h; sourceTree = SOURCE_ROOT; }; + 041038F6E67FE0409D8ECC74 /* Bessel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Bessel.cpp; path = ../../Source/Processors/Dsp/Bessel.cpp; sourceTree = SOURCE_ROOT; }; 04C474E0F2F7FDEC714A673C /* juce_PathIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PathIterator.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathIterator.cpp; sourceTree = SOURCE_ROOT; }; 04C6B933E1603B4D0916570D /* ImageIcon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ImageIcon.cpp; path = ../../Source/Processors/Editors/ImageIcon.cpp; sourceTree = SOURCE_ROOT; }; 04ED2387517934A84ACF9865 /* juce_BubbleComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BubbleComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp; sourceTree = SOURCE_ROOT; }; @@ -174,7 +189,8 @@ 06072EC6BCD3B7D8C17C2402 /* juce_AudioProcessor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioProcessor.cpp; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp; sourceTree = SOURCE_ROOT; }; 078625CF5C083AD538D23401 /* juce_AudioCDReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioCDReader.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/audio_cd/juce_AudioCDReader.cpp; sourceTree = SOURCE_ROOT; }; 0790CCE2FCFDFA6944DFC402 /* juce_PopupMenu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PopupMenu.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_PopupMenu.cpp; sourceTree = SOURCE_ROOT; }; - 07BEF02C2B930DF7847C2921 /* SerialInputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SerialInputEditor.cpp; path = ../../Source/Processors/Editors/SerialInputEditor.cpp; sourceTree = SOURCE_ROOT; }; + 07A8ED74417654C40F9EFEFC /* FPGAOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FPGAOutput.h; path = ../../Source/Processors/FPGAOutput/FPGAOutput.h; sourceTree = SOURCE_ROOT; }; + 07B84F46CF90D04BB6B673C5 /* Merger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Merger.cpp; path = ../../Source/Processors/Merger/Merger.cpp; sourceTree = SOURCE_ROOT; }; 07FD5E530E9E6BFB2ACA4B8C /* juce_audio_formats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_audio_formats.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/juce_audio_formats.h; sourceTree = SOURCE_ROOT; }; 081E86FE0B991469CFA8D7EA /* juce_CPlusPlusCodeTokeniser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CPlusPlusCodeTokeniser.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp; sourceTree = SOURCE_ROOT; }; 085F51FEE5C5FDAA321090A0 /* juce_CachedComponentImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CachedComponentImage.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/components/juce_CachedComponentImage.h; sourceTree = SOURCE_ROOT; }; @@ -182,20 +198,20 @@ 08907A4BA0D5628476D19C48 /* juce_RelativePointPath.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativePointPath.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp; sourceTree = SOURCE_ROOT; }; 08A7A7FD7D77C0657270E9BF /* juce_DrawableText.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableText.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableText.cpp; sourceTree = SOURCE_ROOT; }; 08DAD5894A480950C66F5873 /* juce_ArrowButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ArrowButton.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.h; sourceTree = SOURCE_ROOT; }; + 0915EBE101DD5974F692755B /* SignalGeneratorEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SignalGeneratorEditor.cpp; path = ../../Source/Processors/SignalGenerator/SignalGeneratorEditor.cpp; sourceTree = SOURCE_ROOT; }; 09160DF53438B400BFE85E07 /* juce_InputSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InputSource.h; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_InputSource.h; sourceTree = SOURCE_ROOT; }; 0987F7E90136D0E08A606A22 /* SignalChainManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SignalChainManager.cpp; path = ../../Source/UI/SignalChainManager.cpp; sourceTree = SOURCE_ROOT; }; 09A159213372995F3CCEB85B /* juce_String.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_String.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_String.h; sourceTree = SOURCE_ROOT; }; - 09BCBD414282A3AA4F66A3A5 /* Cascade.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Cascade.cpp; path = ../../Source/Dsp/Cascade.cpp; sourceTree = SOURCE_ROOT; }; 0A2AD4AB14F93364EFB9611E /* miso-regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = "miso-regular.ttf"; path = "../../Resources/Fonts/miso-regular.ttf"; sourceTree = SOURCE_ROOT; }; 0A351ED88CF00C0697701E73 /* juce_Logger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Logger.h; path = ../../JuceLibraryCode/modules/juce_core/logging/juce_Logger.h; sourceTree = SOURCE_ROOT; }; 0A413228C75C046CE683E0E6 /* juce_String.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_String.cpp; path = ../../JuceLibraryCode/modules/juce_core/text/juce_String.cpp; sourceTree = SOURCE_ROOT; }; 0A42FFB89531588E51762D3E /* juce_android_Audio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Audio.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_android_Audio.cpp; sourceTree = SOURCE_ROOT; }; 0A46EF94E558D5E19F96E646 /* juce_Timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Timer.cpp; path = ../../JuceLibraryCode/modules/juce_events/timers/juce_Timer.cpp; sourceTree = SOURCE_ROOT; }; + 0A6D08BC1B5ACA62F35AF5CD /* Biquad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Biquad.h; path = ../../Source/Processors/Dsp/Biquad.h; sourceTree = SOURCE_ROOT; }; 0A8BC957DBEE226346C1EA25 /* juce_BigInteger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BigInteger.cpp; path = ../../JuceLibraryCode/modules/juce_core/maths/juce_BigInteger.cpp; sourceTree = SOURCE_ROOT; }; 0AA8F001A50408977E76ED96 /* juce_RecentlyOpenedFilesList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RecentlyOpenedFilesList.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp; sourceTree = SOURCE_ROOT; }; 0AAFE3F4D106138401C190C5 /* juce_GlowEffect.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GlowEffect.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/effects/juce_GlowEffect.cpp; sourceTree = SOURCE_ROOT; }; 0B2502A656E77E00AF15A343 /* juce_ApplicationCommandInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationCommandInfo.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h; sourceTree = SOURCE_ROOT; }; - 0B2B7732073D56E484950C8D /* RecordControlEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RecordControlEditor.h; path = ../../Source/Processors/Editors/RecordControlEditor.h; sourceTree = SOURCE_ROOT; }; 0B382285EEDD8A3FDB45C074 /* juce_ThreadPool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ThreadPool.h; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_ThreadPool.h; sourceTree = SOURCE_ROOT; }; 0B5B63E563EFA7E816DE3DCA /* juce_OutputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OutputStream.h; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_OutputStream.h; sourceTree = SOURCE_ROOT; }; 0BB4380EDFEAAE0DAB255B90 /* juce_BlowFish.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BlowFish.cpp; path = ../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_BlowFish.cpp; sourceTree = SOURCE_ROOT; }; @@ -203,7 +219,6 @@ 0BF3932F3EA1149C2F7E31F9 /* juce_IPAddress.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_IPAddress.cpp; path = ../../JuceLibraryCode/modules/juce_core/network/juce_IPAddress.cpp; sourceTree = SOURCE_ROOT; }; 0C646E9950FB580B21E1F2BD /* juce_WindowsMediaAudioFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_WindowsMediaAudioFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp; sourceTree = SOURCE_ROOT; }; 0CCB1C4D687001E04DE1DD9C /* juce_SubregionStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SubregionStream.cpp; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_SubregionStream.cpp; sourceTree = SOURCE_ROOT; }; - 0CCE619599DB39323E49FF3C /* ResamplingNodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ResamplingNodeEditor.h; path = ../../Source/Processors/Editors/ResamplingNodeEditor.h; sourceTree = SOURCE_ROOT; }; 0D3C20D1F00B7B1381E6B987 /* juce_TabbedButtonBar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TabbedButtonBar.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp; sourceTree = SOURCE_ROOT; }; 0D884C2CF25F23CE6B99B2A1 /* juce_Singleton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Singleton.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_Singleton.h; sourceTree = SOURCE_ROOT; }; 0D8ECE32F7D0FE74185F6EF4 /* juce_PropertyPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PropertyPanel.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyPanel.h; sourceTree = SOURCE_ROOT; }; @@ -213,13 +228,11 @@ 0E4B0B8425DBA19B6F3FE4BF /* juce_UIViewComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_UIViewComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/embedding/juce_UIViewComponent.h; sourceTree = SOURCE_ROOT; }; 0E98E81084F183B8426EDA7F /* juce_DynamicObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DynamicObject.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_DynamicObject.h; sourceTree = SOURCE_ROOT; }; 0FA84E49DB493BCC886A355F /* juce_MD5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MD5.h; path = ../../JuceLibraryCode/modules/juce_cryptography/hashing/juce_MD5.h; sourceTree = SOURCE_ROOT; }; - 0FDD7551AC98348D4A98ADC7 /* ProcessorGraph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ProcessorGraph.h; path = ../../Source/Processors/ProcessorGraph.h; sourceTree = SOURCE_ROOT; }; 0FE8ACC50ED8E7FFC9E6B9B4 /* ControlPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ControlPanel.h; path = ../../Source/UI/ControlPanel.h; sourceTree = SOURCE_ROOT; }; 105B1452DF6CE1D80D69A9D1 /* ProcessorList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ProcessorList.h; path = ../../Source/UI/ProcessorList.h; sourceTree = SOURCE_ROOT; }; 106E81B939C6B35E34DD71FE /* juce_CodeEditorComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CodeEditorComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h; sourceTree = SOURCE_ROOT; }; - 1086169B0EE86E04B64575C2 /* Dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Dsp.h; path = ../../Source/Dsp/Dsp.h; sourceTree = SOURCE_ROOT; }; 108DF32ADFBA5CA48F928A92 /* juce_File.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_File.h; path = ../../JuceLibraryCode/modules/juce_core/files/juce_File.h; sourceTree = SOURCE_ROOT; }; - 10BE33089BA6F3468F36CD6C /* AudioEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioEditor.cpp; path = ../../Source/Processors/Editors/AudioEditor.cpp; sourceTree = SOURCE_ROOT; }; + 10AC8A3D981DAE425D24F9F1 /* EventNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventNode.h; path = ../../Source/Processors/EventNode/EventNode.h; sourceTree = SOURCE_ROOT; }; 113404D3FDE3745DF1E8D014 /* juce_ReadWriteLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ReadWriteLock.h; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_ReadWriteLock.h; sourceTree = SOURCE_ROOT; }; 1191BF3048664183033BFF89 /* juce_DropShadowEffect.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DropShadowEffect.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/effects/juce_DropShadowEffect.cpp; sourceTree = SOURCE_ROOT; }; 1194EE0956A9645270582979 /* juce_android_Messaging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Messaging.cpp; path = ../../JuceLibraryCode/modules/juce_events/native/juce_android_Messaging.cpp; sourceTree = SOURCE_ROOT; }; @@ -227,9 +240,11 @@ 11D619EEF63C1827EA91F593 /* juce_UndoManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_UndoManager.cpp; path = ../../JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoManager.cpp; sourceTree = SOURCE_ROOT; }; 1246C8A62803B7E115713705 /* juce_LocalisedStrings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LocalisedStrings.cpp; path = ../../JuceLibraryCode/modules/juce_core/text/juce_LocalisedStrings.cpp; sourceTree = SOURCE_ROOT; }; 12B5243A9435FABAFBE20165 /* juce_Quaternion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Quaternion.h; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_Quaternion.h; sourceTree = SOURCE_ROOT; }; - 12B5DDCB6E5ECD93A4C55BB5 /* LfpDisplayCanvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayCanvas.h; path = ../../Source/Processors/Visualization/LfpDisplayCanvas.h; sourceTree = SOURCE_ROOT; }; + 12F73B770FFDEA8696710E86 /* SerialInput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SerialInput.h; path = ../../Source/Processors/SerialInput/SerialInput.h; sourceTree = SOURCE_ROOT; }; 1307DAE32BA702565A67D127 /* juce_MidiFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MidiFile.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiFile.cpp; sourceTree = SOURCE_ROOT; }; 13212C01A5E138553FAFBE9C /* juce_Drawable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Drawable.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_Drawable.cpp; sourceTree = SOURCE_ROOT; }; + 1322A008F022AF76593EAA9A /* Common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Common.h; path = ../../Source/Processors/Dsp/Common.h; sourceTree = SOURCE_ROOT; }; + 13A33B5CF55BDF7BDC9D1D0C /* SpikeDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDetector.h; path = ../../Source/Processors/SpikeDetector/SpikeDetector.h; sourceTree = SOURCE_ROOT; }; 13D9868B08E941F6827E157C /* juce_ResizableWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ResizableWindow.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ResizableWindow.h; sourceTree = SOURCE_ROOT; }; 13D9DC48F19699485F9888A4 /* juce_PathIterator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PathIterator.h; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathIterator.h; sourceTree = SOURCE_ROOT; }; 1463D2DAB3A1D8CEE825056A /* juce_AudioCDReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioCDReader.h; path = ../../JuceLibraryCode/modules/juce_audio_devices/audio_cd/juce_AudioCDReader.h; sourceTree = SOURCE_ROOT; }; @@ -238,27 +253,26 @@ 14F594C425F332F455A16D35 /* okFrontPanelDLL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = okFrontPanelDLL.h; path = "../../Source/Processors/DataThreads/rhythm-api/okFrontPanelDLL.h"; sourceTree = SOURCE_ROOT; }; 14FE601229C9A40C6E182F28 /* juce_mac_MouseCursor.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_MouseCursor.mm; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_MouseCursor.mm; sourceTree = SOURCE_ROOT; }; 1518D2BA7FCAF267EF1F02E6 /* juce_win32_Windowing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Windowing.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_Windowing.cpp; sourceTree = SOURCE_ROOT; }; - 154303EE3929F26B93792187 /* SourceNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SourceNode.h; path = ../../Source/Processors/SourceNode.h; sourceTree = SOURCE_ROOT; }; - 1552007C6C6AF750278C5BE5 /* RecordControlEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RecordControlEditor.cpp; path = ../../Source/Processors/Editors/RecordControlEditor.cpp; sourceTree = SOURCE_ROOT; }; + 154D5631EEFF8883BD385EB7 /* Elliptic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Elliptic.h; path = ../../Source/Processors/Dsp/Elliptic.h; sourceTree = SOURCE_ROOT; }; 15870472BA2B1779521A21BD /* ElectrodeButtons.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ElectrodeButtons.h; path = ../../Source/Processors/Editors/ElectrodeButtons.h; sourceTree = SOURCE_ROOT; }; 159790C750B1F8B485DBB499 /* juce_win32_FileChooser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_FileChooser.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp; sourceTree = SOURCE_ROOT; }; 161E095C716133CB255B6CCD /* juce_MidiKeyboardState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MidiKeyboardState.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiKeyboardState.h; sourceTree = SOURCE_ROOT; }; 167524110873F9888CF1B9E8 /* juce_ApplicationCommandID.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationCommandID.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandID.h; sourceTree = SOURCE_ROOT; }; 168823A9EBD85BFBFD2CE2EE /* RadioButtons-03.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-03.png"; path = "../../Resources/Images/Icons/RadioButtons-03.png"; sourceTree = SOURCE_ROOT; }; - 169F1B20FC9FFE88C53D2735 /* FPGAOutputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FPGAOutputEditor.cpp; path = ../../Source/Processors/Editors/FPGAOutputEditor.cpp; sourceTree = SOURCE_ROOT; }; 1712916024EC787B6C231732 /* RadioButtons_selected_over-03.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-03.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-03.png"; sourceTree = SOURCE_ROOT; }; 1718EC50691D8421EC00F8B3 /* FileReaderThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FileReaderThread.cpp; path = ../../Source/Processors/DataThreads/FileReaderThread.cpp; sourceTree = SOURCE_ROOT; }; 1719507D8A73EA71F1C3F306 /* cpmono-plain-serialized */ = {isa = PBXFileReference; lastKnownFileType = file; name = "cpmono-plain-serialized"; path = "../../Resources/Fonts/cpmono-plain-serialized"; sourceTree = SOURCE_ROOT; }; 172FA5C9EC4B16BC0C45F269 /* juce_Variant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Variant.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_Variant.h; sourceTree = SOURCE_ROOT; }; 174842EA681FA29BE38A6272 /* juce_ButtonPropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ButtonPropertyComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; 1777330D3BDAE99A93F98943 /* juce_Font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Font.h; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Font.h; sourceTree = SOURCE_ROOT; }; + 1785D37A95AF0D67F69F29B6 /* ResamplingNodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ResamplingNodeEditor.h; path = ../../Source/Processors/ResamplingNode/ResamplingNodeEditor.h; sourceTree = SOURCE_ROOT; }; 178AD28BF5BC92B58A3A3539 /* juce_MixerAudioSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MixerAudioSource.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_MixerAudioSource.h; sourceTree = SOURCE_ROOT; }; 17B29FF3D3EA14EF2BE149BB /* juce_ComponentBoundsConstrainer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentBoundsConstrainer.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp; sourceTree = SOURCE_ROOT; }; 17CACEC7EA0A4B55A06A0993 /* juce_MidiDataConcatenator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MidiDataConcatenator.h; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_MidiDataConcatenator.h; sourceTree = SOURCE_ROOT; }; - 17CE6B2913E72ED8727ECD56 /* AudioResamplingNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioResamplingNode.h; path = ../../Source/Processors/AudioResamplingNode.h; sourceTree = SOURCE_ROOT; }; 17E13CCDA0C82F92EAB05BE6 /* InfoLabel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InfoLabel.cpp; path = ../../Source/UI/InfoLabel.cpp; sourceTree = SOURCE_ROOT; }; 17FB020EFEAED8493D3CB121 /* juce_ToolbarItemComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ToolbarItemComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h; sourceTree = SOURCE_ROOT; }; 1819C1C4DE5FEEDEA143E3D2 /* juce_mac_MainMenu.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_MainMenu.mm; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_MainMenu.mm; sourceTree = SOURCE_ROOT; }; + 183701B0661B6FE784C6A75F /* PulsePalOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PulsePalOutput.cpp; path = ../../Source/Processors/PulsePalOutput/PulsePalOutput.cpp; sourceTree = SOURCE_ROOT; }; 18A730DF335EEB3A4D13FDCA /* juce_MessageManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MessageManager.cpp; path = ../../JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.cpp; sourceTree = SOURCE_ROOT; }; 18B410DA5435C02C82BA13F8 /* juce_BooleanPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BooleanPropertyComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h; sourceTree = SOURCE_ROOT; }; 18C2F9CA38393D106FB834E2 /* juce_AudioPluginFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioPluginFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp; sourceTree = SOURCE_ROOT; }; @@ -266,19 +280,18 @@ 19043050D1DADAEAB48FB803 /* juce_AudioCDBurner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioCDBurner.h; path = ../../JuceLibraryCode/modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h; sourceTree = SOURCE_ROOT; }; 19148DBA36B94FA639DF3A72 /* CustomLookAndFeel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CustomLookAndFeel.h; path = ../../Source/UI/CustomLookAndFeel.h; sourceTree = SOURCE_ROOT; }; 193FED8339417E8E6264957A /* juce_ElementComparator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ElementComparator.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_ElementComparator.h; sourceTree = SOURCE_ROOT; }; - 1989E86F8DFDE34887AC0326 /* Bessel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Bessel.cpp; path = ../../Source/Dsp/Bessel.cpp; sourceTree = SOURCE_ROOT; }; 19A8A8E1BF043B390E02C429 /* juce_linux_Messaging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Messaging.cpp; path = ../../JuceLibraryCode/modules/juce_events/native/juce_linux_Messaging.cpp; sourceTree = SOURCE_ROOT; }; 19AB6653E818B409554C5606 /* juce_ScopedValueSetter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScopedValueSetter.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_ScopedValueSetter.h; sourceTree = SOURCE_ROOT; }; + 19B08AF9187EC45ECDE87602 /* AudioNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioNode.h; path = ../../Source/Processors/AudioNode/AudioNode.h; sourceTree = SOURCE_ROOT; }; 1A22BB28E65B6D6636CCEBF1 /* RadioButtons_selected_over-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-02.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-02.png"; sourceTree = SOURCE_ROOT; }; 1A5E3078685AC97ADC098693 /* juce_JSON.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_JSON.cpp; path = ../../JuceLibraryCode/modules/juce_core/javascript/juce_JSON.cpp; sourceTree = SOURCE_ROOT; }; - 1AD76E8111A738A8F3717060 /* ArduinoOutputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ArduinoOutputEditor.cpp; path = ../../Source/Processors/Editors/ArduinoOutputEditor.cpp; sourceTree = SOURCE_ROOT; }; 1AEEC114AFAB6E81205FBCD1 /* juce_AttributedString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AttributedString.h; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_AttributedString.h; sourceTree = SOURCE_ROOT; }; 1B27BF1CF3F235A55CD5107D /* juce_ResamplingAudioSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResamplingAudioSource.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp; sourceTree = SOURCE_ROOT; }; 1BF01252E3A30560525CE057 /* juce_win32_WebBrowserComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_WebBrowserComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; 1C4227B9237C06B69587F551 /* juce_LookAndFeel_V3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LookAndFeel_V3.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp; sourceTree = SOURCE_ROOT; }; 1C474C73937D98E9D3FFEEC0 /* juce_FilePreviewComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FilePreviewComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h; sourceTree = SOURCE_ROOT; }; 1C639F4C139C8D7753AA9BB6 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_gui_extra/juce_module_info; sourceTree = SOURCE_ROOT; }; - 1C93ECD2B04F39923E66B529 /* ReferenceNodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ReferenceNodeEditor.h; path = ../../Source/Processors/Editors/ReferenceNodeEditor.h; sourceTree = SOURCE_ROOT; }; + 1C64C490BD7FE9E57D6C682D /* LfpDisplayNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayNode.cpp; path = ../../Source/Processors/LfpDisplayNode/LfpDisplayNode.cpp; sourceTree = SOURCE_ROOT; }; 1CB0D7AC988EDEC838A1C546 /* juce_AudioSampleBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioSampleBuffer.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h; sourceTree = SOURCE_ROOT; }; 1CCC1D4213B17ABF6222EC82 /* juce_PropertiesFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PropertiesFile.cpp; path = ../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp; sourceTree = SOURCE_ROOT; }; 1CFA355CD6811C253C72BDDA /* juce_KeyPressMappingSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_KeyPressMappingSet.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h; sourceTree = SOURCE_ROOT; }; @@ -287,46 +300,46 @@ 1D7FEC587CFE464A21830C4D /* juce_win32_SystemTrayIcon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_SystemTrayIcon.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp; sourceTree = SOURCE_ROOT; }; 1DF5FD417930A62110DF0419 /* juce_ModalComponentManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ModalComponentManager.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/components/juce_ModalComponentManager.cpp; sourceTree = SOURCE_ROOT; }; 1E9FE44F0CCC6604B5469412 /* juce_KeyMappingEditorComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_KeyMappingEditorComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp; sourceTree = SOURCE_ROOT; }; - 1EC95CD1D830F6D85ADB3B9D /* SpikeDisplayEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayEditor.cpp; path = ../../Source/Processors/Editors/SpikeDisplayEditor.cpp; sourceTree = SOURCE_ROOT; }; 1F12D1392E5DF34C3A3C445D /* juce_NewLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NewLine.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_NewLine.h; sourceTree = SOURCE_ROOT; }; + 1F22CC8D992B8B49D57DDB3F /* AudioNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioNode.cpp; path = ../../Source/Processors/AudioNode/AudioNode.cpp; sourceTree = SOURCE_ROOT; }; 1F63169D680CA9A2A56EA488 /* juce_XMLCodeTokeniser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_XMLCodeTokeniser.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp; sourceTree = SOURCE_ROOT; }; 205E9A5C31827555F1CAC30D /* juce_OpenGL_osx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGL_osx.h; path = ../../JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_osx.h; sourceTree = SOURCE_ROOT; }; 208DCD7025D0DF2740C01E4A /* juce_TextPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextPropertyComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_TextPropertyComponent.h; sourceTree = SOURCE_ROOT; }; + 20BB146B925C4D4AD43BA479 /* State.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = State.cpp; path = ../../Source/Processors/Dsp/State.cpp; sourceTree = SOURCE_ROOT; }; + 20DBF92457AF75C0698D1B26 /* LfpTriggeredAverageEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpTriggeredAverageEditor.cpp; path = ../../Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.cpp; sourceTree = SOURCE_ROOT; }; 20EB4F22A76954F2986F364A /* juce_mac_Windowing.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_Windowing.mm; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_Windowing.mm; sourceTree = SOURCE_ROOT; }; 215B159836CE40810964B773 /* juce_Uuid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Uuid.h; path = ../../JuceLibraryCode/modules/juce_core/misc/juce_Uuid.h; sourceTree = SOURCE_ROOT; }; 215E1BD79B5870D5356810F0 /* Visualizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Visualizer.h; path = ../../Source/Processors/Visualization/Visualizer.h; sourceTree = SOURCE_ROOT; }; 217032322A2570ABAC47194C /* juce_Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Image.h; path = ../../JuceLibraryCode/modules/juce_graphics/images/juce_Image.h; sourceTree = SOURCE_ROOT; }; - 2196ED9DD4262C60135E77F5 /* LfpTriggeredAverageEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpTriggeredAverageEditor.h; path = ../../Source/Processors/Editors/LfpTriggeredAverageEditor.h; sourceTree = SOURCE_ROOT; }; 21A0260D2DB039B81DF4970C /* juce_FileSearchPath.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileSearchPath.cpp; path = ../../JuceLibraryCode/modules/juce_core/files/juce_FileSearchPath.cpp; sourceTree = SOURCE_ROOT; }; 21C11A58CAA0F9E86AA204EC /* juce_Slider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Slider.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Slider.h; sourceTree = SOURCE_ROOT; }; 21D3C1095D2B5A834D998B74 /* juce_android_OpenSL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_OpenSL.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_android_OpenSL.cpp; sourceTree = SOURCE_ROOT; }; 222AC2E9BEFE12BE7FF88879 /* juce_Thread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Thread.cpp; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_Thread.cpp; sourceTree = SOURCE_ROOT; }; - 22801F75289646F6A85E5583 /* Biquad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Biquad.cpp; path = ../../Source/Dsp/Biquad.cpp; sourceTree = SOURCE_ROOT; }; - 229989EC8A6F145C81348CA9 /* PhaseDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PhaseDetector.h; path = ../../Source/Processors/PhaseDetector.h; sourceTree = SOURCE_ROOT; }; + 22FAA3DA9944AA853D66114F /* LfpTriggeredAverageCanvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpTriggeredAverageCanvas.h; path = ../../Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageCanvas.h; sourceTree = SOURCE_ROOT; }; 235A8987D99A191D07208D2F /* okFrontPanelDLL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = okFrontPanelDLL.cpp; path = "../../Source/Processors/DataThreads/rhythm-api/okFrontPanelDLL.cpp"; sourceTree = SOURCE_ROOT; }; 23609D430A25F54723269E91 /* juce_gui_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_gui_basics.mm; path = ../../JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.mm; sourceTree = SOURCE_ROOT; }; 23A6BA852B71DAAF3F709428 /* RHD2000Thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RHD2000Thread.h; path = ../../Source/Processors/DataThreads/RHD2000Thread.h; sourceTree = SOURCE_ROOT; }; 23C7EA9C89CC98A5EFEC12FA /* juce_GZIPCompressorOutputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GZIPCompressorOutputStream.h; path = ../../JuceLibraryCode/modules/juce_core/zip/juce_GZIPCompressorOutputStream.h; sourceTree = SOURCE_ROOT; }; 23D82A4C165DD596474F30E4 /* juce_ColourSelector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ColourSelector.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_ColourSelector.h; sourceTree = SOURCE_ROOT; }; - 23EAFAEA6457DB4E452F8715 /* SignalGenerator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SignalGenerator.h; path = ../../Source/Processors/SignalGenerator.h; sourceTree = SOURCE_ROOT; }; 23F048594D4C9AD8C3399877 /* juce_android_SystemStats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_SystemStats.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_android_SystemStats.cpp; sourceTree = SOURCE_ROOT; }; + 242B80832B3C8FF4F3CC18F1 /* SourceNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SourceNode.cpp; path = ../../Source/Processors/SourceNode/SourceNode.cpp; sourceTree = SOURCE_ROOT; }; 243817BA562AD7FA76C834C9 /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; }; 24D86195580EFB86AC084DCC /* cpmono_extra_light.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_extra_light.otf; path = ../../Resources/Fonts/cpmono_extra_light.otf; sourceTree = SOURCE_ROOT; }; 25433DB6D2EAEBB307EFB960 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_graphics/juce_module_info; sourceTree = SOURCE_ROOT; }; 2560987BB222D7CED27EAC87 /* juce_WildcardFileFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WildcardFileFilter.h; path = ../../JuceLibraryCode/modules/juce_core/files/juce_WildcardFileFilter.h; sourceTree = SOURCE_ROOT; }; 256E22D98B16B09BD521C4A4 /* juce_AudioProcessorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioProcessorEditor.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h; sourceTree = SOURCE_ROOT; }; - 258938780F93A7CF41366F26 /* RecordControl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RecordControl.cpp; path = ../../Source/Processors/Utilities/RecordControl.cpp; sourceTree = SOURCE_ROOT; }; - 25A9484825F1B93ABC0E577F /* PulsePalOutputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PulsePalOutputEditor.cpp; path = ../../Source/Processors/Editors/PulsePalOutputEditor.cpp; sourceTree = SOURCE_ROOT; }; - 25ABEB43042E98C668A16432 /* SpikeDisplayEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayEditor.h; path = ../../Source/Processors/Editors/SpikeDisplayEditor.h; sourceTree = SOURCE_ROOT; }; + 2592795DB135E0F2C04406F3 /* EventNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventNode.cpp; path = ../../Source/Processors/EventNode/EventNode.cpp; sourceTree = SOURCE_ROOT; }; + 25B79E00075CCF59F0A4A7D7 /* RecordEngine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RecordEngine.h; path = ../../Source/Processors/RecordNode/RecordEngine.h; sourceTree = SOURCE_ROOT; }; + 25CEC111DFEC71FA6828257F /* ChannelMappingNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChannelMappingNode.cpp; path = ../../Source/Processors/ChannelMappingNode/ChannelMappingNode.cpp; sourceTree = SOURCE_ROOT; }; 25DCA4D0E86DFB51AF637D21 /* juce_win32_Midi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Midi.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_Midi.cpp; sourceTree = SOURCE_ROOT; }; 25F7BEADC001FA3D1EA9B32C /* juce_DrawablePath.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawablePath.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawablePath.cpp; sourceTree = SOURCE_ROOT; }; 261B5AA82F2A86CC5500D8D2 /* ArduinoIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ArduinoIcon.png; path = ../../Resources/Images/Icons/ArduinoIcon.png; sourceTree = SOURCE_ROOT; }; - 265EDA19C88E74249FD66609 /* SignalGeneratorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SignalGeneratorEditor.h; path = ../../Source/Processors/Editors/SignalGeneratorEditor.h; sourceTree = SOURCE_ROOT; }; 266FC6DA3123E576811DD828 /* juce_FlacAudioFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FlacAudioFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h; sourceTree = SOURCE_ROOT; }; 26FF78F12CCB8725C0DAF9C2 /* juce_MidiInput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MidiInput.h; path = ../../JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiInput.h; sourceTree = SOURCE_ROOT; }; 27313EA12BC45638321922CA /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; 27548017AB2ABAF17E1D5DF5 /* juce_FileInputSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileInputSource.h; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_FileInputSource.h; sourceTree = SOURCE_ROOT; }; 27DC0E650D6D54DF29E6DB68 /* juce_gui_extra.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_gui_extra.mm; path = ../../JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.mm; sourceTree = SOURCE_ROOT; }; + 27FB12D08303BEC9CD15E317 /* SerialInputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SerialInputEditor.h; path = ../../Source/Processors/SerialInput/SerialInputEditor.h; sourceTree = SOURCE_ROOT; }; 2847E92BB432EEB9D5A59260 /* juce_StringArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StringArray.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_StringArray.h; sourceTree = SOURCE_ROOT; }; 284F3E94F0C96EA1DD89E606 /* juce_FileFilter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileFilter.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileFilter.cpp; sourceTree = SOURCE_ROOT; }; 28847C807E6B05303FB8FB34 /* juce_mac_Strings.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_Strings.mm; path = ../../JuceLibraryCode/modules/juce_core/native/juce_mac_Strings.mm; sourceTree = SOURCE_ROOT; }; @@ -334,67 +347,69 @@ 28D5AEEEFC4FA8877419C829 /* juce_posix_NamedPipe.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_posix_NamedPipe.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_posix_NamedPipe.cpp; sourceTree = SOURCE_ROOT; }; 2924B990E35D3B51AA245978 /* juce_MessageListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MessageListener.h; path = ../../JuceLibraryCode/modules/juce_events/messages/juce_MessageListener.h; sourceTree = SOURCE_ROOT; }; 29381F22B8FDF48C3EAC3A9F /* juce_OpenGLPixelFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_OpenGLPixelFormat.cpp; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp; sourceTree = SOURCE_ROOT; }; - 29D7893C278FFE00782637B6 /* Bessel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Bessel.h; path = ../../Source/Dsp/Bessel.h; sourceTree = SOURCE_ROOT; }; - 29FD7B383C5DDACAA7B8DFD3 /* MergerEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MergerEditor.cpp; path = ../../Source/Processors/Editors/MergerEditor.cpp; sourceTree = SOURCE_ROOT; }; 2A3230DEAAC86A9090950703 /* juce_Path.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Path.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Path.cpp; sourceTree = SOURCE_ROOT; }; 2AB1CC4252DB09507ED31482 /* juce_Application.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Application.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/application/juce_Application.cpp; sourceTree = SOURCE_ROOT; }; 2AE12F85965B8BE4A0E12F67 /* juce_PropertiesFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PropertiesFile.h; path = ../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_PropertiesFile.h; sourceTree = SOURCE_ROOT; }; 2B134713E91426120A994CB7 /* juce_Random.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Random.cpp; path = ../../JuceLibraryCode/modules/juce_core/maths/juce_Random.cpp; sourceTree = SOURCE_ROOT; }; 2B19F2DE42A91F56C2380F9A /* juce_Expression.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Expression.cpp; path = ../../JuceLibraryCode/modules/juce_core/maths/juce_Expression.cpp; sourceTree = SOURCE_ROOT; }; - 2B93450006102A0093F5EACB /* Design.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Design.cpp; path = ../../Source/Dsp/Design.cpp; sourceTree = SOURCE_ROOT; }; 2BC005B37A0FB3179C2F3AC7 /* juce_CoreAudioFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CoreAudioFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.h; sourceTree = SOURCE_ROOT; }; - 2C4730CAFED4F6292B575318 /* Splitter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Splitter.cpp; path = ../../Source/Processors/Utilities/Splitter.cpp; sourceTree = SOURCE_ROOT; }; 2C89EC72FF6A7118EF459DC3 /* Main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = SOURCE_ROOT; }; 2D1BF69121265C83C7937EB6 /* juce_AudioIODevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioIODevice.h; path = ../../JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODevice.h; sourceTree = SOURCE_ROOT; }; 2D20F49E12A7D313049E0258 /* juce_ScopedWriteLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScopedWriteLock.h; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_ScopedWriteLock.h; sourceTree = SOURCE_ROOT; }; 2D2BAC4320470CF68743F58E /* rhd2000evalboard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = rhd2000evalboard.cpp; path = "../../Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.cpp"; sourceTree = SOURCE_ROOT; }; - 2D41C43686CDE35E86A389D7 /* WiFiOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WiFiOutput.cpp; path = ../../Source/Processors/WiFiOutput.cpp; sourceTree = SOURCE_ROOT; }; 2D577016FEEE23DD5703C924 /* juce_DialogWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DialogWindow.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_DialogWindow.cpp; sourceTree = SOURCE_ROOT; }; 2DA0032B6DF10345C4842BF5 /* juce_CharacterFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharacterFunctions.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_CharacterFunctions.h; sourceTree = SOURCE_ROOT; }; + 2F0C721AB2973FAD23C7F47B /* SpikeDisplayEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayEditor.cpp; path = ../../Source/Processors/SpikeDisplayNode/SpikeDisplayEditor.cpp; sourceTree = SOURCE_ROOT; }; 2F2EDBE0623561191234AF21 /* juce_LAMEEncoderAudioFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LAMEEncoderAudioFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp; sourceTree = SOURCE_ROOT; }; 2F8252D3FF527D6559B12615 /* juce_LowLevelGraphicsSoftwareRenderer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LowLevelGraphicsSoftwareRenderer.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp; sourceTree = SOURCE_ROOT; }; 2F9BB379BCFCFE0D88CC0408 /* juce_AudioProcessorGraph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioProcessorGraph.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h; sourceTree = SOURCE_ROOT; }; 2FE6DAFB634FF3C20F1D6FD7 /* juce_CaretComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CaretComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_CaretComponent.h; sourceTree = SOURCE_ROOT; }; 2FF422D0633A28558D0227EC /* juce_ComponentBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentBuilder.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBuilder.h; sourceTree = SOURCE_ROOT; }; 301783FC4E3B19CA3C0AC85B /* juce_LowLevelGraphicsSoftwareRenderer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LowLevelGraphicsSoftwareRenderer.h; path = ../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h; sourceTree = SOURCE_ROOT; }; - 3063CF211ABB734A9FD452EC /* Custom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Custom.h; path = ../../Source/Dsp/Custom.h; sourceTree = SOURCE_ROOT; }; - 3067867C8C0F6CF6F086A6FC /* FileReaderEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FileReaderEditor.h; path = ../../Source/Processors/Editors/FileReaderEditor.h; sourceTree = SOURCE_ROOT; }; 308F614D30DCB9AE3767C928 /* ofSerial.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ofSerial.cpp; path = ../../Source/Processors/Serial/ofSerial.cpp; sourceTree = SOURCE_ROOT; }; 313970BBDAAA4EDC8B322F3A /* juce_ComponentMovementWatcher.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentMovementWatcher.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp; sourceTree = SOURCE_ROOT; }; 314955FB1E6DD74C71EB8907 /* juce_AudioFormatReaderSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioFormatReaderSource.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReaderSource.h; sourceTree = SOURCE_ROOT; }; 316FB94579DA666A388F429A /* juce_WildcardFileFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WildcardFileFilter.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.h; sourceTree = SOURCE_ROOT; }; 31A3925602D128195100B74D /* juce_ApplicationProperties.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ApplicationProperties.cpp; path = ../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp; sourceTree = SOURCE_ROOT; }; 31BE5E435604D33173940048 /* juce_ToggleButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ToggleButton.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.cpp; sourceTree = SOURCE_ROOT; }; + 31FB49244DF85E2ACCFBDF2B /* PhaseDetectorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PhaseDetectorEditor.h; path = ../../Source/Processors/PhaseDetector/PhaseDetectorEditor.h; sourceTree = SOURCE_ROOT; }; 31FDA03EF1B527B336FA6263 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_events/juce_module_info; sourceTree = SOURCE_ROOT; }; + 326F8386BCD4E4189D0CC00F /* SourceNodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SourceNodeEditor.cpp; path = ../../Source/Processors/SourceNode/SourceNodeEditor.cpp; sourceTree = SOURCE_ROOT; }; 32976762B1DB850DB65B9504 /* juce_FileInputSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileInputSource.cpp; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_FileInputSource.cpp; sourceTree = SOURCE_ROOT; }; 32A1325430309CF4114C9618 /* juce_GenericAudioProcessorEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GenericAudioProcessorEditor.cpp; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp; sourceTree = SOURCE_ROOT; }; 32B658D7A44849A6F640AF37 /* miso-bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = "miso-bold.ttf"; path = "../../Resources/Fonts/miso-bold.ttf"; sourceTree = SOURCE_ROOT; }; 32CEF6C84CD06B18035B035C /* RadioButtons_selected-05.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-05.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-05.png"; sourceTree = SOURCE_ROOT; }; 32D568631762765C07D4BF0D /* juce_NSViewComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NSViewComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/embedding/juce_NSViewComponent.h; sourceTree = SOURCE_ROOT; }; 33A69BDDCFCD4A4DC14A9961 /* juce_KeyPress.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_KeyPress.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyPress.cpp; sourceTree = SOURCE_ROOT; }; + 34834859523571912C55AC94 /* FileReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FileReader.cpp; path = ../../Source/Processors/FileReader/FileReader.cpp; sourceTree = SOURCE_ROOT; }; 349C9FCEDC32E73DCB7AE806 /* juce_WindowsRegistry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WindowsRegistry.h; path = ../../JuceLibraryCode/modules/juce_core/misc/juce_WindowsRegistry.h; sourceTree = SOURCE_ROOT; }; + 34CF4D00D785338941AB9590 /* SpikeDisplayEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayEditor.h; path = ../../Source/Processors/SpikeDisplayNode/SpikeDisplayEditor.h; sourceTree = SOURCE_ROOT; }; 353937A4E68C8C6916C6D1F9 /* juce_FileBrowserComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileBrowserComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; 35AEAE0CC0B546625E163B9B /* sine_wave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = sine_wave.png; path = ../../Resources/Images/Icons/sine_wave.png; sourceTree = SOURCE_ROOT; }; + 35BB20110BAC6346AA605BF9 /* PhaseDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PhaseDetector.h; path = ../../Source/Processors/PhaseDetector/PhaseDetector.h; sourceTree = SOURCE_ROOT; }; 35C0963BAB9A82F12CDC9F76 /* juce_NamedValueSet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_NamedValueSet.cpp; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_NamedValueSet.cpp; sourceTree = SOURCE_ROOT; }; - 361D8C54B3E54766CBC48046 /* Biquad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Biquad.h; path = ../../Source/Dsp/Biquad.h; sourceTree = SOURCE_ROOT; }; 361E3A46C9BFAD1530593487 /* juce_PopupMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PopupMenu.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_PopupMenu.h; sourceTree = SOURCE_ROOT; }; + 362898B655ABFFA23A69BBFA /* ParameterEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ParameterEditor.h; path = ../../Source/Processors/Parameter/ParameterEditor.h; sourceTree = SOURCE_ROOT; }; + 36332333DBF8363163F454E6 /* HDF5Recording.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HDF5Recording.cpp; path = ../../Source/Processors/RecordNode/HDF5Recording.cpp; sourceTree = SOURCE_ROOT; }; 3663C981D28BF165C1B601A7 /* juce_OptionalScopedPointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OptionalScopedPointer.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_OptionalScopedPointer.h; sourceTree = SOURCE_ROOT; }; 36A9736F04AAA2F8E9D711BB /* juce_SpinLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SpinLock.h; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_SpinLock.h; sourceTree = SOURCE_ROOT; }; + 3734FF118787377E4C8741D1 /* WiFiOutputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WiFiOutputEditor.cpp; path = ../../Source/Processors/WiFiOutput/WiFiOutputEditor.cpp; sourceTree = SOURCE_ROOT; }; 3753B3B311AE0A9F4CC5AD40 /* ofArduino.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ofArduino.cpp; path = ../../Source/Processors/Serial/ofArduino.cpp; sourceTree = SOURCE_ROOT; }; 3774BBCA6CB133D9A854CF71 /* CustomLookAndFeel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CustomLookAndFeel.cpp; path = ../../Source/UI/CustomLookAndFeel.cpp; sourceTree = SOURCE_ROOT; }; 381F5DC605AE69088004DF80 /* PipelineB-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "PipelineB-01.png"; path = "../../Resources/Images/Buttons/PipelineB-01.png"; sourceTree = SOURCE_ROOT; }; - 38313692308D501E4CADF1D5 /* Layout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Layout.h; path = ../../Source/Dsp/Layout.h; sourceTree = SOURCE_ROOT; }; + 3846F3FA0FC28CE322073E94 /* Utilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Utilities.h; path = ../../Source/Processors/Dsp/Utilities.h; sourceTree = SOURCE_ROOT; }; + 385F66531BAB16BA754E901E /* SplitterEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SplitterEditor.h; path = ../../Source/Processors/Splitter/SplitterEditor.h; sourceTree = SOURCE_ROOT; }; 38711221C089A16CC29E93D2 /* juce_ActionListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ActionListener.h; path = ../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionListener.h; sourceTree = SOURCE_ROOT; }; + 388D5CAFAE66CCCB8ADA594C /* Filter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Filter.cpp; path = ../../Source/Processors/Dsp/Filter.cpp; sourceTree = SOURCE_ROOT; }; 38A9627672C2562DBE257A05 /* cpmono-extralight-serialized */ = {isa = PBXFileReference; lastKnownFileType = file; name = "cpmono-extralight-serialized"; path = "../../Resources/Fonts/cpmono-extralight-serialized"; sourceTree = SOURCE_ROOT; }; 38B5A37F33AE3FB2014BF095 /* juce_StringArray.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_StringArray.cpp; path = ../../JuceLibraryCode/modules/juce_core/text/juce_StringArray.cpp; sourceTree = SOURCE_ROOT; }; + 38E1C53CF5BB38247BCAA909 /* SignalGeneratorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SignalGeneratorEditor.h; path = ../../Source/Processors/SignalGenerator/SignalGeneratorEditor.h; sourceTree = SOURCE_ROOT; }; 38E493BFC36AC80B1CDAAF35 /* juce_TreeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TreeView.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TreeView.h; sourceTree = SOURCE_ROOT; }; 390856DF83DAC70909D5B397 /* juce_Button.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Button.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_Button.h; sourceTree = SOURCE_ROOT; }; 390EA3109658E8C51EFC8F61 /* juce_PluginDirectoryScanner.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PluginDirectoryScanner.cpp; path = ../../JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp; sourceTree = SOURCE_ROOT; }; - 392408C1943AC6234BAAC743 /* Elliptic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Elliptic.cpp; path = ../../Source/Dsp/Elliptic.cpp; sourceTree = SOURCE_ROOT; }; 393801D2B91773D376D874B0 /* juce_ImageButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageButton.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ImageButton.h; sourceTree = SOURCE_ROOT; }; 39422C7D01635DD9C00B5136 /* juce_mac_CoreMidi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_mac_CoreMidi.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp; sourceTree = SOURCE_ROOT; }; - 39464D2A22940DA2DDCCCFC6 /* EventDetector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventDetector.cpp; path = ../../Source/Processors/EventDetector.cpp; sourceTree = SOURCE_ROOT; }; - 39D2C460FE587C5F564495A0 /* SerialInputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SerialInputEditor.h; path = ../../Source/Processors/Editors/SerialInputEditor.h; sourceTree = SOURCE_ROOT; }; + 398BF0B03B719107E6093F98 /* EngineConfigWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EngineConfigWindow.h; path = ../../Source/Processors/RecordNode/EngineConfigWindow.h; sourceTree = SOURCE_ROOT; }; 39F287BE4C0B4F3BD4A949FD /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; 3A2C762575D9728B1F822ED3 /* juce_AsyncUpdater.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AsyncUpdater.cpp; path = ../../JuceLibraryCode/modules/juce_events/broadcasters/juce_AsyncUpdater.cpp; sourceTree = SOURCE_ROOT; }; 3A6E9EC3DA618EBA06B9DEEB /* juce_AudioSubsectionReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioSubsectionReader.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioSubsectionReader.h; sourceTree = SOURCE_ROOT; }; @@ -402,7 +417,6 @@ 3A71F2C959CA7DD3C33DC411 /* juce_mac_CarbonViewWrapperComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_mac_CarbonViewWrapperComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h; sourceTree = SOURCE_ROOT; }; 3A9826A8C3B668BCC760BEB7 /* juce_gui_basics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_gui_basics.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h; sourceTree = SOURCE_ROOT; }; 3AC9B61C10692BBA96D2F775 /* juce_OpenGL_android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGL_android.h; path = ../../JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_android.h; sourceTree = SOURCE_ROOT; }; - 3AE038CACE48AF85C4FB1ED5 /* GenericProcessor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GenericProcessor.cpp; path = ../../Source/Processors/GenericProcessor.cpp; sourceTree = SOURCE_ROOT; }; 3AFF1BE2EC512169120121CF /* juce_IPAddress.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_IPAddress.h; path = ../../JuceLibraryCode/modules/juce_core/network/juce_IPAddress.h; sourceTree = SOURCE_ROOT; }; 3B307527FC3241258EA68519 /* juce_ToneGeneratorAudioSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ToneGeneratorAudioSource.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.h; sourceTree = SOURCE_ROOT; }; 3BC3A723444252E177C1B1BD /* juce_AudioFormatWriter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioFormatWriter.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatWriter.h; sourceTree = SOURCE_ROOT; }; @@ -411,35 +425,40 @@ 3C1E0B87DA3E9AC60D2894F7 /* juce_TableListBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TableListBox.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableListBox.h; sourceTree = SOURCE_ROOT; }; 3C92F249799E7CBF41FABEA0 /* juce_mac_WebBrowserComponent.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_WebBrowserComponent.mm; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm; sourceTree = SOURCE_ROOT; }; 3D100F6FDB04756402F3BCC9 /* juce_mac_CoreGraphicsContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_mac_CoreGraphicsContext.h; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h; sourceTree = SOURCE_ROOT; }; + 3D782D1796455167CE41CCAB /* Design.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Design.h; path = ../../Source/Processors/Dsp/Design.h; sourceTree = SOURCE_ROOT; }; 3DA70F9AAA904543B519874B /* juce_AudioPluginInstance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioPluginInstance.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h; sourceTree = SOURCE_ROOT; }; 3E0942A2D72F50FDE27C14AE /* juce_StretchableObjectResizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_StretchableObjectResizer.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp; sourceTree = SOURCE_ROOT; }; 3E22E947444B5849011B6C4E /* juce_MouseInputSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseInputSource.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp; sourceTree = SOURCE_ROOT; }; 3E5E427D405905C53A37283D /* juce_SystemAudioVolume.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SystemAudioVolume.h; path = ../../JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h; sourceTree = SOURCE_ROOT; }; - 3EAE25787DBFBA8EFC42A277 /* RecordNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RecordNode.h; path = ../../Source/Processors/RecordNode.h; sourceTree = SOURCE_ROOT; }; 3EAF57CE45DBACE2F88DA4C5 /* juce_FileChooser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileChooser.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp; sourceTree = SOURCE_ROOT; }; 3EE92345839A4E5F608D82AC /* juce_Sampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Sampler.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/sampler/juce_Sampler.h; sourceTree = SOURCE_ROOT; }; 3F56A025C4D83EBDB66E3676 /* juce_AppleRemote.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AppleRemote.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_AppleRemote.h; sourceTree = SOURCE_ROOT; }; - 3F69480D6145C77992FA59BA /* RootFinder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RootFinder.cpp; path = ../../Source/Dsp/RootFinder.cpp; sourceTree = SOURCE_ROOT; }; - 3F6C67E29CDEDF2EF61C054F /* Param.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Param.cpp; path = ../../Source/Dsp/Param.cpp; sourceTree = SOURCE_ROOT; }; 3F8DFB0DB8B82F0C2CFBCA05 /* juce_BufferingAudioSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BufferingAudioSource.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp; sourceTree = SOURCE_ROOT; }; 3FA24B406E4A9F9F54421C6A /* juce_ChannelRemappingAudioSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChannelRemappingAudioSource.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h; sourceTree = SOURCE_ROOT; }; 3FB80C5CFD953986778DCBA2 /* juce_linux_Files.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Files.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_linux_Files.cpp; sourceTree = SOURCE_ROOT; }; 3FC794735FA8DDA39A62224B /* UIComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = UIComponent.h; path = ../../Source/UI/UIComponent.h; sourceTree = SOURCE_ROOT; }; + 3FE8C41480F07050CC21635F /* PhaseDetectorEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PhaseDetectorEditor.cpp; path = ../../Source/Processors/PhaseDetector/PhaseDetectorEditor.cpp; sourceTree = SOURCE_ROOT; }; 3FFC2A3429D8B1D957D18CA7 /* MergerB-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "MergerB-02.png"; path = "../../Resources/Images/Buttons/MergerB-02.png"; sourceTree = SOURCE_ROOT; }; 3FFD5E5D5C1D8B48DBBB9D18 /* juce_Result.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Result.cpp; path = ../../JuceLibraryCode/modules/juce_core/misc/juce_Result.cpp; sourceTree = SOURCE_ROOT; }; 402BC572EE3E8EC418946CE0 /* juce_AudioTransportSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioTransportSource.h; path = ../../JuceLibraryCode/modules/juce_audio_devices/sources/juce_AudioTransportSource.h; sourceTree = SOURCE_ROOT; }; 405298E6CE1C80EC7CC43A87 /* juce_FileTreeComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileTreeComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h; sourceTree = SOURCE_ROOT; }; 40C22F3CD61DDB9C7B3DCCA6 /* juce_KeyListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_KeyListener.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyListener.h; sourceTree = SOURCE_ROOT; }; + 40F90FEFBD575E8A67DF68EB /* Param.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Param.cpp; path = ../../Source/Processors/Dsp/Param.cpp; sourceTree = SOURCE_ROOT; }; 4133FE7830C52BBA035D82B8 /* juce_TimeSliceThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TimeSliceThread.cpp; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_TimeSliceThread.cpp; sourceTree = SOURCE_ROOT; }; + 414969AEF838522C9FE1B807 /* FilterEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterEditor.cpp; path = ../../Source/Processors/FilterNode/FilterEditor.cpp; sourceTree = SOURCE_ROOT; }; 414D8E6E4EE98E66C2583A50 /* juce_TextPropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TextPropertyComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; 416B99B14B44CB16B725C4B2 /* juce_StretchableObjectResizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StretchableObjectResizer.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h; sourceTree = SOURCE_ROOT; }; 41AF61914A96159E9EA194B0 /* juce_linux_Clipboard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Clipboard.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_Clipboard.cpp; sourceTree = SOURCE_ROOT; }; + 41E88094E8D929866A6DCA9A /* AudioResamplingNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioResamplingNode.cpp; path = ../../Source/Processors/AudioResamplingNode/AudioResamplingNode.cpp; sourceTree = SOURCE_ROOT; }; 420843E39C285B620B220C1D /* juce_LeakedObjectDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LeakedObjectDetector.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_LeakedObjectDetector.h; sourceTree = SOURCE_ROOT; }; 420B0E95F1300ABFDC125DBF /* AccessClass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AccessClass.cpp; path = ../../Source/AccessClass.cpp; sourceTree = SOURCE_ROOT; }; 42BF0530EADF336E58D39CD3 /* juce_FloatVectorOperations.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FloatVectorOperations.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h; sourceTree = SOURCE_ROOT; }; 43420911407CC35CE2A02B38 /* juce_StretchableLayoutManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_StretchableLayoutManager.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp; sourceTree = SOURCE_ROOT; }; 434E153E6C8337C1E4A2709A /* juce_ButtonPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ButtonPropertyComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h; sourceTree = SOURCE_ROOT; }; + 442F01DC974E1EAC57450906 /* PoleFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PoleFilter.h; path = ../../Source/Processors/Dsp/PoleFilter.h; sourceTree = SOURCE_ROOT; }; 4434939E139A45962C8CFB4C /* juce_DrawableShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableShape.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableShape.cpp; sourceTree = SOURCE_ROOT; }; + 4448875C40EAB061B2F8A289 /* FPGAOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FPGAOutput.cpp; path = ../../Source/Processors/FPGAOutput/FPGAOutput.cpp; sourceTree = SOURCE_ROOT; }; + 449B26D1265BB91B331EFF84 /* HDF5FileFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HDF5FileFormat.h; path = ../../Source/Processors/RecordNode/HDF5FileFormat.h; sourceTree = SOURCE_ROOT; }; 44E04E5F584A8BFAD062A09D /* juce_ShapeButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ShapeButton.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ShapeButton.h; sourceTree = SOURCE_ROOT; }; 45258533F9F65AC96D3080B3 /* juce_MultiTouchMapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MultiTouchMapper.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_MultiTouchMapper.h; sourceTree = SOURCE_ROOT; }; 4540694F9744C9F4D29149CE /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_opengl/juce_module_info; sourceTree = SOURCE_ROOT; }; @@ -448,11 +467,9 @@ 458A112D564ED066211FD482 /* juce_ToneGeneratorAudioSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ToneGeneratorAudioSource.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp; sourceTree = SOURCE_ROOT; }; 45A66E543B62A2C32AB3BA23 /* juce_AudioDeviceSelectorComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioDeviceSelectorComponent.h; path = ../../JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h; sourceTree = SOURCE_ROOT; }; 45D440B69BDB210B17CD424B /* juce_ImageComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ImageComponent.h; sourceTree = SOURCE_ROOT; }; - 45D78C8EF660EECE64BAA33F /* RHD2000Editor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RHD2000Editor.cpp; path = ../../Source/Processors/Editors/RHD2000Editor.cpp; sourceTree = SOURCE_ROOT; }; 4608E765A643BC0CB2C1BB02 /* juce_CriticalSection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CriticalSection.h; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_CriticalSection.h; sourceTree = SOURCE_ROOT; }; 463A302B39C7815EB981CEBD /* juce_Point.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Point.h; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Point.h; sourceTree = SOURCE_ROOT; }; 4650B5724FE3C0608FB07A04 /* juce_TextLayout.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TextLayout.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_TextLayout.cpp; sourceTree = SOURCE_ROOT; }; - 46E3A634686BFEF787229582 /* ParameterEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ParameterEditor.cpp; path = ../../Source/Processors/Editors/ParameterEditor.cpp; sourceTree = SOURCE_ROOT; }; 46EF49B14DF7357A8287D9D8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; }; 47041E3794FA20F67F39AE63 /* juce_ChildProcess.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ChildProcess.cpp; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_ChildProcess.cpp; sourceTree = SOURCE_ROOT; }; 475824F60D47C28C392954A7 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_audio_processors/juce_module_info; sourceTree = SOURCE_ROOT; }; @@ -462,53 +479,55 @@ 47EE021D6C891095140ED7A9 /* juce_ios_UIViewComponentPeer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_ios_UIViewComponentPeer.mm; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm; sourceTree = SOURCE_ROOT; }; 482A60A44EE6CB84FCB9DC88 /* juce_AudioThumbnailBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioThumbnailBase.h; path = ../../JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h; sourceTree = SOURCE_ROOT; }; 483ABD5C1CF789943AB4AFB6 /* juce_ComponentPeer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentPeer.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ComponentPeer.h; sourceTree = SOURCE_ROOT; }; - 4867923F31CC3EDC9B1A5BE5 /* Merger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Merger.cpp; path = ../../Source/Processors/Utilities/Merger.cpp; sourceTree = SOURCE_ROOT; }; 488D1B00C9E5FE4DAB035EDF /* juce_cryptography.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_cryptography.mm; path = ../../JuceLibraryCode/modules/juce_cryptography/juce_cryptography.mm; sourceTree = SOURCE_ROOT; }; 48E12736F471C43C959AD15C /* PulsePal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PulsePal.cpp; path = ../../Source/Processors/Serial/PulsePal.cpp; sourceTree = SOURCE_ROOT; }; 48E4FA55FD4440AF44EEA437 /* juce_linux_FileChooser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_FileChooser.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp; sourceTree = SOURCE_ROOT; }; 48F6281AB92B232E5187D00C /* SignalChainManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SignalChainManager.h; path = ../../Source/UI/SignalChainManager.h; sourceTree = SOURCE_ROOT; }; - 4939A8B8300394AAD0926C0B /* Legendre.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Legendre.h; path = ../../Source/Dsp/Legendre.h; sourceTree = SOURCE_ROOT; }; 496180D5D96088CBB59035B1 /* juce_DrawableShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableShape.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableShape.h; sourceTree = SOURCE_ROOT; }; 4978EF4C5F506F3289BC0D99 /* juce_SubregionStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SubregionStream.h; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_SubregionStream.h; sourceTree = SOURCE_ROOT; }; 499A12199A8A8C5AEDAA47E4 /* juce_FilenameComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FilenameComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h; sourceTree = SOURCE_ROOT; }; 49D837FD08100AF0DB797DB4 /* juce_SparseSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SparseSet.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_SparseSet.h; sourceTree = SOURCE_ROOT; }; - 49FA151B1837E543D18858EB /* FilterEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterEditor.h; path = ../../Source/Processors/Editors/FilterEditor.h; sourceTree = SOURCE_ROOT; }; 4A28A492852AEFBF508C1FC1 /* juce_RelativePointPath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativePointPath.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePointPath.h; sourceTree = SOURCE_ROOT; }; 4A7695E93CE32F4E95042FCB /* juce_video.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_video.mm; path = ../../JuceLibraryCode/modules/juce_video/juce_video.mm; sourceTree = SOURCE_ROOT; }; - 4A94E809624F99387E600399 /* LfpDisplayCanvas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayCanvas.cpp; path = ../../Source/Processors/Visualization/LfpDisplayCanvas.cpp; sourceTree = SOURCE_ROOT; }; 4AD95B75DC581E32650FEDF6 /* juce_IIRFilterAudioSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_IIRFilterAudioSource.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp; sourceTree = SOURCE_ROOT; }; 4AE1520FF569371665090B39 /* juce_AiffAudioFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AiffAudioFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp; sourceTree = SOURCE_ROOT; }; 4AE36D25675E32A897F97BFA /* juce_TabbedComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TabbedComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedComponent.cpp; sourceTree = SOURCE_ROOT; }; - 4B0097003751A59A11FA8C5B /* FileReaderEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FileReaderEditor.cpp; path = ../../Source/Processors/Editors/FileReaderEditor.cpp; sourceTree = SOURCE_ROOT; }; 4B3DBFE485F45E62C53A90B8 /* juce_MenuBarModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MenuBarModel.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarModel.h; sourceTree = SOURCE_ROOT; }; + 4B58436E2B47FC6BB349129F /* ChebyshevII.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChebyshevII.cpp; path = ../../Source/Processors/Dsp/ChebyshevII.cpp; sourceTree = SOURCE_ROOT; }; 4B5998D72503BD73D28E828A /* juce_osx_MessageQueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_osx_MessageQueue.h; path = ../../JuceLibraryCode/modules/juce_events/native/juce_osx_MessageQueue.h; sourceTree = SOURCE_ROOT; }; 4B74A7F0FDCE3E1706E5B320 /* juce_ApplicationCommandTarget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ApplicationCommandTarget.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp; sourceTree = SOURCE_ROOT; }; 4BB38A2CD55BF23C7C3E3387 /* juce_ToolbarItemPalette.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ToolbarItemPalette.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp; sourceTree = SOURCE_ROOT; }; 4BB75F40F2BA3278C7D98909 /* juce_VST3Headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_VST3Headers.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VST3Headers.h; sourceTree = SOURCE_ROOT; }; + 4C01F867D43DF7B1D98B887E /* SerialInput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SerialInput.cpp; path = ../../Source/Processors/SerialInput/SerialInput.cpp; sourceTree = SOURCE_ROOT; }; 4C3EA47E012B2D63ADE599DD /* juce_PathStrokeType.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PathStrokeType.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathStrokeType.cpp; sourceTree = SOURCE_ROOT; }; 4C4E2282C145D13C86CB23FA /* juce_OpenGLHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGLHelpers.h; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLHelpers.h; sourceTree = SOURCE_ROOT; }; 4C81E05B39376F54775A1027 /* juce_Colour.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Colour.h; path = ../../JuceLibraryCode/modules/juce_graphics/colour/juce_Colour.h; sourceTree = SOURCE_ROOT; }; 4CA9556E9C18029A47F34C7C /* juce_LAMEEncoderAudioFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LAMEEncoderAudioFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h; sourceTree = SOURCE_ROOT; }; + 4CB63EE1552BBFDEB1DADB0A /* ProcessorGraph.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ProcessorGraph.cpp; path = ../../Source/Processors/ProcessorGraph/ProcessorGraph.cpp; sourceTree = SOURCE_ROOT; }; 4CCA36B2A6C4821E493E74D2 /* juce_AudioFormatReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioFormatReader.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReader.cpp; sourceTree = SOURCE_ROOT; }; 4CF403118BBAAD5B6763542A /* juce_OpenGLContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_OpenGLContext.cpp; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLContext.cpp; sourceTree = SOURCE_ROOT; }; 4D67518E9223C1C19BD4EF2E /* juce_linux_Threads.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Threads.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_linux_Threads.cpp; sourceTree = SOURCE_ROOT; }; 4D84A3A970FB67566A1E5B0B /* juce_KnownPluginList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_KnownPluginList.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/scanning/juce_KnownPluginList.h; sourceTree = SOURCE_ROOT; }; 4D8F94CA49DB11E07918B4C9 /* juce_UnitTest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_UnitTest.cpp; path = ../../JuceLibraryCode/modules/juce_core/unit_tests/juce_UnitTest.cpp; sourceTree = SOURCE_ROOT; }; 4E520E7960CC5098C2352E70 /* juce_MouseCursor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseCursor.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseCursor.h; sourceTree = SOURCE_ROOT; }; - 4E6EE225098D32E7D5DE60B2 /* SpikeDisplayCanvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayCanvas.h; path = ../../Source/Processors/Visualization/SpikeDisplayCanvas.h; sourceTree = SOURCE_ROOT; }; 4E71B355F2BABAF69CC4114D /* juce_ConcertinaPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ConcertinaPanel.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h; sourceTree = SOURCE_ROOT; }; 4EC254B133A7AAE377B9B3AE /* juce_LassoComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LassoComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_LassoComponent.h; sourceTree = SOURCE_ROOT; }; + 4F10D1D2F5ED2E7F9A997D4C /* PhaseDetector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PhaseDetector.cpp; path = ../../Source/Processors/PhaseDetector/PhaseDetector.cpp; sourceTree = SOURCE_ROOT; }; 4F31D61C0C2AB3472C6C1429 /* juce_MACAddress.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MACAddress.cpp; path = ../../JuceLibraryCode/modules/juce_core/network/juce_MACAddress.cpp; sourceTree = SOURCE_ROOT; }; 4F4234DC14D3689C22655D0C /* juce_ComponentListener.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentListener.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/components/juce_ComponentListener.cpp; sourceTree = SOURCE_ROOT; }; 4F4E8E3B32DB7A91B41C9FFA /* MergerB-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "MergerB-01.png"; path = "../../Resources/Images/Buttons/MergerB-01.png"; sourceTree = SOURCE_ROOT; }; + 4F5D51C5F8174E3824EF8B42 /* Parameter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Parameter.cpp; path = ../../Source/Processors/Parameter/Parameter.cpp; sourceTree = SOURCE_ROOT; }; 4FD13AA663EEE7CC2F83033D /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; 50DB7E5C152DDD03F2FA4C2D /* BebasNeue.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = BebasNeue.otf; path = ../../Resources/Fonts/BebasNeue.otf; sourceTree = SOURCE_ROOT; }; 50DD8D693741DD18106C0BA7 /* juce_ComponentListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentListener.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/components/juce_ComponentListener.h; sourceTree = SOURCE_ROOT; }; 510ACDAD798813D7FC110197 /* juce_TabbedComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TabbedComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedComponent.h; sourceTree = SOURCE_ROOT; }; 511C443A0A806706A772E981 /* juce_Primes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Primes.cpp; path = ../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_Primes.cpp; sourceTree = SOURCE_ROOT; }; + 513D20023796491A24EC58A7 /* WiFiOutputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WiFiOutputEditor.h; path = ../../Source/Processors/WiFiOutput/WiFiOutputEditor.h; sourceTree = SOURCE_ROOT; }; 515213CC3271E8DEA8125D33 /* juce_DynamicLibrary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DynamicLibrary.h; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_DynamicLibrary.h; sourceTree = SOURCE_ROOT; }; 515C4C8AC20EA25F3DEF2336 /* juce_LuaCodeTokeniser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LuaCodeTokeniser.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h; sourceTree = SOURCE_ROOT; }; 51926BEEA63BF141D93A5B36 /* juce_RelativePoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativePoint.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePoint.cpp; sourceTree = SOURCE_ROOT; }; + 51BB55D1CE1667CD340E8358 /* EventNodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventNodeEditor.h; path = ../../Source/Processors/EventNode/EventNodeEditor.h; sourceTree = SOURCE_ROOT; }; + 52070E1171C046E4949ADFE5 /* Elliptic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Elliptic.cpp; path = ../../Source/Processors/Dsp/Elliptic.cpp; sourceTree = SOURCE_ROOT; }; 5265AD5F97C9E813E14937A7 /* juce_RectanglePlacement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RectanglePlacement.h; path = ../../JuceLibraryCode/modules/juce_graphics/placement/juce_RectanglePlacement.h; sourceTree = SOURCE_ROOT; }; 5284E69CC601457D5C7C1063 /* juce_linux_SystemTrayIcon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_SystemTrayIcon.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp; sourceTree = SOURCE_ROOT; }; 52A41F90D055C90C902CC9CD /* juce_LookAndFeel_V2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LookAndFeel_V2.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp; sourceTree = SOURCE_ROOT; }; @@ -517,21 +536,24 @@ 5343D594AA7D444A7C6AD924 /* juce_GZIPDecompressorInputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GZIPDecompressorInputStream.h; path = ../../JuceLibraryCode/modules/juce_core/zip/juce_GZIPDecompressorInputStream.h; sourceTree = SOURCE_ROOT; }; 5379FC603780F30A2F05FE78 /* juce_AsyncUpdater.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AsyncUpdater.h; path = ../../JuceLibraryCode/modules/juce_events/broadcasters/juce_AsyncUpdater.h; sourceTree = SOURCE_ROOT; }; 53C8A2696FE4389E4AB4441C /* juce_Slider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Slider.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Slider.cpp; sourceTree = SOURCE_ROOT; }; + 540CD9ED0C719DB1DAECA37E /* WiFiOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WiFiOutput.h; path = ../../Source/Processors/WiFiOutput/WiFiOutput.h; sourceTree = SOURCE_ROOT; }; 54339ADDCB6F8E9E7721A986 /* juce_android_Windowing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Windowing.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_android_Windowing.cpp; sourceTree = SOURCE_ROOT; }; - 5522973FA48A13C6BED293FE /* SignalGenerator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SignalGenerator.cpp; path = ../../Source/Processors/SignalGenerator.cpp; sourceTree = SOURCE_ROOT; }; - 555D34D0CD8776EE5996CC3A /* ProcessorGraph.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ProcessorGraph.cpp; path = ../../Source/Processors/ProcessorGraph.cpp; sourceTree = SOURCE_ROOT; }; + 54B7796F6DCF5531789CCF43 /* Types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Types.h; path = ../../Source/Processors/Dsp/Types.h; sourceTree = SOURCE_ROOT; }; 55811E331B55E0547326CF22 /* juce_TopLevelWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TopLevelWindow.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp; sourceTree = SOURCE_ROOT; }; 558E925DAC57ADF8810559AC /* juce_linux_Windowing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Windowing.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_Windowing.cpp; sourceTree = SOURCE_ROOT; }; + 55DFE30C901793E56A7E3A22 /* ResamplingNodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ResamplingNodeEditor.cpp; path = ../../Source/Processors/ResamplingNode/ResamplingNodeEditor.cpp; sourceTree = SOURCE_ROOT; }; 55EBFCA56B915C8CD043365C /* juce_win32_DirectWriteTypeLayout.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_DirectWriteTypeLayout.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp; sourceTree = SOURCE_ROOT; }; 55F7467B96E236DD558228C9 /* juce_CharPointer_UTF8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharPointer_UTF8.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF8.h; sourceTree = SOURCE_ROOT; }; 560A28C1966B1817873CF764 /* juce_MidiMessageSequence.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MidiMessageSequence.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp; sourceTree = SOURCE_ROOT; }; 56169D835A3E3029D6E3904C /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = System/Library/Frameworks/QuickTime.framework; sourceTree = SDKROOT; }; + 56242BB33B53F133914517BD /* RecordControlEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RecordControlEditor.cpp; path = ../../Source/Processors/RecordControl/RecordControlEditor.cpp; sourceTree = SOURCE_ROOT; }; 562E4A50364EEDC3AA2AACB8 /* juce_RelativeTime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeTime.h; path = ../../JuceLibraryCode/modules/juce_core/time/juce_RelativeTime.h; sourceTree = SOURCE_ROOT; }; 563F35B171FAF2540923CE45 /* juce_AudioDataConverters.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioDataConverters.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioDataConverters.cpp; sourceTree = SOURCE_ROOT; }; 564380494D23DB70680FB0B5 /* juce_TreeView.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TreeView.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TreeView.cpp; sourceTree = SOURCE_ROOT; }; - 5654BDD4FBFF01AC3F17FA0D /* ChannelMappingNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChannelMappingNode.cpp; path = ../../Source/Processors/ChannelMappingNode.cpp; sourceTree = SOURCE_ROOT; }; 565EEC8F429ABF5F9A867137 /* juce_MouseEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseEvent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseEvent.cpp; sourceTree = SOURCE_ROOT; }; 56728EC77C65482B9C86FF4D /* juce_audio_utils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_audio_utils.mm; path = ../../JuceLibraryCode/modules/juce_audio_utils/juce_audio_utils.mm; sourceTree = SOURCE_ROOT; }; + 56D5BE8BFA1F07F5EFF1DFE8 /* ChebyshevI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChebyshevI.h; path = ../../Source/Processors/Dsp/ChebyshevI.h; sourceTree = SOURCE_ROOT; }; + 56F810EF10E01535A417B671 /* FileReaderEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FileReaderEditor.cpp; path = ../../Source/Processors/FileReader/FileReaderEditor.cpp; sourceTree = SOURCE_ROOT; }; 570299171BCE863C54FBBA54 /* juce_ConcertinaPanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ConcertinaPanel.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp; sourceTree = SOURCE_ROOT; }; 57941E5B2E1FF6028A68D4A7 /* RadioButtons-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-02.png"; path = "../../Resources/Images/Icons/RadioButtons-02.png"; sourceTree = SOURCE_ROOT; }; 57C6DD2537116B30FB948A08 /* juce_RSAKey.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RSAKey.h; path = ../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_RSAKey.h; sourceTree = SOURCE_ROOT; }; @@ -541,18 +563,16 @@ 581287A24510A9EACEE09CE4 /* juce_DocumentWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DocumentWindow.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_DocumentWindow.h; sourceTree = SOURCE_ROOT; }; 586448E180F8ACBF5A1565B0 /* juce_gui_extra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_gui_extra.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.h; sourceTree = SOURCE_ROOT; }; 586B1E0743FFBE9081A25F4F /* juce_CodeEditorComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CodeEditorComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp; sourceTree = SOURCE_ROOT; }; - 587FCA2485B9C89C2A99C23A /* Filter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Filter.cpp; path = ../../Source/Dsp/Filter.cpp; sourceTree = SOURCE_ROOT; }; 5894D40A0E8FA6E9B3EBF9D9 /* SpikeObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeObject.cpp; path = ../../Source/Processors/Visualization/SpikeObject.cpp; sourceTree = SOURCE_ROOT; }; 58958CC3F750D383261E2FBC /* juce_SliderPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SliderPropertyComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h; sourceTree = SOURCE_ROOT; }; + 589657244185109F68A6B5A2 /* ChannelMappingNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChannelMappingNode.h; path = ../../Source/Processors/ChannelMappingNode/ChannelMappingNode.h; sourceTree = SOURCE_ROOT; }; 5915DB02FB7CA8CEC1BF38A9 /* juce_opengl.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_opengl.mm; path = ../../JuceLibraryCode/modules/juce_opengl/juce_opengl.mm; sourceTree = SOURCE_ROOT; }; 59389DC8664617FD51740F36 /* juce_DirectShowComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DirectShowComponent.h; path = ../../JuceLibraryCode/modules/juce_video/playback/juce_DirectShowComponent.h; sourceTree = SOURCE_ROOT; }; 5962848AA3DD93A29EFF5B94 /* juce_data_structures.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_data_structures.h; path = ../../JuceLibraryCode/modules/juce_data_structures/juce_data_structures.h; sourceTree = SOURCE_ROOT; }; 5A746CDDE80FEA2E45B5BA66 /* juce_mac_AppleRemote.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_AppleRemote.mm; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_AppleRemote.mm; sourceTree = SOURCE_ROOT; }; 5A7D81B70480B40EEBC2FF54 /* juce_MessageListener.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MessageListener.cpp; path = ../../JuceLibraryCode/modules/juce_events/messages/juce_MessageListener.cpp; sourceTree = SOURCE_ROOT; }; - 5A8D46BEB81DDF24462E3D92 /* PoleFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PoleFilter.h; path = ../../Source/Dsp/PoleFilter.h; sourceTree = SOURCE_ROOT; }; 5AB3809F029824EE2DE0A798 /* juce_ImageFileFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImageFileFormat.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageFileFormat.cpp; sourceTree = SOURCE_ROOT; }; 5ADFF3180990F786CDC56AB0 /* juce_VST3PluginFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_VST3PluginFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h; sourceTree = SOURCE_ROOT; }; - 5B2A4DD7133CDE5AEC24CC07 /* GenericProcessor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GenericProcessor.h; path = ../../Source/Processors/GenericProcessor.h; sourceTree = SOURCE_ROOT; }; 5B2CDF3CF10A92F6CA45F3DE /* juce_AudioPlayHead.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioPlayHead.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioPlayHead.h; sourceTree = SOURCE_ROOT; }; 5B411F4FCF0F69798C9E4A88 /* juce_ScrollBar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScrollBar.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ScrollBar.h; sourceTree = SOURCE_ROOT; }; 5B6B25AA065FB6CDE7D6C507 /* juce_ApplicationProperties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationProperties.h; path = ../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_ApplicationProperties.h; sourceTree = SOURCE_ROOT; }; @@ -562,32 +582,34 @@ 5C5E4C396CD83C46F58644A2 /* triangle_wave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = triangle_wave.png; path = ../../Resources/Images/Icons/triangle_wave.png; sourceTree = SOURCE_ROOT; }; 5C7EEDD80F88872A87FD561B /* juce_AudioFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormat.cpp; sourceTree = SOURCE_ROOT; }; 5CE99545433261F3B4A46252 /* juce_AudioFormatReaderSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioFormatReaderSource.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp; sourceTree = SOURCE_ROOT; }; + 5CF96A7BBD6C4DE4D059E4A4 /* Legendre.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Legendre.h; path = ../../Source/Processors/Dsp/Legendre.h; sourceTree = SOURCE_ROOT; }; 5D9792840E8050DCC766B368 /* juce_OpenGLRenderer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGLRenderer.h; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLRenderer.h; sourceTree = SOURCE_ROOT; }; 5DB3B3197F8C1E5EE159D6FC /* rhd2000registers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = rhd2000registers.cpp; path = "../../Source/Processors/DataThreads/rhythm-api/rhd2000registers.cpp"; sourceTree = SOURCE_ROOT; }; 5DB6A07B827D62571BB51943 /* juce_Justification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Justification.h; path = ../../JuceLibraryCode/modules/juce_graphics/placement/juce_Justification.h; sourceTree = SOURCE_ROOT; }; 5DC1AF69A773401DB1E8FB32 /* juce_RelativeTime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeTime.cpp; path = ../../JuceLibraryCode/modules/juce_core/time/juce_RelativeTime.cpp; sourceTree = SOURCE_ROOT; }; 5E0F8A60411A03461FD687CE /* juce_GroupComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GroupComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_GroupComponent.h; sourceTree = SOURCE_ROOT; }; 5E1EFF4EEA5684FA00CAA353 /* juce_ResizableBorderComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ResizableBorderComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h; sourceTree = SOURCE_ROOT; }; + 5E5098D437FC0612291567AC /* Documentation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Documentation.cpp; path = ../../Source/Processors/Dsp/Documentation.cpp; sourceTree = SOURCE_ROOT; }; + 5E5736CB6D96D5271F1A7597 /* AudioResamplingNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioResamplingNode.h; path = ../../Source/Processors/AudioResamplingNode/AudioResamplingNode.h; sourceTree = SOURCE_ROOT; }; 5E663D5A55F191AB92A1383F /* juce_FileInputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileInputStream.h; path = ../../JuceLibraryCode/modules/juce_core/files/juce_FileInputStream.h; sourceTree = SOURCE_ROOT; }; 5E94E897783BEEFE61E61A2C /* juce_android_WebBrowserComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_WebBrowserComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; - 5EA61EDD64BE1E401DD0AA5E /* SpikeDisplayNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayNode.h; path = ../../Source/Processors/SpikeDisplayNode.h; sourceTree = SOURCE_ROOT; }; + 5EA566ED87CC02EA6DF1993B /* FilterEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterEditor.h; path = ../../Source/Processors/FilterNode/FilterEditor.h; sourceTree = SOURCE_ROOT; }; 5EA661C13CB7197A45F20028 /* PipelineB-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "PipelineB-02.png"; path = "../../Resources/Images/Buttons/PipelineB-02.png"; sourceTree = SOURCE_ROOT; }; - 5F64FDAFCA899A16C7FDDBCA /* AudioNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioNode.h; path = ../../Source/Processors/AudioNode.h; sourceTree = SOURCE_ROOT; }; 5F6DCA68A982E930389644FD /* juce_linux_Network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Network.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_linux_Network.cpp; sourceTree = SOURCE_ROOT; }; 5FEBF3F722DB6191BF659816 /* juce_ArrowButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ArrowButton.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.cpp; sourceTree = SOURCE_ROOT; }; 5FEFF62D585CF777C950E569 /* juce_LookAndFeel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LookAndFeel.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp; sourceTree = SOURCE_ROOT; }; 601654292170CD2D60E912A6 /* juce_linux_ALSA.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_ALSA.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_ALSA.cpp; sourceTree = SOURCE_ROOT; }; 603764889DE750F8E87F6428 /* juce_win32_Direct2DGraphicsContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Direct2DGraphicsContext.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp; sourceTree = SOURCE_ROOT; }; 605C7ACB09E7739EBE4F1539 /* juce_AudioSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioSource.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_AudioSource.h; sourceTree = SOURCE_ROOT; }; + 607CC2BFCB0622B3348FA1AD /* SplitterEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SplitterEditor.cpp; path = ../../Source/Processors/Splitter/SplitterEditor.cpp; sourceTree = SOURCE_ROOT; }; 60B1BDA3E9E14F9515963082 /* juce_BasicNativeHeaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BasicNativeHeaders.h; path = ../../JuceLibraryCode/modules/juce_core/native/juce_BasicNativeHeaders.h; sourceTree = SOURCE_ROOT; }; 610E487E060C42B52FD5AAC9 /* ControlPanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ControlPanel.cpp; path = ../../Source/UI/ControlPanel.cpp; sourceTree = SOURCE_ROOT; }; 61317B5191E05925F232E18C /* unibody-8.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = "unibody-8.otf"; path = "../../Resources/Fonts/unibody-8.otf"; sourceTree = SOURCE_ROOT; }; 61481DD4AAC7731CE984937D /* juce_OpenGLExtensions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGLExtensions.h; path = ../../JuceLibraryCode/modules/juce_opengl/native/juce_OpenGLExtensions.h; sourceTree = SOURCE_ROOT; }; 617F5DFAAE97F48FA996A781 /* juce_DrawableRectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableRectangle.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableRectangle.h; sourceTree = SOURCE_ROOT; }; 61B0CBF705D5FC0431776286 /* juce_OpenGLShaderProgram.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_OpenGLShaderProgram.cpp; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp; sourceTree = SOURCE_ROOT; }; + 623684E73A6005C7BB2717A6 /* PulsePalOutputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PulsePalOutputEditor.h; path = ../../Source/Processors/PulsePalOutput/PulsePalOutputEditor.h; sourceTree = SOURCE_ROOT; }; 627956A7A1CB15251D02C8C5 /* juce_ScopedXLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScopedXLock.h; path = ../../JuceLibraryCode/modules/juce_events/native/juce_ScopedXLock.h; sourceTree = SOURCE_ROOT; }; - 6328434A329C353DB8D9512C /* SourceNodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SourceNodeEditor.cpp; path = ../../Source/Processors/Editors/SourceNodeEditor.cpp; sourceTree = SOURCE_ROOT; }; - 6340B1D2FECEABBBE6C0DE28 /* Types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Types.h; path = ../../Source/Dsp/Types.h; sourceTree = SOURCE_ROOT; }; 63AF6BE7FE2A9E7882743B4F /* juce_mac_Network.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_Network.mm; path = ../../JuceLibraryCode/modules/juce_core/native/juce_mac_Network.mm; sourceTree = SOURCE_ROOT; }; 63F4150ABBA43B2215230034 /* juce_IIRFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_IIRFilter.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/effects/juce_IIRFilter.h; sourceTree = SOURCE_ROOT; }; 642325267C5F1AC2F65B647D /* juce_AnimatedPositionBehaviours.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AnimatedPositionBehaviours.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h; sourceTree = SOURCE_ROOT; }; @@ -595,7 +617,6 @@ 649F22404167E0D0EA244196 /* juce_Toolbar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Toolbar.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Toolbar.cpp; sourceTree = SOURCE_ROOT; }; 6514FD7E6C5EC12735E49FBC /* juce_mac_FileChooser.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_FileChooser.mm; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_FileChooser.mm; sourceTree = SOURCE_ROOT; }; 651E9B78A5139F7A5BCA4D90 /* juce_PropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PropertyComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; - 65312FAD0900119CDF6CF414 /* PoleFilter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PoleFilter.cpp; path = ../../Source/Dsp/PoleFilter.cpp; sourceTree = SOURCE_ROOT; }; 6535D85C084292220330EDD9 /* juce_ResamplingAudioSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ResamplingAudioSource.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h; sourceTree = SOURCE_ROOT; }; 65751E743D5EFD4066E50746 /* juce_LagrangeInterpolator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LagrangeInterpolator.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h; sourceTree = SOURCE_ROOT; }; 6589EAEF497ABA76A295B121 /* juce_VSTPluginFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_VSTPluginFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h; sourceTree = SOURCE_ROOT; }; @@ -613,10 +634,11 @@ 66FE597910F6A68CBB6FA055 /* juce_MemoryInputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MemoryInputStream.cpp; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryInputStream.cpp; sourceTree = SOURCE_ROOT; }; 670987D88775D6B240C34820 /* juce_NotificationType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NotificationType.h; path = ../../JuceLibraryCode/modules/juce_events/messages/juce_NotificationType.h; sourceTree = SOURCE_ROOT; }; 674FDCCEF6A1379A0F689004 /* juce_ComponentBoundsConstrainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentBoundsConstrainer.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h; sourceTree = SOURCE_ROOT; }; + 677CC8DA903C77D8ECBAE26D /* Params.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Params.h; path = ../../Source/Processors/Dsp/Params.h; sourceTree = SOURCE_ROOT; }; + 679BBE9F6C930A1941BA7944 /* ReferenceNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ReferenceNode.h; path = ../../Source/Processors/ReferenceNode/ReferenceNode.h; sourceTree = SOURCE_ROOT; }; 67BB47E709B643D4C01AB34C /* juce_AudioDeviceSelectorComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioDeviceSelectorComponent.cpp; path = ../../JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp; sourceTree = SOURCE_ROOT; }; 6832130272774CD542793762 /* juce_mac_CoreGraphicsContext.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_CoreGraphicsContext.mm; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm; sourceTree = SOURCE_ROOT; }; 686FA8DDF2848517CBFB9E4A /* juce_MouseCursor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseCursor.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseCursor.cpp; sourceTree = SOURCE_ROOT; }; - 6880C148A38A5C8D0092E358 /* Merger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Merger.h; path = ../../Source/Processors/Utilities/Merger.h; sourceTree = SOURCE_ROOT; }; 6917A53BAA3CA2819E4C10BF /* juce_ToolbarItemComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ToolbarItemComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp; sourceTree = SOURCE_ROOT; }; 693E9C5C9A435F791921DAAE /* juce_AudioDeviceManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioDeviceManager.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp; sourceTree = SOURCE_ROOT; }; 696F2DC49934E6F01A2DF9FE /* juce_FileTreeComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileTreeComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp; sourceTree = SOURCE_ROOT; }; @@ -637,25 +659,28 @@ 6CA98F8581CEAE2DC9AEBCE9 /* juce_CallbackMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CallbackMessage.h; path = ../../JuceLibraryCode/modules/juce_events/messages/juce_CallbackMessage.h; sourceTree = SOURCE_ROOT; }; 6CBD8647DB17F1B58B14A3BC /* juce_win32_AudioCDBurner.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_AudioCDBurner.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp; sourceTree = SOURCE_ROOT; }; 6D34DD9AB987A67BADE71C65 /* RadioButtons-05.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-05.png"; path = "../../Resources/Images/Icons/RadioButtons-05.png"; sourceTree = SOURCE_ROOT; }; + 6D38B76951D31D96F1B71E0F /* SerialInputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SerialInputEditor.cpp; path = ../../Source/Processors/SerialInput/SerialInputEditor.cpp; sourceTree = SOURCE_ROOT; }; 6D4BA4399FDEB6D2195B257D /* juce_SplashScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SplashScreen.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SplashScreen.h; sourceTree = SOURCE_ROOT; }; + 6D4D435D25CFC019E0FCF4A1 /* ReferenceNodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ReferenceNodeEditor.cpp; path = ../../Source/Processors/ReferenceNode/ReferenceNodeEditor.cpp; sourceTree = SOURCE_ROOT; }; 6D4DFC260B2966E3EBFC0C79 /* juce_SliderPropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SliderPropertyComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; - 6D59D5780ECD2CC9703CB499 /* Butterworth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Butterworth.h; path = ../../Source/Dsp/Butterworth.h; sourceTree = SOURCE_ROOT; }; 6D619C7A3A14981DC4EFF223 /* juce_IIRFilterAudioSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_IIRFilterAudioSource.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h; sourceTree = SOURCE_ROOT; }; 6D77949E9C7C9B5A7795C0E0 /* juce_PathStrokeType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PathStrokeType.h; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathStrokeType.h; sourceTree = SOURCE_ROOT; }; 6DA8EC2F779DEBB701FE33CA /* juce_win32_HiddenMessageWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_win32_HiddenMessageWindow.h; path = ../../JuceLibraryCode/modules/juce_events/native/juce_win32_HiddenMessageWindow.h; sourceTree = SOURCE_ROOT; }; 6DCDFF2618CFEECEACE87630 /* juce_android_GraphicsContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_GraphicsContext.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_android_GraphicsContext.cpp; sourceTree = SOURCE_ROOT; }; 6DD526F86CBF2C3B3487FFE1 /* juce_ComponentBuilder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentBuilder.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp; sourceTree = SOURCE_ROOT; }; + 6DF620BE87EA9F7F25A1144A /* SpikeSorterCanvas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeSorterCanvas.cpp; path = ../../Source/Processors/SpikeSorter/SpikeSorterCanvas.cpp; sourceTree = SOURCE_ROOT; }; 6E2F243D8F70CC92391204A4 /* juce_MultiDocumentPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MultiDocumentPanel.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h; sourceTree = SOURCE_ROOT; }; 6EA1CC7DACDDBA863179521A /* juce_TemporaryFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TemporaryFile.cpp; path = ../../JuceLibraryCode/modules/juce_core/files/juce_TemporaryFile.cpp; sourceTree = SOURCE_ROOT; }; 6EF4EFD6D74D2573AC6B6A6F /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_audio_devices/juce_module_info; sourceTree = SOURCE_ROOT; }; 6F9B89F7AD0E13887871D4FE /* SourceDrop.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = SourceDrop.png; path = ../../Resources/Images/Icons/SourceDrop.png; sourceTree = SOURCE_ROOT; }; 6FE8B0DD6116E6A3456ECF09 /* juce_ios_UIViewComponent.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_ios_UIViewComponent.mm; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm; sourceTree = SOURCE_ROOT; }; 700597338DEC9AB65C4C8A5E /* juce_DrawableText.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableText.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableText.h; sourceTree = SOURCE_ROOT; }; - 70151263C4CB8A4F79431E11 /* EventNodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventNodeEditor.cpp; path = ../../Source/Processors/Editors/EventNodeEditor.cpp; sourceTree = SOURCE_ROOT; }; + 70651FEF347D8DE167B68EB8 /* FilterNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterNode.h; path = ../../Source/Processors/FilterNode/FilterNode.h; sourceTree = SOURCE_ROOT; }; 70BF68C222D1E0A0368EB845 /* juce_ApplicationCommandManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ApplicationCommandManager.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp; sourceTree = SOURCE_ROOT; }; 70ECB490BD59F59D003F3BEE /* juce_android_CameraDevice.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_CameraDevice.cpp; path = ../../JuceLibraryCode/modules/juce_video/native/juce_android_CameraDevice.cpp; sourceTree = SOURCE_ROOT; }; 70F06DBCA3948BCC1062E36F /* ChannelSelector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChannelSelector.h; path = ../../Source/Processors/Editors/ChannelSelector.h; sourceTree = SOURCE_ROOT; }; 71CF8F6995DF1BA2038C21D6 /* juce_AlertWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AlertWindow.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_AlertWindow.h; sourceTree = SOURCE_ROOT; }; + 721B60E285ADAC54829028B9 /* ArduinoOutputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ArduinoOutputEditor.h; path = ../../Source/Processors/ArduinoOutput/ArduinoOutputEditor.h; sourceTree = SOURCE_ROOT; }; 7291F19253205B1A5138908E /* juce_DynamicObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DynamicObject.cpp; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_DynamicObject.cpp; sourceTree = SOURCE_ROOT; }; 72C33BA70B9EE82E39F1EC6C /* juce_MP3AudioFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MP3AudioFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_MP3AudioFormat.h; sourceTree = SOURCE_ROOT; }; 72FCE41894123FC5DB01566B /* juce_OpenGL_win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGL_win32.h; path = ../../JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_win32.h; sourceTree = SOURCE_ROOT; }; @@ -663,30 +688,33 @@ 7387114E34496F4606550863 /* juce_HyperlinkButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_HyperlinkButton.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp; sourceTree = SOURCE_ROOT; }; 73ACB7A051EDE5F676E35FFD /* juce_PerformanceCounter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PerformanceCounter.cpp; path = ../../JuceLibraryCode/modules/juce_core/time/juce_PerformanceCounter.cpp; sourceTree = SOURCE_ROOT; }; 73C69D948D33899821536025 /* juce_SystemTrayIconComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SystemTrayIconComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h; sourceTree = SOURCE_ROOT; }; - 748AF0975561FFFE51DF5F58 /* PhaseDetectorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PhaseDetectorEditor.h; path = ../../Source/Processors/Editors/PhaseDetectorEditor.h; sourceTree = SOURCE_ROOT; }; 748E62D05C8FFF74DCA234C7 /* juce_ThreadPool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ThreadPool.cpp; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_ThreadPool.cpp; sourceTree = SOURCE_ROOT; }; + 748F08ACA463113F570C51AC /* SignalGenerator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SignalGenerator.cpp; path = ../../Source/Processors/SignalGenerator/SignalGenerator.cpp; sourceTree = SOURCE_ROOT; }; 74A81014471CC0EB0D5E6571 /* juce_ValueTree.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ValueTree.cpp; path = ../../JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTree.cpp; sourceTree = SOURCE_ROOT; }; + 74BAC33D6BC1D961F04DCC72 /* Channel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Channel.h; path = ../../Source/Processors/Channel/Channel.h; sourceTree = SOURCE_ROOT; }; 74DE857CEFA10BC49FF591DB /* juce_Synthesiser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Synthesiser.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/synthesisers/juce_Synthesiser.h; sourceTree = SOURCE_ROOT; }; 753B81CCB5A6B6929679E7B7 /* juce_Application.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Application.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/application/juce_Application.h; sourceTree = SOURCE_ROOT; }; 7555A13E69B99B1B6C7295FD /* juce_InputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_InputStream.cpp; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_InputStream.cpp; sourceTree = SOURCE_ROOT; }; 758BC480F153DEA79304366B /* ofArduino.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ofArduino.h; path = ../../Source/Processors/Serial/ofArduino.h; sourceTree = SOURCE_ROOT; }; 75A4EEE127FAB86D65FF5F6E /* juce_RelativeCoordinatePositioner.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeCoordinatePositioner.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp; sourceTree = SOURCE_ROOT; }; - 75B1E4EFCDA9A506CFEDB09F /* PhaseDetectorEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PhaseDetectorEditor.cpp; path = ../../Source/Processors/Editors/PhaseDetectorEditor.cpp; sourceTree = SOURCE_ROOT; }; 75E0C433EC27CFB712CD9F75 /* juce_PluginListComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PluginListComponent.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginListComponent.h; sourceTree = SOURCE_ROOT; }; 75FCE8908DD9055F90E93716 /* juce_ResizableBorderComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResizableBorderComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp; sourceTree = SOURCE_ROOT; }; 76140C0485FDDA98C3D98E2A /* juce_OldSchoolLookAndFeel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_OldSchoolLookAndFeel.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.cpp; sourceTree = SOURCE_ROOT; }; 766923F74E30FF5D6B12E7CE /* juce_DrawableComposite.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableComposite.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableComposite.h; sourceTree = SOURCE_ROOT; }; 76E89CBE70BF8F2476B7AA34 /* juce_SortedSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SortedSet.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_SortedSet.h; sourceTree = SOURCE_ROOT; }; - 76F569AE7B444D8F69EE0E86 /* AudioResamplingNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioResamplingNode.cpp; path = ../../Source/Processors/AudioResamplingNode.cpp; sourceTree = SOURCE_ROOT; }; 7719FB81DDF23CF0164B131D /* juce_BlowFish.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BlowFish.h; path = ../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_BlowFish.h; sourceTree = SOURCE_ROOT; }; + 777D9B0FE3C110ADA980BD09 /* Butterworth.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Butterworth.cpp; path = ../../Source/Processors/Dsp/Butterworth.cpp; sourceTree = SOURCE_ROOT; }; 778333877EFD6EC62129D803 /* juce_ConnectedChildProcess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ConnectedChildProcess.h; path = ../../JuceLibraryCode/modules/juce_events/interprocess/juce_ConnectedChildProcess.h; sourceTree = SOURCE_ROOT; }; 77B3E84324445076F1F907E9 /* juce_win32_Threads.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Threads.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_win32_Threads.cpp; sourceTree = SOURCE_ROOT; }; + 7814050BBF14AF7D45872768 /* Dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Dsp.h; path = ../../Source/Processors/Dsp/Dsp.h; sourceTree = SOURCE_ROOT; }; 783D8922D5C687E170FA1A2C /* cpmono_plain.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_plain.otf; path = ../../Resources/Fonts/cpmono_plain.otf; sourceTree = SOURCE_ROOT; }; + 78400C0FB79F6B0D1A27A6D4 /* SpikeSorter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeSorter.h; path = ../../Source/Processors/SpikeSorter/SpikeSorter.h; sourceTree = SOURCE_ROOT; }; 784233150B26826701C09103 /* juce_MidiKeyboardComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MidiKeyboardComponent.h; path = ../../JuceLibraryCode/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h; sourceTree = SOURCE_ROOT; }; 786A97B2B4E2BB6406546647 /* juce_FileSearchPathListComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileSearchPathListComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h; sourceTree = SOURCE_ROOT; }; 786F6A40506C2094B812F4D5 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_audio_basics/juce_module_info; sourceTree = SOURCE_ROOT; }; 788F8B7719B70465762B634B /* DataBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DataBuffer.cpp; path = ../../Source/Processors/DataThreads/DataBuffer.cpp; sourceTree = SOURCE_ROOT; }; 789139D88F449BE488BF3CCB /* juce_AudioFormatReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioFormatReader.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReader.h; sourceTree = SOURCE_ROOT; }; + 78A1CE918B3E7ADD87DA4350 /* Legendre.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Legendre.cpp; path = ../../Source/Processors/Dsp/Legendre.cpp; sourceTree = SOURCE_ROOT; }; 78BA978C614603B5E9ECFFF1 /* juce_ComponentPeer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentPeer.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp; sourceTree = SOURCE_ROOT; }; 78CC9639B933CE2497264EF2 /* juce_KeyPress.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_KeyPress.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyPress.h; sourceTree = SOURCE_ROOT; }; 793A4A777FEFA450F86C78EE /* juce_GraphicsContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GraphicsContext.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/contexts/juce_GraphicsContext.cpp; sourceTree = SOURCE_ROOT; }; @@ -695,12 +723,9 @@ 79C91DDF3BC3F15D0338E504 /* ProcessorList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ProcessorList.cpp; path = ../../Source/UI/ProcessorList.cpp; sourceTree = SOURCE_ROOT; }; 7A93BFD2180B5E00B124CB1A /* juce_PixelFormats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PixelFormats.h; path = ../../JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h; sourceTree = SOURCE_ROOT; }; 7A9F37527280A470F201FB6E /* juce_SystemTrayIconComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SystemTrayIconComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp; sourceTree = SOURCE_ROOT; }; - 7ACB1CB66D69738904358F43 /* Design.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Design.h; path = ../../Source/Dsp/Design.h; sourceTree = SOURCE_ROOT; }; 7B42B28FDB2E3AC67EF296F8 /* PracticalSocket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PracticalSocket.h; path = ../../Source/Network/PracticalSocket.h; sourceTree = SOURCE_ROOT; }; 7B674BB1DA11A4E58EA71624 /* juce_EdgeTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_EdgeTable.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_EdgeTable.cpp; sourceTree = SOURCE_ROOT; }; - 7B7819A5759B54D91E334447 /* LfpTriggeredAverageEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpTriggeredAverageEditor.cpp; path = ../../Source/Processors/Editors/LfpTriggeredAverageEditor.cpp; sourceTree = SOURCE_ROOT; }; 7BCE1C09508E1B9CFC79C185 /* juce_CaretComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CaretComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp; sourceTree = SOURCE_ROOT; }; - 7BD2C39F13FDE202141C4B41 /* MessageCenter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MessageCenter.cpp; path = ../../Source/UI/MessageCenter.cpp; sourceTree = SOURCE_ROOT; }; 7BE7EBBCC4DCF760A1AA697E /* juce_DirectoryContentsList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DirectoryContentsList.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h; sourceTree = SOURCE_ROOT; }; 7C0F2759385C66CAC3EC362D /* juce_win32_ActiveXComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_ActiveXComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp; sourceTree = SOURCE_ROOT; }; 7C15112E5F287ACDD74480F5 /* juce_QuickTimeMovieComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_QuickTimeMovieComponent.h; path = ../../JuceLibraryCode/modules/juce_video/playback/juce_QuickTimeMovieComponent.h; sourceTree = SOURCE_ROOT; }; @@ -715,6 +740,7 @@ 7D8100DC3A532980AEAAD909 /* juce_ArrayAllocationBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ArrayAllocationBase.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_ArrayAllocationBase.h; sourceTree = SOURCE_ROOT; }; 7D88F7083884A5ED2DBE7534 /* juce_GroupComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GroupComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_GroupComponent.cpp; sourceTree = SOURCE_ROOT; }; 7D9374931D760ADC65DCBFC6 /* DataViewport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataViewport.h; path = ../../Source/UI/DataViewport.h; sourceTree = SOURCE_ROOT; }; + 7DB22AC6407EEA88F3FFA16D /* EngineConfigWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EngineConfigWindow.cpp; path = ../../Source/Processors/RecordNode/EngineConfigWindow.cpp; sourceTree = SOURCE_ROOT; }; 7E40891072657FB5ADC2FAB7 /* juce_Array.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Array.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_Array.h; sourceTree = SOURCE_ROOT; }; 7E581214A64A535E03EA759B /* juce_AlertWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AlertWindow.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_AlertWindow.cpp; sourceTree = SOURCE_ROOT; }; 7E875E681E18D693D5ADB2FB /* EditorViewport.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EditorViewport.cpp; path = ../../Source/UI/EditorViewport.cpp; sourceTree = SOURCE_ROOT; }; @@ -722,7 +748,6 @@ 7EBB3F8185EB597DEF77534D /* juce_Message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Message.h; path = ../../JuceLibraryCode/modules/juce_events/messages/juce_Message.h; sourceTree = SOURCE_ROOT; }; 7EBEBC6DBA8DCA5A5D8C72E1 /* juce_Timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Timer.h; path = ../../JuceLibraryCode/modules/juce_events/timers/juce_Timer.h; sourceTree = SOURCE_ROOT; }; 7ECD5DB4BEBC44559D064E08 /* juce_Logger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Logger.cpp; path = ../../JuceLibraryCode/modules/juce_core/logging/juce_Logger.cpp; sourceTree = SOURCE_ROOT; }; - 7EFF8622168303A4391D6CAE /* RootFinder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RootFinder.h; path = ../../Source/Dsp/RootFinder.h; sourceTree = SOURCE_ROOT; }; 7F17077973FFDD70C4B78E7E /* juce_PlatformDefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PlatformDefs.h; path = ../../JuceLibraryCode/modules/juce_core/system/juce_PlatformDefs.h; sourceTree = SOURCE_ROOT; }; 7F1E84C068D3E6AA13CDD699 /* juce_Justification.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Justification.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/placement/juce_Justification.cpp; sourceTree = SOURCE_ROOT; }; 7F49EA0CD3379397520AA6F1 /* juce_DeletedAtShutdown.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DeletedAtShutdown.cpp; path = ../../JuceLibraryCode/modules/juce_events/messages/juce_DeletedAtShutdown.cpp; sourceTree = SOURCE_ROOT; }; @@ -731,11 +756,14 @@ 7FDFE493862CE27EFCAC3F7F /* RadioButtons-04.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-04.png"; path = "../../Resources/Images/Icons/RadioButtons-04.png"; sourceTree = SOURCE_ROOT; }; 803D306CDAC2BD3BA04534EA /* juce_AudioProcessorEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioProcessorEditor.cpp; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp; sourceTree = SOURCE_ROOT; }; 8077C8D1C544F458947D693E /* juce_TextLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextLayout.h; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_TextLayout.h; sourceTree = SOURCE_ROOT; }; + 80A19F69D9B205BCC0ABA293 /* EcubeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EcubeEditor.cpp; path = ../../Source/Processors/DataThreads/EcubeEditor.cpp; sourceTree = SOURCE_ROOT; }; 80A612858FA1177A262744C6 /* juce_HyperlinkButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_HyperlinkButton.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_HyperlinkButton.h; sourceTree = SOURCE_ROOT; }; 80C1B737D2C2CB519D1787D7 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; 80D57E78015C789503FE24B4 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_audio_utils/juce_module_info; sourceTree = SOURCE_ROOT; }; 80E8C07F5807C65BCDFCCF94 /* juce_AudioSampleBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioSampleBuffer.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.cpp; sourceTree = SOURCE_ROOT; }; 80EEDD40F49120ADBE9DCBDF /* rhd2000datablock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = rhd2000datablock.h; path = "../../Source/Processors/DataThreads/rhythm-api/rhd2000datablock.h"; sourceTree = SOURCE_ROOT; }; + 811A8689009F6FBEE2168F96 /* SpikeDetectorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDetectorEditor.h; path = ../../Source/Processors/SpikeDetector/SpikeDetectorEditor.h; sourceTree = SOURCE_ROOT; }; + 811BCA5BE226C5188BC5E9B9 /* Parameter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Parameter.h; path = ../../Source/Processors/Parameter/Parameter.h; sourceTree = SOURCE_ROOT; }; 811C4D165AD7AABF4055059C /* juce_Expression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Expression.h; path = ../../JuceLibraryCode/modules/juce_core/maths/juce_Expression.h; sourceTree = SOURCE_ROOT; }; 816EB8024DD50DE4B7E84CB8 /* juce_ByteOrder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ByteOrder.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_ByteOrder.h; sourceTree = SOURCE_ROOT; }; 81D578AA5F277EB0946050E5 /* juce_win32_DragAndDrop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_DragAndDrop.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp; sourceTree = SOURCE_ROOT; }; @@ -744,7 +772,6 @@ 837D266B3F62C3B05C2BC28C /* BinaryData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = SOURCE_ROOT; }; 83803D96768258DA20710764 /* juce_XmlElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_XmlElement.h; path = ../../JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.h; sourceTree = SOURCE_ROOT; }; 83950E9D0D7C100B7DCA0E55 /* juce_TextButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextButton.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_TextButton.h; sourceTree = SOURCE_ROOT; }; - 83E5EA2AA0CB928889AC80AB /* SpikeDetectorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDetectorEditor.h; path = ../../Source/Processors/Editors/SpikeDetectorEditor.h; sourceTree = SOURCE_ROOT; }; 847F6986DFA468BA8D80A531 /* miso-light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = "miso-light.ttf"; path = "../../Resources/Fonts/miso-light.ttf"; sourceTree = SOURCE_ROOT; }; 84A71C69B4B5779620343BCD /* juce_linux_CommonFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_CommonFile.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_linux_CommonFile.cpp; sourceTree = SOURCE_ROOT; }; 8515A61F1E3BD62B9B95B495 /* juce_audio_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_audio_utils.h; path = ../../JuceLibraryCode/modules/juce_audio_utils/juce_audio_utils.h; sourceTree = SOURCE_ROOT; }; @@ -753,37 +780,39 @@ 85928E2EF1C438EBC9EB07EA /* juce_ImageCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImageCache.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageCache.cpp; sourceTree = SOURCE_ROOT; }; 85C3F7CDF87409A56082DF67 /* juce_FileListComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileListComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp; sourceTree = SOURCE_ROOT; }; 86515FD9AD34D6FF96C0D8B6 /* juce_BufferingAudioFormatReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BufferingAudioFormatReader.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp; sourceTree = SOURCE_ROOT; }; - 86688D712937F3D08918C68B /* SerialInput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SerialInput.cpp; path = ../../Source/Processors/SerialInput.cpp; sourceTree = SOURCE_ROOT; }; 8689288B66B16EFB106CB2F4 /* juce_TextInputTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextInputTarget.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h; sourceTree = SOURCE_ROOT; }; 86E8E44A13F17083ED300BD5 /* juce_ChangeListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChangeListener.h; path = ../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeListener.h; sourceTree = SOURCE_ROOT; }; 86F4AAFCE3FEB34E325F3020 /* juce_win32_ComSmartPtr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_win32_ComSmartPtr.h; path = ../../JuceLibraryCode/modules/juce_core/native/juce_win32_ComSmartPtr.h; sourceTree = SOURCE_ROOT; }; 8751DF970A9E3598683BACAF /* FPGAThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FPGAThread.h; path = ../../Source/Processors/DataThreads/FPGAThread.h; sourceTree = SOURCE_ROOT; }; 879B0383EF2A8B116903A500 /* juce_ImageCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageCache.h; path = ../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageCache.h; sourceTree = SOURCE_ROOT; }; 87B4BA68E49DD11197B7AFDB /* JuceHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = SOURCE_ROOT; }; + 87C0534EAC82E887E1D354C3 /* Butterworth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Butterworth.h; path = ../../Source/Processors/Dsp/Butterworth.h; sourceTree = SOURCE_ROOT; }; 880CC7C325EFF665AC3006D2 /* juce_KeyListener.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_KeyListener.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyListener.cpp; sourceTree = SOURCE_ROOT; }; 881237D5E366342B117C0ED7 /* juce_WildcardFileFilter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_WildcardFileFilter.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.cpp; sourceTree = SOURCE_ROOT; }; 8822ADC9DB83FAF39B841E31 /* juce_Font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Font.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Font.cpp; sourceTree = SOURCE_ROOT; }; - 886E18520E8BD77234E1B686 /* FilterNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterNode.h; path = ../../Source/Processors/FilterNode.h; sourceTree = SOURCE_ROOT; }; + 883E23B392AFB86C3EE1A2AC /* ReferenceNodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ReferenceNodeEditor.h; path = ../../Source/Processors/ReferenceNode/ReferenceNodeEditor.h; sourceTree = SOURCE_ROOT; }; 8882F8EBE55F52FA8E519249 /* juce_android_Files.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Files.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_android_Files.cpp; sourceTree = SOURCE_ROOT; }; + 88C69F0563A99BD2F7BF5FBB /* LfpDisplayEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayEditor.cpp; path = ../../Source/Processors/LfpDisplayNode/LfpDisplayEditor.cpp; sourceTree = SOURCE_ROOT; }; 88E5D0906646465409715828 /* juce_PreferencesPanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PreferencesPanel.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp; sourceTree = SOURCE_ROOT; }; 891B132A0355007B4F37454C /* juce_GraphicsContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GraphicsContext.h; path = ../../JuceLibraryCode/modules/juce_graphics/contexts/juce_GraphicsContext.h; sourceTree = SOURCE_ROOT; }; 893E1A681FF162F6C9069F62 /* juce_HashMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_HashMap.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_HashMap.h; sourceTree = SOURCE_ROOT; }; 894C0CAC31D382477E7A122E /* juce_PluginDirectoryScanner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PluginDirectoryScanner.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h; sourceTree = SOURCE_ROOT; }; 89B0B267EF0A2A19A082EB86 /* juce_android_Fonts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Fonts.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_android_Fonts.cpp; sourceTree = SOURCE_ROOT; }; + 89CDE7ED25D0EB7452486E85 /* SpikeDetector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDetector.cpp; path = ../../Source/Processors/SpikeDetector/SpikeDetector.cpp; sourceTree = SOURCE_ROOT; }; 8A026DB58E3555F7B070DA61 /* juce_MemoryBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MemoryBlock.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_MemoryBlock.h; sourceTree = SOURCE_ROOT; }; - 8A91849BE6B96EB8C0663469 /* LfpDisplayEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayEditor.cpp; path = ../../Source/Processors/Editors/LfpDisplayEditor.cpp; sourceTree = SOURCE_ROOT; }; + 8A07B5B6D56277A222AC0E90 /* HDF5Recording.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HDF5Recording.h; path = ../../Source/Processors/RecordNode/HDF5Recording.h; sourceTree = SOURCE_ROOT; }; 8A989F74B1957BCB3B9BA398 /* rhd2000registers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = rhd2000registers.h; path = "../../Source/Processors/DataThreads/rhythm-api/rhd2000registers.h"; sourceTree = SOURCE_ROOT; }; 8AE2DDA47B2DFDEEEF69B12F /* FileReaderIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = FileReaderIcon.png; path = ../../Resources/Images/Icons/FileReaderIcon.png; sourceTree = SOURCE_ROOT; }; + 8B0B1D01BA8A37EC6058E518 /* RootFinder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RootFinder.h; path = ../../Source/Processors/Dsp/RootFinder.h; sourceTree = SOURCE_ROOT; }; 8B0C9D288C428BA5D956AE13 /* juce_MidiMessage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MidiMessage.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiMessage.cpp; sourceTree = SOURCE_ROOT; }; 8B4113F2B3F3623B4C980217 /* juce_WildcardFileFilter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_WildcardFileFilter.cpp; path = ../../JuceLibraryCode/modules/juce_core/files/juce_WildcardFileFilter.cpp; sourceTree = SOURCE_ROOT; }; 8B49B07BC7534B247ADC756A /* juce_WeakReference.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WeakReference.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_WeakReference.h; sourceTree = SOURCE_ROOT; }; - 8B745839B225E44C9EB5C6FA /* ParameterEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ParameterEditor.h; path = ../../Source/Processors/Editors/ParameterEditor.h; sourceTree = SOURCE_ROOT; }; 8B7EB54E1F773517A65D935C /* juce_DropShadowEffect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DropShadowEffect.h; path = ../../JuceLibraryCode/modules/juce_graphics/effects/juce_DropShadowEffect.h; sourceTree = SOURCE_ROOT; }; - 8B9C0831BE4E09B7C0078B7E /* ArduinoOutputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ArduinoOutputEditor.h; path = ../../Source/Processors/Editors/ArduinoOutputEditor.h; sourceTree = SOURCE_ROOT; }; 8C077447B0DFC739C7D2E437 /* juce_MemoryInputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MemoryInputStream.h; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryInputStream.h; sourceTree = SOURCE_ROOT; }; 8C268C3D0B8EC2BB8953E7F7 /* juce_ModifierKeys.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ModifierKeys.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp; sourceTree = SOURCE_ROOT; }; 8C38407151E149A7E2A15801 /* juce_SHA256.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SHA256.h; path = ../../JuceLibraryCode/modules/juce_cryptography/hashing/juce_SHA256.h; sourceTree = SOURCE_ROOT; }; 8C3B6865F2053C80A6E692F1 /* juce_Label.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Label.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Label.cpp; sourceTree = SOURCE_ROOT; }; + 8C639E4F97B7D6070028623A /* MergerEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MergerEditor.h; path = ../../Source/Processors/Merger/MergerEditor.h; sourceTree = SOURCE_ROOT; }; 8CAEF601359DB6CB50E89D1A /* juce_ActionBroadcaster.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ActionBroadcaster.cpp; path = ../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp; sourceTree = SOURCE_ROOT; }; 8D4FBD30E1C9EC0DA749BC83 /* juce_DropShadower.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DropShadower.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_DropShadower.cpp; sourceTree = SOURCE_ROOT; }; 8D6A419A4678968762A59B28 /* juce_BufferingAudioFormatReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BufferingAudioFormatReader.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.h; sourceTree = SOURCE_ROOT; }; @@ -793,6 +822,7 @@ 8E78AAA58721DE609F6FFC61 /* juce_DragAndDropContainer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DragAndDropContainer.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp; sourceTree = SOURCE_ROOT; }; 8EB76CA261F62A89B3D25F81 /* juce_Thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Thread.h; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_Thread.h; sourceTree = SOURCE_ROOT; }; 8F0549459970F529587D6CDD /* juce_WindowsMediaAudioFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WindowsMediaAudioFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h; sourceTree = SOURCE_ROOT; }; + 8F058EA775325F9C5650944E /* MessageCenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MessageCenter.h; path = ../../Source/Processors/MessageCenter/MessageCenter.h; sourceTree = SOURCE_ROOT; }; 8F08D5488CE147D693BA21E2 /* juce_osx_ObjCHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_osx_ObjCHelpers.h; path = ../../JuceLibraryCode/modules/juce_core/native/juce_osx_ObjCHelpers.h; sourceTree = SOURCE_ROOT; }; 8F29CAC0059E3697A5A3652F /* juce_URL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_URL.cpp; path = ../../JuceLibraryCode/modules/juce_core/network/juce_URL.cpp; sourceTree = SOURCE_ROOT; }; 8F3C158B4FB92CFC48324896 /* juce_SelectedItemSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SelectedItemSet.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_SelectedItemSet.h; sourceTree = SOURCE_ROOT; }; @@ -805,14 +835,10 @@ 90AD1B6A2293F625D786507A /* juce_MathsFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MathsFunctions.h; path = ../../JuceLibraryCode/modules/juce_core/maths/juce_MathsFunctions.h; sourceTree = SOURCE_ROOT; }; 90F2939F533A26AC021E42B1 /* juce_ColourGradient.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ColourGradient.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/colour/juce_ColourGradient.cpp; sourceTree = SOURCE_ROOT; }; 911CCC0A579792DC56807DEC /* juce_DrawableRectangle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableRectangle.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp; sourceTree = SOURCE_ROOT; }; - 9136BD46BE1E28A96FBBD440 /* SignalGeneratorEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SignalGeneratorEditor.cpp; path = ../../Source/Processors/Editors/SignalGeneratorEditor.cpp; sourceTree = SOURCE_ROOT; }; 917988BE74F2180BFC0583A3 /* juce_MissingGLDefinitions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MissingGLDefinitions.h; path = ../../JuceLibraryCode/modules/juce_opengl/native/juce_MissingGLDefinitions.h; sourceTree = SOURCE_ROOT; }; 918837CC0447C50774036664 /* juce_StretchableLayoutResizerBar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_StretchableLayoutResizerBar.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp; sourceTree = SOURCE_ROOT; }; - 91D7B1F8B94AE9CFCC53771F /* EventDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventDetector.h; path = ../../Source/Processors/EventDetector.h; sourceTree = SOURCE_ROOT; }; 9200FC900D22733AE716C364 /* juce_CharPointer_UTF16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharPointer_UTF16.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF16.h; sourceTree = SOURCE_ROOT; }; - 9215DC26F511C58DEE009209 /* FileReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FileReader.cpp; path = ../../Source/Processors/FileReader.cpp; sourceTree = SOURCE_ROOT; }; 921F5D04122F324502DA4E75 /* juce_TextEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TextEditor.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TextEditor.cpp; sourceTree = SOURCE_ROOT; }; - 92528D6653802FACF658D8EA /* FPGAOutputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FPGAOutputEditor.h; path = ../../Source/Processors/Editors/FPGAOutputEditor.h; sourceTree = SOURCE_ROOT; }; 92602D7166325C7232B85EDD /* DataThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DataThread.cpp; path = ../../Source/Processors/DataThreads/DataThread.cpp; sourceTree = SOURCE_ROOT; }; 927AE946A1371490D809876E /* juce_MidiMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MidiMessage.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiMessage.h; sourceTree = SOURCE_ROOT; }; 927FCF11005E78D499DAF197 /* juce_CallOutBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CallOutBox.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.h; sourceTree = SOURCE_ROOT; }; @@ -820,14 +846,18 @@ 92E07CA13571893873565AC7 /* juce_SplashScreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SplashScreen.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SplashScreen.cpp; sourceTree = SOURCE_ROOT; }; 92E3405CB31ACFE3F80BBAD4 /* OpenEphysBoardLogoBlack.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = OpenEphysBoardLogoBlack.png; path = ../../Resources/Images/Icons/OpenEphysBoardLogoBlack.png; sourceTree = SOURCE_ROOT; }; 92EC6BB8A8C4C5A61F43C233 /* juce_ToggleButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ToggleButton.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.h; sourceTree = SOURCE_ROOT; }; + 92F51CF12E0C21F38D5E61E8 /* SpikeSortBoxes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeSortBoxes.cpp; path = ../../Source/Processors/SpikeSorter/SpikeSortBoxes.cpp; sourceTree = SOURCE_ROOT; }; + 934B37E2BECD69E6E27051F6 /* ParameterEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ParameterEditor.cpp; path = ../../Source/Processors/Parameter/ParameterEditor.cpp; sourceTree = SOURCE_ROOT; }; 9360657FDE33FA37D80075D1 /* juce_InterprocessConnection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_InterprocessConnection.cpp; path = ../../JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnection.cpp; sourceTree = SOURCE_ROOT; }; 9380932BED279F91B8C1C04B /* juce_Rectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Rectangle.h; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Rectangle.h; sourceTree = SOURCE_ROOT; }; 93EFC1AA800FC5DA2F04A213 /* RadioButtons_neutral-04.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-04.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-04.png"; sourceTree = SOURCE_ROOT; }; 93F842958BCE6A9E09862CF7 /* juce_LADSPAPluginFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LADSPAPluginFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h; sourceTree = SOURCE_ROOT; }; - 9428D7423971764AC0BA9CB7 /* State.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = State.h; path = ../../Source/Dsp/State.h; sourceTree = SOURCE_ROOT; }; + 9410421AB1CD18F754FD4A9E /* EventDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventDetector.h; path = ../../Source/Processors/EventDetector/EventDetector.h; sourceTree = SOURCE_ROOT; }; 945DC754F2EACDFFB7926DE8 /* juce_FileChooser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileChooser.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooser.h; sourceTree = SOURCE_ROOT; }; 946FDFCA107B3F4C74C471B4 /* juce_InterprocessConnectionServer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InterprocessConnectionServer.h; path = ../../JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnectionServer.h; sourceTree = SOURCE_ROOT; }; + 949422DF0532222450E95926 /* RecordNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RecordNode.cpp; path = ../../Source/Processors/RecordNode/RecordNode.cpp; sourceTree = SOURCE_ROOT; }; 94BD861806F8EA598EC09370 /* juce_ResizableCornerComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResizableCornerComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp; sourceTree = SOURCE_ROOT; }; + 95A64508FF3D0140D3001A19 /* ArduinoOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ArduinoOutput.cpp; path = ../../Source/Processors/ArduinoOutput/ArduinoOutput.cpp; sourceTree = SOURCE_ROOT; }; 95B57108E929DD11F898B7B1 /* FileReaderThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FileReaderThread.h; path = ../../Source/Processors/DataThreads/FileReaderThread.h; sourceTree = SOURCE_ROOT; }; 95EC6B1536DC65070D0ADCEE /* juce_ListBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ListBox.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ListBox.h; sourceTree = SOURCE_ROOT; }; 967138FE8A086734ADC8CABB /* juce_Value.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Value.cpp; path = ../../JuceLibraryCode/modules/juce_data_structures/values/juce_Value.cpp; sourceTree = SOURCE_ROOT; }; @@ -840,34 +870,32 @@ 982E1A954C316920557F029C /* juce_android_Network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Network.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_android_Network.cpp; sourceTree = SOURCE_ROOT; }; 9845DA251B15F22B355FC618 /* juce_LiveConstantEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LiveConstantEditor.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_LiveConstantEditor.h; sourceTree = SOURCE_ROOT; }; 984BC60C0AFF3EDED692FA01 /* GenericEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GenericEditor.h; path = ../../Source/Processors/Editors/GenericEditor.h; sourceTree = SOURCE_ROOT; }; - 985F2B5047476B272B1A4BD4 /* EventNodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventNodeEditor.h; path = ../../Source/Processors/Editors/EventNodeEditor.h; sourceTree = SOURCE_ROOT; }; 988F01B2B51B2AC7293D07DA /* juce_MidiMessageCollector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MidiMessageCollector.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp; sourceTree = SOURCE_ROOT; }; 98C81B13A0C34D8A4E93ADD1 /* juce_ToolbarButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ToolbarButton.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToolbarButton.h; sourceTree = SOURCE_ROOT; }; 98D2D452F48C86F47FB90BAD /* juce_PNGLoader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PNGLoader.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/image_formats/juce_PNGLoader.cpp; sourceTree = SOURCE_ROOT; }; + 98EFA5304D160AD9225E38B4 /* MathSupplement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MathSupplement.h; path = ../../Source/Processors/Dsp/MathSupplement.h; sourceTree = SOURCE_ROOT; }; 996E4EA6B532E4E436F50243 /* juce_DeletedAtShutdown.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DeletedAtShutdown.h; path = ../../JuceLibraryCode/modules/juce_events/messages/juce_DeletedAtShutdown.h; sourceTree = SOURCE_ROOT; }; 9978BC2A359BC506F69E545F /* juce_SystemStats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SystemStats.cpp; path = ../../JuceLibraryCode/modules/juce_core/system/juce_SystemStats.cpp; sourceTree = SOURCE_ROOT; }; 99E1BC08B886CFDD2CCFD462 /* open-ephys.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "open-ephys.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 9A21A229CFACC67E31F4F727 /* RBJ.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RBJ.cpp; path = ../../Source/Dsp/RBJ.cpp; sourceTree = SOURCE_ROOT; }; 9A29EBC10219D89919E12FCB /* juce_ComponentDragger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentDragger.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_ComponentDragger.h; sourceTree = SOURCE_ROOT; }; + 9AA19ECEFE2B49832ECEED2F /* FilterNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterNode.cpp; path = ../../Source/Processors/FilterNode/FilterNode.cpp; sourceTree = SOURCE_ROOT; }; 9B178E9015CF469CFD41BC79 /* juce_BufferedInputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BufferedInputStream.cpp; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_BufferedInputStream.cpp; sourceTree = SOURCE_ROOT; }; + 9B1962D340B217B19B077F2A /* OriginalRecording.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OriginalRecording.h; path = ../../Source/Processors/RecordNode/OriginalRecording.h; sourceTree = SOURCE_ROOT; }; 9B4EA34E8F90B7CC77694B7E /* juce_DialogWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DialogWindow.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_DialogWindow.h; sourceTree = SOURCE_ROOT; }; 9B5D838CB6224E82C9B36AA3 /* juce_android_Misc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Misc.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_android_Misc.cpp; sourceTree = SOURCE_ROOT; }; - 9B9EDDFA0AE4991BC7FC7263 /* MessageCenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MessageCenter.h; path = ../../Source/UI/MessageCenter.h; sourceTree = SOURCE_ROOT; }; - 9BC055494F9FEE3F90630541 /* Channel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Channel.cpp; path = ../../Source/Processors/Channel.cpp; sourceTree = SOURCE_ROOT; }; 9BE34B4DECBF4EBFD27C9792 /* juce_AudioIODeviceType.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioIODeviceType.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp; sourceTree = SOURCE_ROOT; }; 9C21DBFB38865E5AFE367C6F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; - 9C39C584DA6F507E773687EE /* ReferenceNodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ReferenceNodeEditor.cpp; path = ../../Source/Processors/Editors/ReferenceNodeEditor.cpp; sourceTree = SOURCE_ROOT; }; 9C4342320D2DD65E2BD6351C /* juce_ToolbarButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ToolbarButton.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp; sourceTree = SOURCE_ROOT; }; 9C5F99C38CC703FBB871401A /* juce_ReverbAudioSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ReverbAudioSource.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp; sourceTree = SOURCE_ROOT; }; 9C701D5A7298B83CE05ECEBB /* juce_TextEditorKeyMapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextEditorKeyMapper.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h; sourceTree = SOURCE_ROOT; }; + 9C736D7B85CCD9EC40C5D0AF /* PoleFilter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PoleFilter.cpp; path = ../../Source/Processors/Dsp/PoleFilter.cpp; sourceTree = SOURCE_ROOT; }; 9C864C7DBAF37CD0719996A9 /* juce_FileBrowserListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileBrowserListener.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h; sourceTree = SOURCE_ROOT; }; 9C96B0CBFF3D34885BB8B020 /* juce_FileDragAndDropTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileDragAndDropTarget.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h; sourceTree = SOURCE_ROOT; }; - 9CEDA04DB321755AF74D6FAF /* ChebyshevII.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChebyshevII.h; path = ../../Source/Dsp/ChebyshevII.h; sourceTree = SOURCE_ROOT; }; 9D050A509BEB9E3879DA35C6 /* ostrich.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = ostrich.ttf; path = ../../Resources/Fonts/ostrich.ttf; sourceTree = SOURCE_ROOT; }; 9D13E0F774807670270F4790 /* juce_Drawable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Drawable.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_Drawable.h; sourceTree = SOURCE_ROOT; }; 9D2510B5E6180456C53A455E /* juce_ComboBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComboBox.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ComboBox.cpp; sourceTree = SOURCE_ROOT; }; - 9D78F50147005EDB0E89E2B4 /* FPGAOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FPGAOutput.cpp; path = ../../Source/Processors/FPGAOutput.cpp; sourceTree = SOURCE_ROOT; }; 9EAAE3C0BFF3D753C375A5FC /* juce_DrawableImage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableImage.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp; sourceTree = SOURCE_ROOT; }; + 9EB2B238943CCC32B587881C /* MessageCenterEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MessageCenterEditor.h; path = ../../Source/Processors/MessageCenter/MessageCenterEditor.h; sourceTree = SOURCE_ROOT; }; 9EC1C0A21FDCB81BE0EA60EA /* juce_ApplicationBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationBase.h; path = ../../JuceLibraryCode/modules/juce_events/messages/juce_ApplicationBase.h; sourceTree = SOURCE_ROOT; }; 9F2853D1A12B686BE3BA2C61 /* juce_OpenGLImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGLImage.h; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLImage.h; sourceTree = SOURCE_ROOT; }; 9F2BCD132F453B9D9EF09F15 /* RadioButtons-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-01.png"; path = "../../Resources/Images/Icons/RadioButtons-01.png"; sourceTree = SOURCE_ROOT; }; @@ -878,22 +906,18 @@ 9F845E950F19FEC4E6C88F91 /* juce_Typeface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Typeface.h; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Typeface.h; sourceTree = SOURCE_ROOT; }; 9FC97A1CFD250F7215B4E397 /* juce_mac_AudioCDBurner.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_AudioCDBurner.mm; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm; sourceTree = SOURCE_ROOT; }; 9FDCF1E2B4651E58240400B9 /* juce_TextEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextEditor.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TextEditor.h; sourceTree = SOURCE_ROOT; }; - 9FFD9560522567A033226BD7 /* PhaseDetector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PhaseDetector.cpp; path = ../../Source/Processors/PhaseDetector.cpp; sourceTree = SOURCE_ROOT; }; A0D768F1B92568344DAC9F0B /* juce_win32_Fonts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Fonts.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_win32_Fonts.cpp; sourceTree = SOURCE_ROOT; }; - A0E3B98412D88921BB0AA58E /* AudioEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioEditor.h; path = ../../Source/Processors/Editors/AudioEditor.h; sourceTree = SOURCE_ROOT; }; A15596CDCC27B86FC070D7FA /* juce_Desktop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Desktop.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/components/juce_Desktop.cpp; sourceTree = SOURCE_ROOT; }; + A166A3013C7AF1BCCA050367 /* EcubeThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EcubeThread.h; path = ../../Source/Processors/DataThreads/EcubeThread.h; sourceTree = SOURCE_ROOT; }; A17E8162EC7A0E513DDEB23C /* juce_PluginDescription.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PluginDescription.cpp; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_PluginDescription.cpp; sourceTree = SOURCE_ROOT; }; + A186E03EC7A6A7E657F38300 /* EcubeDialogComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EcubeDialogComponent.h; path = ../../Source/UI/EcubeDialogComponent.h; sourceTree = SOURCE_ROOT; }; A19C4BB4BD69D4351B344A17 /* juce_MenuBarComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MenuBarComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp; sourceTree = SOURCE_ROOT; }; - A234B2D091071A1B710E884B /* ChannelMappingNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChannelMappingNode.h; path = ../../Source/Processors/ChannelMappingNode.h; sourceTree = SOURCE_ROOT; }; - A252FE4E6A360CBC4AF694B3 /* SpikeDetectorEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDetectorEditor.cpp; path = ../../Source/Processors/Editors/SpikeDetectorEditor.cpp; sourceTree = SOURCE_ROOT; }; A32D4E65A434F4D3E7F5F553 /* juce_Initialisation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Initialisation.h; path = ../../JuceLibraryCode/modules/juce_events/messages/juce_Initialisation.h; sourceTree = SOURCE_ROOT; }; A3B6D091280930A016DF8FDA /* juce_OpenGLContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGLContext.h; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLContext.h; sourceTree = SOURCE_ROOT; }; A3CAB6B56641ED68D9784348 /* PipelineA-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "PipelineA-01.png"; path = "../../Resources/Images/Buttons/PipelineA-01.png"; sourceTree = SOURCE_ROOT; }; A3FB0EA0264580F6B00D993B /* RHD2000Thread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RHD2000Thread.cpp; path = ../../Source/Processors/DataThreads/RHD2000Thread.cpp; sourceTree = SOURCE_ROOT; }; A41AEA0D3ACB2B1E6713AE08 /* juce_OpenGLGraphicsContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGLGraphicsContext.h; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h; sourceTree = SOURCE_ROOT; }; - A41C5A4CD5CF8EEFF993A8B1 /* MathSupplement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MathSupplement.h; path = ../../Source/Dsp/MathSupplement.h; sourceTree = SOURCE_ROOT; }; A42CD7198BAEB3111295C18E /* juce_MouseInactivityDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseInactivityDetector.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h; sourceTree = SOURCE_ROOT; }; - A4E2CAAF556D557B24182414 /* RecordNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RecordNode.cpp; path = ../../Source/Processors/RecordNode.cpp; sourceTree = SOURCE_ROOT; }; A4FC82A8339698B6C1AC5F18 /* juce_LookAndFeel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LookAndFeel.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h; sourceTree = SOURCE_ROOT; }; A512C5B237A77EF6FB8E11A0 /* BinaryData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = SOURCE_ROOT; }; A540869F28EE158A0A348C28 /* juce_ImageConvolutionKernel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageConvolutionKernel.h; path = ../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageConvolutionKernel.h; sourceTree = SOURCE_ROOT; }; @@ -907,24 +931,25 @@ A764EF4F46F472715B250E41 /* muteon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = muteon.png; path = ../../Resources/Images/Buttons/muteon.png; sourceTree = SOURCE_ROOT; }; A769611E9CBFC127AF5AFB0D /* juce_Time.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Time.cpp; path = ../../JuceLibraryCode/modules/juce_core/time/juce_Time.cpp; sourceTree = SOURCE_ROOT; }; A7875D5F8D2A632C99791002 /* juce_ComboBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComboBox.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ComboBox.h; sourceTree = SOURCE_ROOT; }; - A7D4C9E3ED3763847C087F46 /* SpikeDisplayCanvas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayCanvas.cpp; path = ../../Source/Processors/Visualization/SpikeDisplayCanvas.cpp; sourceTree = SOURCE_ROOT; }; + A7BF9312D81FF5DCEAB8AC47 /* SourceNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SourceNode.h; path = ../../Source/Processors/SourceNode/SourceNode.h; sourceTree = SOURCE_ROOT; }; A7FE538FF09AC8A58DE8F1BD /* RadioButtons_selected-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-02.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-02.png"; sourceTree = SOURCE_ROOT; }; A8B4D80D55E48F50809DC5E4 /* juce_ios_Windowing.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_ios_Windowing.mm; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_ios_Windowing.mm; sourceTree = SOURCE_ROOT; }; A8FCE8FB1D47A14A8C65C35E /* juce_AnimatedPosition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AnimatedPosition.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_AnimatedPosition.h; sourceTree = SOURCE_ROOT; }; A93F302B8D91A997F54D231B /* juce_MarkerList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MarkerList.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_MarkerList.h; sourceTree = SOURCE_ROOT; }; A950BD747F318BF6D555CB06 /* juce_mac_Files.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_Files.mm; path = ../../JuceLibraryCode/modules/juce_core/native/juce_mac_Files.mm; sourceTree = SOURCE_ROOT; }; - A95D898F0998F4609E992B5F /* Elliptic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Elliptic.h; path = ../../Source/Dsp/Elliptic.h; sourceTree = SOURCE_ROOT; }; - A98A22CF5F208ED6DBE08063 /* ResamplingNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ResamplingNode.cpp; path = ../../Source/Processors/ResamplingNode.cpp; sourceTree = SOURCE_ROOT; }; A9A0BC63EB466C75D1B9326A /* juce_MidiMessageCollector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MidiMessageCollector.h; path = ../../JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h; sourceTree = SOURCE_ROOT; }; A9F5A8F835A1A734DF7F6775 /* juce_ChoicePropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ChoicePropertyComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; AA3209223925B66A97AB4509 /* juce_TooltipClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TooltipClient.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_TooltipClient.h; sourceTree = SOURCE_ROOT; }; AA3DAC9A4A3FF9E7D279FB23 /* RadioButtons_selected-03.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-03.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-03.png"; sourceTree = SOURCE_ROOT; }; AA7F6609B897B9E134377A62 /* cpmono_light.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_light.otf; path = ../../Resources/Fonts/cpmono_light.otf; sourceTree = SOURCE_ROOT; }; + AAC6EC29963717E95428D7D2 /* SpikeDisplayCanvas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayCanvas.cpp; path = ../../Source/Processors/SpikeDisplayNode/SpikeDisplayCanvas.cpp; sourceTree = SOURCE_ROOT; }; AADBA8C0AD524CE677428AFF /* juce_GlowEffect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GlowEffect.h; path = ../../JuceLibraryCode/modules/juce_graphics/effects/juce_GlowEffect.h; sourceTree = SOURCE_ROOT; }; + AAF5C27D2EEDD254A3652717 /* Bessel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Bessel.h; path = ../../Source/Processors/Dsp/Bessel.h; sourceTree = SOURCE_ROOT; }; AB4C7059669AC385B02179C1 /* juce_FileLogger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileLogger.h; path = ../../JuceLibraryCode/modules/juce_core/logging/juce_FileLogger.h; sourceTree = SOURCE_ROOT; }; + AB4D72F040FF59BED08826EC /* FPGAOutputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FPGAOutputEditor.cpp; path = ../../Source/Processors/FPGAOutput/FPGAOutputEditor.cpp; sourceTree = SOURCE_ROOT; }; ABA3FCD5D762336535D56D94 /* juce_ScopedLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScopedLock.h; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_ScopedLock.h; sourceTree = SOURCE_ROOT; }; AC116E6590D49AB2EF19CB9E /* juce_OpenGLImage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_OpenGLImage.cpp; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLImage.cpp; sourceTree = SOURCE_ROOT; }; - AC2CFF4DA5CE431FCC628BA3 /* ChebyshevI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChebyshevI.cpp; path = ../../Source/Dsp/ChebyshevI.cpp; sourceTree = SOURCE_ROOT; }; + AC9E30922A14330704FB2573 /* SpikeDisplayNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayNode.cpp; path = ../../Source/Processors/SpikeDisplayNode/SpikeDisplayNode.cpp; sourceTree = SOURCE_ROOT; }; ACA28D2B1FECD2C57F0250A6 /* juce_DirectoryContentsDisplayComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DirectoryContentsDisplayComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h; sourceTree = SOURCE_ROOT; }; ACAE4A2D65AAC6A36DA9DBCF /* juce_OggVorbisAudioFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_OggVorbisAudioFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp; sourceTree = SOURCE_ROOT; }; ACCACAE59079FDECF799BE8B /* juce_ConnectedChildProcess.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ConnectedChildProcess.cpp; path = ../../JuceLibraryCode/modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp; sourceTree = SOURCE_ROOT; }; @@ -933,28 +958,30 @@ AD7D35FCD8CF66B6C393A7F7 /* juce_FileBrowserComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileBrowserComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h; sourceTree = SOURCE_ROOT; }; AD960F561259904BA68DDA73 /* juce_MemoryMappedFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MemoryMappedFile.h; path = ../../JuceLibraryCode/modules/juce_core/files/juce_MemoryMappedFile.h; sourceTree = SOURCE_ROOT; }; ADCB42E4C5641007A4B78025 /* SpikeObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeObject.h; path = ../../Source/Processors/Visualization/SpikeObject.h; sourceTree = SOURCE_ROOT; }; + ADCEA06868A5085B60487AC3 /* LfpTriggeredAverageEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpTriggeredAverageEditor.h; path = ../../Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.h; sourceTree = SOURCE_ROOT; }; AE1EA04666EAD34D0CA0373D /* juce_opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_opengl.h; path = ../../JuceLibraryCode/modules/juce_opengl/juce_opengl.h; sourceTree = SOURCE_ROOT; }; + AE1FC768C646A0EFEC3E3A11 /* SpikeDisplayNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayNode.h; path = ../../Source/Processors/SpikeDisplayNode/SpikeDisplayNode.h; sourceTree = SOURCE_ROOT; }; AE6786E4659DAC92F52E9FA3 /* juce_Toolbar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Toolbar.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Toolbar.h; sourceTree = SOURCE_ROOT; }; AE9359DBA841F88EF3DA9700 /* juce_FileSearchPath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileSearchPath.h; path = ../../JuceLibraryCode/modules/juce_core/files/juce_FileSearchPath.h; sourceTree = SOURCE_ROOT; }; AEC2DABFC0517B4BE0CD704C /* juce_mac_AudioCDReader.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_AudioCDReader.mm; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_AudioCDReader.mm; sourceTree = SOURCE_ROOT; }; AEF53FD0FBBFF5242EDD7032 /* juce_Viewport.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Viewport.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_Viewport.cpp; sourceTree = SOURCE_ROOT; }; + AEFC8A0A9A35F50E59FDE678 /* MessageCenterEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MessageCenterEditor.cpp; path = ../../Source/Processors/MessageCenter/MessageCenterEditor.cpp; sourceTree = SOURCE_ROOT; }; AF1F3010721A6B29062E4838 /* juce_LowLevelGraphicsContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LowLevelGraphicsContext.h; path = ../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h; sourceTree = SOURCE_ROOT; }; + AF28CAB9C7531EF7422602E1 /* EcubeDialogComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EcubeDialogComponent.cpp; path = ../../Source/UI/EcubeDialogComponent.cpp; sourceTree = SOURCE_ROOT; }; AF3E3AE70160C3392B237316 /* juce_mac_CoreAudio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_mac_CoreAudio.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp; sourceTree = SOURCE_ROOT; }; AF7106E30ED950436CCEC712 /* juce_freetype_Fonts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_freetype_Fonts.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_freetype_Fonts.cpp; sourceTree = SOURCE_ROOT; }; AF8ADA74003E96998A5E4404 /* juce_Typeface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Typeface.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Typeface.cpp; sourceTree = SOURCE_ROOT; }; AF8B1228A9FDFA27E5F19011 /* juce_StringRef.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StringRef.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_StringRef.h; sourceTree = SOURCE_ROOT; }; AFB684CE06F9256324EE0B4C /* juce_FillType.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FillType.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/colour/juce_FillType.cpp; sourceTree = SOURCE_ROOT; }; + AFBAE04615D379A18B133090 /* EcubeThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EcubeThread.cpp; path = ../../Source/Processors/DataThreads/EcubeThread.cpp; sourceTree = SOURCE_ROOT; }; AFE835E175F7159E1E7C6CC7 /* juce_CharacterFunctions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CharacterFunctions.cpp; path = ../../JuceLibraryCode/modules/juce_core/text/juce_CharacterFunctions.cpp; sourceTree = SOURCE_ROOT; }; B00A9C0BAD3AF9F48E36A38F /* juce_MouseListener.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseListener.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.cpp; sourceTree = SOURCE_ROOT; }; B021D393D0E2625741512320 /* juce_RenderingHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RenderingHelpers.h; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h; sourceTree = SOURCE_ROOT; }; B0397AECD24A88F159C2BA9A /* juce_XMLCodeTokeniser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_XMLCodeTokeniser.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h; sourceTree = SOURCE_ROOT; }; B04D87ED6AA4897B6CD3CCF6 /* AudioComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioComponent.cpp; path = ../../Source/Audio/AudioComponent.cpp; sourceTree = SOURCE_ROOT; }; B081687E52C6A5157CFCCB17 /* cpmono-black-serialized */ = {isa = PBXFileReference; lastKnownFileType = file; name = "cpmono-black-serialized"; path = "../../Resources/Fonts/cpmono-black-serialized"; sourceTree = SOURCE_ROOT; }; - B083B1375828610D55F12CF3 /* ChannelMappingEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChannelMappingEditor.cpp; path = ../../Source/Processors/Editors/ChannelMappingEditor.cpp; sourceTree = SOURCE_ROOT; }; B0A076D9536B6754F34E4606 /* juce_win32_ASIO.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_ASIO.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_ASIO.cpp; sourceTree = SOURCE_ROOT; }; B0DCDCB162FDBF972FA5B548 /* juce_mac_MessageManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_MessageManager.mm; path = ../../JuceLibraryCode/modules/juce_events/native/juce_mac_MessageManager.mm; sourceTree = SOURCE_ROOT; }; - B0E8FAD5AC445F612E3468B9 /* FilterNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterNode.cpp; path = ../../Source/Processors/FilterNode.cpp; sourceTree = SOURCE_ROOT; }; - B1082A8A306A1947F5B0E5FC /* Splitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Splitter.h; path = ../../Source/Processors/Utilities/Splitter.h; sourceTree = SOURCE_ROOT; }; B113BC1061788A9ECB1337C5 /* juce_OpenGLGraphicsContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_OpenGLGraphicsContext.cpp; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp; sourceTree = SOURCE_ROOT; }; B11E5B5E4483AF89E6DCBAB3 /* juce_ImageButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImageButton.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ImageButton.cpp; sourceTree = SOURCE_ROOT; }; B123E2F4439DAD65196A2A9D /* juce_ProgressBar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ProgressBar.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ProgressBar.cpp; sourceTree = SOURCE_ROOT; }; @@ -966,29 +993,34 @@ B1ECBE9C48227CBDB16E3702 /* juce_ShapeButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ShapeButton.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp; sourceTree = SOURCE_ROOT; }; B2017626F9A05C8C0EBE9B7E /* juce_MD5.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MD5.cpp; path = ../../JuceLibraryCode/modules/juce_cryptography/hashing/juce_MD5.cpp; sourceTree = SOURCE_ROOT; }; B20469D88488F0809126CC80 /* juce_audio_processors.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_audio_processors.mm; path = ../../JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.mm; sourceTree = SOURCE_ROOT; }; + B207877BD3DC2A555E51ADD8 /* State.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = State.h; path = ../../Source/Processors/Dsp/State.h; sourceTree = SOURCE_ROOT; }; B2241E3C5C9F93389586F357 /* juce_DirectoryIterator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DirectoryIterator.h; path = ../../JuceLibraryCode/modules/juce_core/files/juce_DirectoryIterator.h; sourceTree = SOURCE_ROOT; }; B23E6EBB5F99CF7FC72FAC4E /* VisualizerEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VisualizerEditor.h; path = ../../Source/Processors/Editors/VisualizerEditor.h; sourceTree = SOURCE_ROOT; }; B24098EC4FD79D5EDC9383EC /* juce_Initialisation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Initialisation.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/application/juce_Initialisation.h; sourceTree = SOURCE_ROOT; }; - B27F558F42AC78F0E564B5AF /* AudioNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioNode.cpp; path = ../../Source/Processors/AudioNode.cpp; sourceTree = SOURCE_ROOT; }; + B25949076F9BB831C5862415 /* WiFiOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WiFiOutput.cpp; path = ../../Source/Processors/WiFiOutput/WiFiOutput.cpp; sourceTree = SOURCE_ROOT; }; B2EF409A1F459E964756BA7C /* juce_FileInputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileInputStream.cpp; path = ../../JuceLibraryCode/modules/juce_core/files/juce_FileInputStream.cpp; sourceTree = SOURCE_ROOT; }; + B2F72769CF14BD7F882E9542 /* LfpDisplayNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayNode.h; path = ../../Source/Processors/LfpDisplayNode/LfpDisplayNode.h; sourceTree = SOURCE_ROOT; }; B2FA9CC4754E136F22281176 /* juce_ImageEffectFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageEffectFilter.h; path = ../../JuceLibraryCode/modules/juce_graphics/effects/juce_ImageEffectFilter.h; sourceTree = SOURCE_ROOT; }; B3BAC48D01C49D8727D08097 /* juce_ListBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ListBox.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ListBox.cpp; sourceTree = SOURCE_ROOT; }; + B410FE6CF1A561A1648343D6 /* ArduinoOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ArduinoOutput.h; path = ../../Source/Processors/ArduinoOutput/ArduinoOutput.h; sourceTree = SOURCE_ROOT; }; B43C27BEC3AB681389FC5FC5 /* juce_RelativeCoordinate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeCoordinate.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h; sourceTree = SOURCE_ROOT; }; - B47B3368AA1A182B0CA1AB26 /* Butterworth.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Butterworth.cpp; path = ../../Source/Dsp/Butterworth.cpp; sourceTree = SOURCE_ROOT; }; B4C52FC94D6C680C33ED85C9 /* juce_File.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_File.cpp; path = ../../JuceLibraryCode/modules/juce_core/files/juce_File.cpp; sourceTree = SOURCE_ROOT; }; B4F0C0B262654C4782B5AC49 /* juce_FileChooserDialogBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileChooserDialogBox.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h; sourceTree = SOURCE_ROOT; }; + B574136FEE7957F7439CB346 /* ResamplingNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ResamplingNode.h; path = ../../Source/Processors/ResamplingNode/ResamplingNode.h; sourceTree = SOURCE_ROOT; }; B5ADA0C1BDBFAE2A2F8ECB48 /* juce_EdgeTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_EdgeTable.h; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_EdgeTable.h; sourceTree = SOURCE_ROOT; }; B5B417E4196236A2CDE7F0CF /* juce_AudioFormatManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioFormatManager.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatManager.cpp; sourceTree = SOURCE_ROOT; }; + B5D805B691B1C38D959F6B54 /* SourceNodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SourceNodeEditor.h; path = ../../Source/Processors/SourceNode/SourceNodeEditor.h; sourceTree = SOURCE_ROOT; }; B5E8A19FF91BEAD02C63E05B /* juce_LowLevelGraphicsPostScriptRenderer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LowLevelGraphicsPostScriptRenderer.h; path = ../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h; sourceTree = SOURCE_ROOT; }; B5FBD4DBD2CFE0FFF457D7F6 /* juce_ReferenceCountedArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ReferenceCountedArray.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_ReferenceCountedArray.h; sourceTree = SOURCE_ROOT; }; B60D02B5BF564ABC88841B1F /* juce_TableHeaderComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TableHeaderComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h; sourceTree = SOURCE_ROOT; }; B64193A23B69D4A88CDEDD0C /* juce_MidiOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MidiOutput.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp; sourceTree = SOURCE_ROOT; }; B64893F699A10B03AA4AFF6B /* juce_CharPointer_ASCII.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharPointer_ASCII.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_CharPointer_ASCII.h; sourceTree = SOURCE_ROOT; }; B6567CAE2B538E79E7DA814C /* juce_ThreadWithProgressWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ThreadWithProgressWindow.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp; sourceTree = SOURCE_ROOT; }; + B657AEAFB3404A5CB270C413 /* RecordNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RecordNode.h; path = ../../Source/Processors/RecordNode/RecordNode.h; sourceTree = SOURCE_ROOT; }; + B66B8CFF619CBF2D66F031E3 /* SpikeSorterCanvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeSorterCanvas.h; path = ../../Source/Processors/SpikeSorter/SpikeSorterCanvas.h; sourceTree = SOURCE_ROOT; }; B674DCA2C2A6AF6B58AA7820 /* juce_ComponentAnimator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentAnimator.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp; sourceTree = SOURCE_ROOT; }; B678CFC6B378A58834D2E41F /* juce_LowLevelGraphicsPostScriptRenderer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LowLevelGraphicsPostScriptRenderer.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp; sourceTree = SOURCE_ROOT; }; - B70D836E0756C3D4EE8E20F2 /* SpikeDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDetector.h; path = ../../Source/Processors/SpikeDetector.h; sourceTree = SOURCE_ROOT; }; - B767A249792EB15A87054409 /* ChebyshevII.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChebyshevII.cpp; path = ../../Source/Dsp/ChebyshevII.cpp; sourceTree = SOURCE_ROOT; }; + B695B24906116ADEFC9D9B5C /* ProcessorGraph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ProcessorGraph.h; path = ../../Source/Processors/ProcessorGraph/ProcessorGraph.h; sourceTree = SOURCE_ROOT; }; B7BEB7779860FE877E4D1BC8 /* juce_TextDiff.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TextDiff.cpp; path = ../../JuceLibraryCode/modules/juce_core/text/juce_TextDiff.cpp; sourceTree = SOURCE_ROOT; }; B7D848E4F85AE11FDE4D164D /* juce_linux_AudioCDReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_AudioCDReader.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_AudioCDReader.cpp; sourceTree = SOURCE_ROOT; }; B83EBFAE6306941F79044523 /* juce_DirectoryContentsDisplayComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DirectoryContentsDisplayComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp; sourceTree = SOURCE_ROOT; }; @@ -996,36 +1028,38 @@ B87C1BD13762817BE27DC2F7 /* juce_FillType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FillType.h; path = ../../JuceLibraryCode/modules/juce_graphics/colour/juce_FillType.h; sourceTree = SOURCE_ROOT; }; B8A9063181FEE1920095F824 /* juce_ChangeBroadcaster.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChangeBroadcaster.h; path = ../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeBroadcaster.h; sourceTree = SOURCE_ROOT; }; B8D19858CC01BB5F7C35ED58 /* juce_XmlDocument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_XmlDocument.cpp; path = ../../JuceLibraryCode/modules/juce_core/xml/juce_XmlDocument.cpp; sourceTree = SOURCE_ROOT; }; - B917780A75945062761B6945 /* WiFiOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WiFiOutput.h; path = ../../Source/Processors/WiFiOutput.h; sourceTree = SOURCE_ROOT; }; + B9068FF0373FA8321C33C42C /* Splitter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Splitter.cpp; path = ../../Source/Processors/Splitter/Splitter.cpp; sourceTree = SOURCE_ROOT; }; B93B8666F8AF2E5D2E851B1C /* juce_VSTPluginFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_VSTPluginFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp; sourceTree = SOURCE_ROOT; }; B9E2607F1605D308CB331FCC /* juce_StringPairArray.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_StringPairArray.cpp; path = ../../JuceLibraryCode/modules/juce_core/text/juce_StringPairArray.cpp; sourceTree = SOURCE_ROOT; }; BA03776682290FF1AF4C0106 /* juce_PluginDescription.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PluginDescription.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_PluginDescription.h; sourceTree = SOURCE_ROOT; }; BA09F5CDB1C01E0FC153DB8E /* juce_NativeMessageBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NativeMessageBox.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_NativeMessageBox.h; sourceTree = SOURCE_ROOT; }; - BA2923571505AD47CA1EF878 /* WiFiOutputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WiFiOutputEditor.h; path = ../../Source/Processors/Editors/WiFiOutputEditor.h; sourceTree = SOURCE_ROOT; }; + BA3C61B41A55C23959AA57A3 /* Filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Filter.h; path = ../../Source/Processors/Dsp/Filter.h; sourceTree = SOURCE_ROOT; }; BA422CC894B825834A0C5479 /* GraphViewer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GraphViewer.h; path = ../../Source/UI/GraphViewer.h; sourceTree = SOURCE_ROOT; }; + BAA5B3AD1A27F8C4D37A6869 /* MergerEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MergerEditor.cpp; path = ../../Source/Processors/Merger/MergerEditor.cpp; sourceTree = SOURCE_ROOT; }; BABBEE3876B90C8A57C3074D /* juce_ComponentAnimator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentAnimator.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentAnimator.h; sourceTree = SOURCE_ROOT; }; BAE93A5EEC37D7B4C793BFA2 /* juce_QuickTimeAudioFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_QuickTimeAudioFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp; sourceTree = SOURCE_ROOT; }; BB0BB31575E1377F0C560D53 /* juce_RelativeCoordinate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeCoordinate.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp; sourceTree = SOURCE_ROOT; }; BB26BA9CFAE8C836251E8EAF /* MainWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainWindow.h; path = ../../Source/MainWindow.h; sourceTree = SOURCE_ROOT; }; BBC386B5A369262583AD4DDA /* juce_QuickTimeAudioFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_QuickTimeAudioFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.h; sourceTree = SOURCE_ROOT; }; - BBCDE855BD0A58D3779D96A8 /* RHD2000Editor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RHD2000Editor.h; path = ../../Source/Processors/Editors/RHD2000Editor.h; sourceTree = SOURCE_ROOT; }; - BBD9C2AED6F500D090069007 /* ReferenceNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ReferenceNode.cpp; path = ../../Source/Processors/ReferenceNode.cpp; sourceTree = SOURCE_ROOT; }; BBDFB328C3D5FC72A0446E6A /* juce_graphics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_graphics.mm; path = ../../JuceLibraryCode/modules/juce_graphics/juce_graphics.mm; sourceTree = SOURCE_ROOT; }; BBE1DB78E35135B41537DCB5 /* RecentFilesMenuTemplate.nib */ = {isa = PBXFileReference; lastKnownFileType = file.nib; path = RecentFilesMenuTemplate.nib; sourceTree = SOURCE_ROOT; }; BBF5345C0570D87C01A73FF9 /* noise_wave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = noise_wave.png; path = ../../Resources/Images/Icons/noise_wave.png; sourceTree = SOURCE_ROOT; }; BC06C1E8052799F4696101C3 /* juce_mac_SystemStats.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_SystemStats.mm; path = ../../JuceLibraryCode/modules/juce_core/native/juce_mac_SystemStats.mm; sourceTree = SOURCE_ROOT; }; - BC3B7E4E25505D9044BFACC7 /* SpikeDetector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDetector.cpp; path = ../../Source/Processors/SpikeDetector.cpp; sourceTree = SOURCE_ROOT; }; + BC1543B1F822FEEDCB9AC26D /* MessageCenter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MessageCenter.cpp; path = ../../Source/Processors/MessageCenter/MessageCenter.cpp; sourceTree = SOURCE_ROOT; }; BC953E395B22FB1D305E483E /* juce_MACAddress.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MACAddress.h; path = ../../JuceLibraryCode/modules/juce_core/network/juce_MACAddress.h; sourceTree = SOURCE_ROOT; }; + BCB5B6CEF112FC911B90E6E2 /* Design.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Design.cpp; path = ../../Source/Processors/Dsp/Design.cpp; sourceTree = SOURCE_ROOT; }; BCB6A6D5A0C1417D74C29632 /* juce_win32_Files.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Files.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_win32_Files.cpp; sourceTree = SOURCE_ROOT; }; BCBBF8764A2101CD0E91DB5D /* juce_DropShadower.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DropShadower.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_DropShadower.h; sourceTree = SOURCE_ROOT; }; BD1D02C70CCE095217581A5F /* juce_ios_MessageManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_ios_MessageManager.mm; path = ../../JuceLibraryCode/modules/juce_events/native/juce_ios_MessageManager.mm; sourceTree = SOURCE_ROOT; }; BD59A961F87AB628777894DC /* juce_AudioThumbnailCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioThumbnailCache.cpp; path = ../../JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp; sourceTree = SOURCE_ROOT; }; + BD6FDA7B037CF3535431BFC8 /* SmoothedFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SmoothedFilter.h; path = ../../Source/Processors/Dsp/SmoothedFilter.h; sourceTree = SOURCE_ROOT; }; BDFF189EC742274DD2629196 /* juce_RectangleList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RectangleList.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_RectangleList.cpp; sourceTree = SOURCE_ROOT; }; BE506F381B90833512348968 /* juce_FloatVectorOperations.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FloatVectorOperations.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp; sourceTree = SOURCE_ROOT; }; BEC4B69320BE492526794DFB /* wifi.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = wifi.png; path = ../../Resources/Images/Icons/wifi.png; sourceTree = SOURCE_ROOT; }; BF56AD021ABB8D8B64982FDB /* juce_ContainerDeletePolicy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ContainerDeletePolicy.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_ContainerDeletePolicy.h; sourceTree = SOURCE_ROOT; }; BF647E1FAE73208AC29C14F7 /* juce_Sampler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Sampler.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/sampler/juce_Sampler.cpp; sourceTree = SOURCE_ROOT; }; BF8B07C8BC86002C3DC94DEE /* juce_MemoryOutputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MemoryOutputStream.h; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryOutputStream.h; sourceTree = SOURCE_ROOT; }; + BF8C15407347975836BFA88F /* FileReaderEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FileReaderEditor.h; path = ../../Source/Processors/FileReader/FileReaderEditor.h; sourceTree = SOURCE_ROOT; }; BF9B6B0B73FF87595307D858 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_gui_basics/juce_module_info; sourceTree = SOURCE_ROOT; }; BFF368651E3CEE5A900391A6 /* square_wave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = square_wave.png; path = ../../Resources/Images/Icons/square_wave.png; sourceTree = SOURCE_ROOT; }; C055D09224D84121A3EBB29F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; @@ -1035,30 +1069,28 @@ C0C6335FEE0844872FDF4EE2 /* juce_Memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Memory.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_Memory.h; sourceTree = SOURCE_ROOT; }; C10DC7C6E887B4EAAB8EDF38 /* juce_ChoicePropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChoicePropertyComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h; sourceTree = SOURCE_ROOT; }; C1435AB0105CDC29A3124E4F /* juce_CustomTypeface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CustomTypeface.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_CustomTypeface.cpp; sourceTree = SOURCE_ROOT; }; + C15024C101ECE85FDDCD770D /* AudioEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioEditor.h; path = ../../Source/Processors/AudioNode/AudioEditor.h; sourceTree = SOURCE_ROOT; }; C16065CD5A8054262B81C1A3 /* juce_cryptography.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_cryptography.h; path = ../../JuceLibraryCode/modules/juce_cryptography/juce_cryptography.h; sourceTree = SOURCE_ROOT; }; C17E85281A455245543930E5 /* juce_mac_NSViewComponentPeer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_NSViewComponentPeer.mm; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm; sourceTree = SOURCE_ROOT; }; C195559D311BAB51CFB545BA /* juce_MultiDocumentPanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MultiDocumentPanel.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp; sourceTree = SOURCE_ROOT; }; - C1CB526B75E406851FA918C6 /* State.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = State.cpp; path = ../../Source/Dsp/State.cpp; sourceTree = SOURCE_ROOT; }; + C1B540E49C0EBA03ACDBBDFB /* RBJ.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RBJ.h; path = ../../Source/Processors/Dsp/RBJ.h; sourceTree = SOURCE_ROOT; }; C1E1CCE5796B40E0A45FB021 /* juce_AudioThumbnail.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioThumbnail.h; path = ../../JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnail.h; sourceTree = SOURCE_ROOT; }; C209C7633D01E525231EE894 /* juce_GlyphArrangement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GlyphArrangement.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_GlyphArrangement.cpp; sourceTree = SOURCE_ROOT; }; C2746A86EC16D3EA9FAC2C1D /* juce_XmlElement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_XmlElement.cpp; path = ../../JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.cpp; sourceTree = SOURCE_ROOT; }; - C29BC68B2721471F32906FEB /* ResamplingNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ResamplingNode.h; path = ../../Source/Processors/ResamplingNode.h; sourceTree = SOURCE_ROOT; }; C29E664781AA2396C8D59543 /* juce_events.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_events.mm; path = ../../JuceLibraryCode/modules/juce_events/juce_events.mm; sourceTree = SOURCE_ROOT; }; + C2CB484954A536E782B4A8E7 /* SpikeDisplayCanvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayCanvas.h; path = ../../Source/Processors/SpikeDisplayNode/SpikeDisplayCanvas.h; sourceTree = SOURCE_ROOT; }; C2D1409D20E154E43569C725 /* juce_ImagePreviewComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImagePreviewComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp; sourceTree = SOURCE_ROOT; }; C2F9D279FCC5C4AD56A0C1DF /* juce_Decibels.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Decibels.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/effects/juce_Decibels.h; sourceTree = SOURCE_ROOT; }; - C39772F796D85E8FE98474D5 /* Filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Filter.h; path = ../../Source/Dsp/Filter.h; sourceTree = SOURCE_ROOT; }; - C3BD84D9B090F98DD09F5958 /* Params.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Params.h; path = ../../Source/Dsp/Params.h; sourceTree = SOURCE_ROOT; }; C41504F388D0B181B003B627 /* juce_RelativePoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativePoint.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePoint.h; sourceTree = SOURCE_ROOT; }; C43608FF5E25460A8346CF43 /* juce_Javascript.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Javascript.cpp; path = ../../JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.cpp; sourceTree = SOURCE_ROOT; }; C446923C1950EB5BE5E67F15 /* juce_TargetPlatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TargetPlatform.h; path = ../../JuceLibraryCode/modules/juce_core/system/juce_TargetPlatform.h; sourceTree = SOURCE_ROOT; }; C454DFC77F19AB044372610E /* juce_MarkerList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MarkerList.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_MarkerList.cpp; sourceTree = SOURCE_ROOT; }; - C4B0DF8094C90543A65E03E3 /* Legendre.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Legendre.cpp; path = ../../Source/Dsp/Legendre.cpp; sourceTree = SOURCE_ROOT; }; C51CD15B311D0AAC08D0B908 /* ImageIcon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ImageIcon.h; path = ../../Source/Processors/Editors/ImageIcon.h; sourceTree = SOURCE_ROOT; }; C5287F057A6A88BC33D5498A /* juce_DrawableComposite.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableComposite.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp; sourceTree = SOURCE_ROOT; }; C54760E4888674CF3CF022E6 /* juce_AudioProcessor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioProcessor.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessor.h; sourceTree = SOURCE_ROOT; }; - C5785E58E6F915165729EF16 /* RecordControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RecordControl.h; path = ../../Source/Processors/Utilities/RecordControl.h; sourceTree = SOURCE_ROOT; }; + C5654EAA7B65445CF1340983 /* GenericProcessor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GenericProcessor.cpp; path = ../../Source/Processors/GenericProcessor/GenericProcessor.cpp; sourceTree = SOURCE_ROOT; }; C59B01C8DB5B3B4773032E12 /* CustomArrowButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CustomArrowButton.h; path = ../../Source/UI/CustomArrowButton.h; sourceTree = SOURCE_ROOT; }; - C5ABE6BDCA91410BA92A7BD9 /* ResamplingNodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ResamplingNodeEditor.cpp; path = ../../Source/Processors/Editors/ResamplingNodeEditor.cpp; sourceTree = SOURCE_ROOT; }; + C5C843AC83A36BE87E3F97F8 /* EventDetector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventDetector.cpp; path = ../../Source/Processors/EventDetector/EventDetector.cpp; sourceTree = SOURCE_ROOT; }; C5D0E0996D20BEEEDBFD64FA /* juce_ValueTree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ValueTree.h; path = ../../JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTree.h; sourceTree = SOURCE_ROOT; }; C5D9C53AE4AE414244E1E19A /* muteoff.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = muteoff.png; path = ../../Resources/Images/Buttons/muteoff.png; sourceTree = SOURCE_ROOT; }; C5F9A0F8EB81AC15D9BDD61F /* juce_OpenGLFrameBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGLFrameBuffer.h; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h; sourceTree = SOURCE_ROOT; }; @@ -1069,33 +1101,35 @@ C6BDC4DAD5B40321DA67462A /* juce_ApplicationCommandTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationCommandTarget.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h; sourceTree = SOURCE_ROOT; }; C6E19D3864B40A52BCC49315 /* juce_ModifierKeys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ModifierKeys.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_ModifierKeys.h; sourceTree = SOURCE_ROOT; }; C74399C81B1A0552CC52093E /* juce_GenericAudioProcessorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GenericAudioProcessorEditor.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h; sourceTree = SOURCE_ROOT; }; - C79249376E3FDF10615E16EA /* WiFiOutputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WiFiOutputEditor.cpp; path = ../../Source/Processors/Editors/WiFiOutputEditor.cpp; sourceTree = SOURCE_ROOT; }; C7A68BAFB04A7D5FD81FA82B /* juce_PropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PropertyComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.h; sourceTree = SOURCE_ROOT; }; C7A76C0D1B3DC4A1F059E59B /* juce_Label.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Label.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Label.h; sourceTree = SOURCE_ROOT; }; C7B93385C1A520EC76C62DEE /* juce_LookAndFeel_V2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LookAndFeel_V2.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h; sourceTree = SOURCE_ROOT; }; C7CA628FE3E1E3D16B24E059 /* juce_android_Threads.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Threads.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_android_Threads.cpp; sourceTree = SOURCE_ROOT; }; + C7D36423459E79F3F462A421 /* EcubeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EcubeEditor.h; path = ../../Source/Processors/DataThreads/EcubeEditor.h; sourceTree = SOURCE_ROOT; }; C844D1792A91BE2D8808CB14 /* juce_MessageManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MessageManager.h; path = ../../JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.h; sourceTree = SOURCE_ROOT; }; C868329EBC1BBA606AB2EB88 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; C916444FD4BFB79D4DE9FCAF /* juce_AttributedString.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AttributedString.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_AttributedString.cpp; sourceTree = SOURCE_ROOT; }; C98D4FF283E598244E89CD83 /* juce_TextDiff.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextDiff.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_TextDiff.h; sourceTree = SOURCE_ROOT; }; CA09B0483969444C7CD106DC /* juce_mac_Fonts.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_Fonts.mm; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_Fonts.mm; sourceTree = SOURCE_ROOT; }; + CA50A6F43BD78D01A8BE974B /* Merger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Merger.h; path = ../../Source/Processors/Merger/Merger.h; sourceTree = SOURCE_ROOT; }; CAA3B9396EA62166234DAEF1 /* VisualizerEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = VisualizerEditor.cpp; path = ../../Source/Processors/Editors/VisualizerEditor.cpp; sourceTree = SOURCE_ROOT; }; CB2C4FD47184B2FE84408CAD /* RadioButtons_neutral-03.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-03.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-03.png"; sourceTree = SOURCE_ROOT; }; + CB5C14E82DE06F767EAD62F9 /* Biquad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Biquad.cpp; path = ../../Source/Processors/Dsp/Biquad.cpp; sourceTree = SOURCE_ROOT; }; CC35C78D5B446ABF57DDDAE0 /* juce_ImageFileFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageFileFormat.h; path = ../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageFileFormat.h; sourceTree = SOURCE_ROOT; }; CC42C4D4230BE4F1071CB2D3 /* juce_ResizableEdgeComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ResizableEdgeComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h; sourceTree = SOURCE_ROOT; }; CC62E20B1189C697DD238810 /* juce_OpenGL_linux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGL_linux.h; path = ../../JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_linux.h; sourceTree = SOURCE_ROOT; }; - CCC20313AD0D0993F9EDD1B3 /* SplitterEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SplitterEditor.h; path = ../../Source/Processors/Editors/SplitterEditor.h; sourceTree = SOURCE_ROOT; }; - CD2370F8F4A44446558A08FB /* Parameter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Parameter.cpp; path = ../../Source/Processors/Parameter.cpp; sourceTree = SOURCE_ROOT; }; + CC9134D38EBEC67112CA7502 /* LfpTriggeredAverageCanvas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpTriggeredAverageCanvas.cpp; path = ../../Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageCanvas.cpp; sourceTree = SOURCE_ROOT; }; CD2E26CFD0DC7F6090E15A20 /* juce_Line.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Line.h; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Line.h; sourceTree = SOURCE_ROOT; }; CD41C1D09F6D73FA33993F45 /* juce_Desktop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Desktop.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/components/juce_Desktop.h; sourceTree = SOURCE_ROOT; }; CD492AC7B458FA6C321B9D0B /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_core/juce_module_info; sourceTree = SOURCE_ROOT; }; + CD657DBBDB4550C800F05D22 /* LfpDisplayCanvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayCanvas.h; path = ../../Source/Processors/LfpDisplayNode/LfpDisplayCanvas.h; sourceTree = SOURCE_ROOT; }; CD7E06ED47B243518F42DA49 /* MergerA-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "MergerA-02.png"; path = "../../Resources/Images/Buttons/MergerA-02.png"; sourceTree = SOURCE_ROOT; }; CD83E301AE42E6E3317D575D /* juce_TableHeaderComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TableHeaderComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp; sourceTree = SOURCE_ROOT; }; CDC18ABAFEF000C720CE8622 /* juce_CallOutBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CallOutBox.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.cpp; sourceTree = SOURCE_ROOT; }; CE2BD40797A6E7647FDBE736 /* juce_ColourSelector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ColourSelector.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_ColourSelector.cpp; sourceTree = SOURCE_ROOT; }; CF5BC8DB7D66C655DABA9129 /* juce_android_FileChooser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_FileChooser.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/native/juce_android_FileChooser.cpp; sourceTree = SOURCE_ROOT; }; CF758CB1E06DDA1AB7F5C9CC /* juce_events.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_events.h; path = ../../JuceLibraryCode/modules/juce_events/juce_events.h; sourceTree = SOURCE_ROOT; }; - CFB86C1F2A6076ADC36692AA /* Utilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Utilities.h; path = ../../Source/Dsp/Utilities.h; sourceTree = SOURCE_ROOT; }; + D0105584D551FED59203CC84 /* ChannelMappingEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChannelMappingEditor.cpp; path = ../../Source/Processors/ChannelMappingNode/ChannelMappingEditor.cpp; sourceTree = SOURCE_ROOT; }; D01254FA41688494C3CB0889 /* silkscreen.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = silkscreen.ttf; path = ../../Resources/Fonts/silkscreen.ttf; sourceTree = SOURCE_ROOT; }; D0247929128D618A2EB01D86 /* juce_OpenGLHelpers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_OpenGLHelpers.cpp; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp; sourceTree = SOURCE_ROOT; }; D056D7F6C8EA8A6BBCC5C092 /* juce_InputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InputStream.h; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_InputStream.h; sourceTree = SOURCE_ROOT; }; @@ -1103,10 +1137,11 @@ D070104F290813822697267B /* juce_LookAndFeel_V3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LookAndFeel_V3.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h; sourceTree = SOURCE_ROOT; }; D0D7CE266BD7CC5455926700 /* juce_AudioSourcePlayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioSourcePlayer.h; path = ../../JuceLibraryCode/modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h; sourceTree = SOURCE_ROOT; }; D0E568AD5445AF061317E01D /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_audio_formats/juce_module_info; sourceTree = SOURCE_ROOT; }; + D0F10367EBD3945780342A37 /* SpikeDetectorEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDetectorEditor.cpp; path = ../../Source/Processors/SpikeDetector/SpikeDetectorEditor.cpp; sourceTree = SOURCE_ROOT; }; D11BC618E53E6605B3A579E1 /* juce_MemoryBlock.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MemoryBlock.cpp; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_MemoryBlock.cpp; sourceTree = SOURCE_ROOT; }; - D128F31F18331117287F5EC5 /* ArduinoOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ArduinoOutput.h; path = ../../Source/Processors/ArduinoOutput.h; sourceTree = SOURCE_ROOT; }; D162391A46FF93093C328F9D /* juce_GZIPCompressorOutputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GZIPCompressorOutputStream.cpp; path = ../../JuceLibraryCode/modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp; sourceTree = SOURCE_ROOT; }; D171071934C8F7F925B0D113 /* juce_TableListBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TableListBox.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableListBox.cpp; sourceTree = SOURCE_ROOT; }; + D1C27DAA2DDCEF188DDC8C5E /* Cascade.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Cascade.h; path = ../../Source/Processors/Dsp/Cascade.h; sourceTree = SOURCE_ROOT; }; D1D8F82F848413581B274A5D /* juce_win32_CameraDevice.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_CameraDevice.cpp; path = ../../JuceLibraryCode/modules/juce_video/native/juce_win32_CameraDevice.cpp; sourceTree = SOURCE_ROOT; }; D1F9878B45ABC403F3749567 /* juce_FileBasedDocument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileBasedDocument.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp; sourceTree = SOURCE_ROOT; }; D22D3958949713747DAF59A3 /* juce_linux_SystemStats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_SystemStats.cpp; path = ../../JuceLibraryCode/modules/juce_core/native/juce_linux_SystemStats.cpp; sourceTree = SOURCE_ROOT; }; @@ -1116,16 +1151,18 @@ D30880F1F9F514CEEDB9F48B /* AppConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = SOURCE_ROOT; }; D357A886F6365DA33D639FF5 /* juce_mac_NSViewComponent.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_NSViewComponent.mm; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm; sourceTree = SOURCE_ROOT; }; D37099D2DE57F63ACF1AB4E1 /* juce_LookAndFeel_V1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LookAndFeel_V1.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h; sourceTree = SOURCE_ROOT; }; - D38E60AC4854B6E1EDE488EB /* ArduinoOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ArduinoOutput.cpp; path = ../../Source/Processors/ArduinoOutput.cpp; sourceTree = SOURCE_ROOT; }; D3AE8303545E28D793312F46 /* GenericEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GenericEditor.cpp; path = ../../Source/Processors/Editors/GenericEditor.cpp; sourceTree = SOURCE_ROOT; }; D41ED9ADBE3B27E185B2E3F3 /* RadioButtons_neutral-05.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-05.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-05.png"; sourceTree = SOURCE_ROOT; }; + D45EF9812FBC284BCB7EEB7C /* SpikeSorter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeSorter.cpp; path = ../../Source/Processors/SpikeSorter/SpikeSorter.cpp; sourceTree = SOURCE_ROOT; }; D48EB74E1B5AAC7846196B01 /* juce_linux_Fonts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Fonts.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_linux_Fonts.cpp; sourceTree = SOURCE_ROOT; }; D4B0BD47094D79AB6382228B /* juce_OpenGLTexture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGLTexture.h; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLTexture.h; sourceTree = SOURCE_ROOT; }; D4F94F0232F0CD426DFC44C5 /* juce_PreferencesPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PreferencesPanel.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_PreferencesPanel.h; sourceTree = SOURCE_ROOT; }; - D51315B4241B019BE43EE4F1 /* SplitterEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SplitterEditor.cpp; path = ../../Source/Processors/Editors/SplitterEditor.cpp; sourceTree = SOURCE_ROOT; }; + D50EA137CEA9654AA8AB3D4C /* SignalGenerator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SignalGenerator.h; path = ../../Source/Processors/SignalGenerator/SignalGenerator.h; sourceTree = SOURCE_ROOT; }; D51575B9AA7216CCE4B558E4 /* juce_TopLevelWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TopLevelWindow.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TopLevelWindow.h; sourceTree = SOURCE_ROOT; }; D55137DE3404D7DF2A1F50D0 /* juce_GIFLoader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GIFLoader.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/image_formats/juce_GIFLoader.cpp; sourceTree = SOURCE_ROOT; }; D5D6DAA3CFDD395096D2B072 /* juce_ReferenceCountedObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ReferenceCountedObject.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_ReferenceCountedObject.h; sourceTree = SOURCE_ROOT; }; + D5DC73F860143308ADF769C1 /* FileReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FileReader.h; path = ../../Source/Processors/FileReader/FileReader.h; sourceTree = SOURCE_ROOT; }; + D60B35D4E32DAE001056D4D5 /* ChebyshevI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChebyshevI.cpp; path = ../../Source/Processors/Dsp/ChebyshevI.cpp; sourceTree = SOURCE_ROOT; }; D60F42AEB8551E83215691C3 /* juce_ZipFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ZipFile.h; path = ../../JuceLibraryCode/modules/juce_core/zip/juce_ZipFile.h; sourceTree = SOURCE_ROOT; }; D679982E05B9510FE239D690 /* juce_OutputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_OutputStream.cpp; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_OutputStream.cpp; sourceTree = SOURCE_ROOT; }; D685CFEA6344360FBFC355B6 /* DiscRecording.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = System/Library/Frameworks/DiscRecording.framework; sourceTree = SDKROOT; }; @@ -1137,27 +1174,26 @@ D8A40F2BFBEC65019C867786 /* juce_Time.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Time.h; path = ../../JuceLibraryCode/modules/juce_core/time/juce_Time.h; sourceTree = SOURCE_ROOT; }; D8AA3ED11D45FACF74B5FC05 /* RadioButtons_neutral-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-01.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-01.png"; sourceTree = SOURCE_ROOT; }; D8AFDCC674A7514B7019EEA6 /* juce_DrawableButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableButton.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_DrawableButton.h; sourceTree = SOURCE_ROOT; }; - D8D895B3AD895C6E7FD446BF /* Custom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Custom.cpp; path = ../../Source/Dsp/Custom.cpp; sourceTree = SOURCE_ROOT; }; - D90290A0AA2C36CE757E46D5 /* FilterEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterEditor.cpp; path = ../../Source/Processors/Editors/FilterEditor.cpp; sourceTree = SOURCE_ROOT; }; D952A208CC8164F0B459EC9E /* juce_linux_WebBrowserComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_WebBrowserComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; D960588B732D973B82500E2D /* juce_AudioProcessorListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioProcessorListener.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorListener.h; sourceTree = SOURCE_ROOT; }; + D9B10885C9D93CEF580EF167 /* ReferenceNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ReferenceNode.cpp; path = ../../Source/Processors/ReferenceNode/ReferenceNode.cpp; sourceTree = SOURCE_ROOT; }; + D9BF6DA66C22FFF5C4D41991 /* LfpDisplayCanvas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayCanvas.cpp; path = ../../Source/Processors/LfpDisplayNode/LfpDisplayCanvas.cpp; sourceTree = SOURCE_ROOT; }; D9C9FCA6D705B72B80DB1142 /* juce_Socket.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Socket.cpp; path = ../../JuceLibraryCode/modules/juce_core/network/juce_Socket.cpp; sourceTree = SOURCE_ROOT; }; D9CB4CEC2C07346BE69262A0 /* RadioButtons_selected-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-01.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-01.png"; sourceTree = SOURCE_ROOT; }; DA0AE9F4A1DDC3555247216F /* IntanIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = IntanIcon.png; path = ../../Resources/Images/Icons/IntanIcon.png; sourceTree = SOURCE_ROOT; }; DA30BA6BF482A353393D5926 /* juce_RelativeRectangle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeRectangle.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp; sourceTree = SOURCE_ROOT; }; - DAA04A0FD47097893712B241 /* SpikeDisplayNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayNode.cpp; path = ../../Source/Processors/SpikeDisplayNode.cpp; sourceTree = SOURCE_ROOT; }; + DA4EAC64A750D0C3DEE83C5D /* AudioEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioEditor.cpp; path = ../../Source/Processors/AudioNode/AudioEditor.cpp; sourceTree = SOURCE_ROOT; }; DAA4306D30617137463ED247 /* juce_RelativeRectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeRectangle.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.h; sourceTree = SOURCE_ROOT; }; + DAB201178DC7489D24FEA3F4 /* Custom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Custom.h; path = ../../Source/Processors/Dsp/Custom.h; sourceTree = SOURCE_ROOT; }; DAC81FECCE54087394BE69F7 /* juce_WaitableEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WaitableEvent.h; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_WaitableEvent.h; sourceTree = SOURCE_ROOT; }; DACD0879E139527D971D3AC4 /* juce_FileListComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileListComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileListComponent.h; sourceTree = SOURCE_ROOT; }; DB4F34DA0F04B40EB6A50FB1 /* juce_SystemStats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SystemStats.h; path = ../../JuceLibraryCode/modules/juce_core/system/juce_SystemStats.h; sourceTree = SOURCE_ROOT; }; DB4FB8EAFA1714529E527C3D /* juce_win32_Messaging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Messaging.cpp; path = ../../JuceLibraryCode/modules/juce_events/native/juce_win32_Messaging.cpp; sourceTree = SOURCE_ROOT; }; DB4FF7675E5C98CF62DA8A2E /* AccessClass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AccessClass.h; path = ../../Source/AccessClass.h; sourceTree = SOURCE_ROOT; }; DB550BAB034060FF4578BB64 /* juce_audio_basics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_audio_basics.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.h; sourceTree = SOURCE_ROOT; }; - DB702F259EF24DAB9EC99D0A /* FPGAOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FPGAOutput.h; path = ../../Source/Processors/FPGAOutput.h; sourceTree = SOURCE_ROOT; }; DB7866AFC8A4894810DBD05E /* juce_InterProcessLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InterProcessLock.h; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_InterProcessLock.h; sourceTree = SOURCE_ROOT; }; - DBB295F412798131D3F04045 /* PulsePalOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PulsePalOutput.cpp; path = ../../Source/Processors/PulsePalOutput.cpp; sourceTree = SOURCE_ROOT; }; + DBAB7848C770895CED4E2F95 /* LfpTriggeredAverageNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpTriggeredAverageNode.h; path = ../../Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageNode.h; sourceTree = SOURCE_ROOT; }; DBB769DEBCD6468C13A3CD25 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; - DBB86AD59BA3F6EC09AF2C02 /* LfpDisplayNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayNode.h; path = ../../Source/Processors/LfpDisplayNode.h; sourceTree = SOURCE_ROOT; }; DBCA7E2FFCFD1354DD19DDD6 /* juce_data_structures.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_data_structures.mm; path = ../../JuceLibraryCode/modules/juce_data_structures/juce_data_structures.mm; sourceTree = SOURCE_ROOT; }; DBED17FBB262C4DACEEDA9B0 /* juce_MidiKeyboardState.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MidiKeyboardState.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp; sourceTree = SOURCE_ROOT; }; DBF1FD9272546EE4C7DD517A /* juce_mac_SystemTrayIcon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_mac_SystemTrayIcon.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp; sourceTree = SOURCE_ROOT; }; @@ -1167,6 +1203,7 @@ DD5695DE97CEF7BE76869232 /* juce_FileOutputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileOutputStream.cpp; path = ../../JuceLibraryCode/modules/juce_core/files/juce_FileOutputStream.cpp; sourceTree = SOURCE_ROOT; }; DDE157BB06373ECDBB23469C /* juce_StretchableLayoutManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StretchableLayoutManager.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h; sourceTree = SOURCE_ROOT; }; DDE89F0D5E01F079323CC89C /* juce_AudioProcessorPlayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioProcessorPlayer.h; path = ../../JuceLibraryCode/modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h; sourceTree = SOURCE_ROOT; }; + DE0EA2212323DEFEBA3D078F /* PulsePalOutputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PulsePalOutputEditor.cpp; path = ../../Source/Processors/PulsePalOutput/PulsePalOutputEditor.cpp; sourceTree = SOURCE_ROOT; }; DE4861552DB1976665B25DFD /* juce_HighResolutionTimer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_HighResolutionTimer.cpp; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_HighResolutionTimer.cpp; sourceTree = SOURCE_ROOT; }; DE52AAFE8A58C3CDC0817406 /* juce_LiveConstantEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LiveConstantEditor.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp; sourceTree = SOURCE_ROOT; }; DEB9A630503639D42056236B /* juce_UndoManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_UndoManager.h; path = ../../JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoManager.h; sourceTree = SOURCE_ROOT; }; @@ -1177,31 +1214,35 @@ DFAA7B563CEFB94D9ADB5D6A /* juce_CPlusPlusCodeTokeniser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CPlusPlusCodeTokeniser.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h; sourceTree = SOURCE_ROOT; }; DFFB7396DCE9DF1253217584 /* juce_AudioThumbnailCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioThumbnailCache.h; path = ../../JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h; sourceTree = SOURCE_ROOT; }; E040EA8B5BB61ABBBD14F12F /* juce_OggVorbisAudioFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OggVorbisAudioFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h; sourceTree = SOURCE_ROOT; }; + E04512D01D2F6FE00C336CAD /* LfpDisplayEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayEditor.h; path = ../../Source/Processors/LfpDisplayNode/LfpDisplayEditor.h; sourceTree = SOURCE_ROOT; }; E08E877C3A6283CF5C803957 /* MainWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainWindow.cpp; path = ../../Source/MainWindow.cpp; sourceTree = SOURCE_ROOT; }; + E0AB41DFF4A382B93658F53E /* RecordControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RecordControl.h; path = ../../Source/Processors/RecordControl/RecordControl.h; sourceTree = SOURCE_ROOT; }; E0ADC34D69113B79C2F4FF24 /* juce_CustomTypeface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CustomTypeface.h; path = ../../JuceLibraryCode/modules/juce_graphics/fonts/juce_CustomTypeface.h; sourceTree = SOURCE_ROOT; }; E0C264CF6345ABB4CAB98B92 /* juce_ScopedPointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScopedPointer.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_ScopedPointer.h; sourceTree = SOURCE_ROOT; }; + E102C308B0722DFFFEFF2415 /* ResamplingNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ResamplingNode.cpp; path = ../../Source/Processors/ResamplingNode/ResamplingNode.cpp; sourceTree = SOURCE_ROOT; }; + E122ECCE167A03BDF2D282FE /* RootFinder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RootFinder.cpp; path = ../../Source/Processors/Dsp/RootFinder.cpp; sourceTree = SOURCE_ROOT; }; + E1A51630F1C6E392EBEDD469 /* PulsePalOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PulsePalOutput.h; path = ../../Source/Processors/PulsePalOutput/PulsePalOutput.h; sourceTree = SOURCE_ROOT; }; + E1E9FAB63BD90C10F2BEF74C /* Splitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Splitter.h; path = ../../Source/Processors/Splitter/Splitter.h; sourceTree = SOURCE_ROOT; }; E20D5F2F75478DA4943CEDBD /* juce_ActionBroadcaster.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ActionBroadcaster.h; path = ../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionBroadcaster.h; sourceTree = SOURCE_ROOT; }; E216D095C98F850A5FB6FB0F /* ChannelSelector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChannelSelector.cpp; path = ../../Source/Processors/Editors/ChannelSelector.cpp; sourceTree = SOURCE_ROOT; }; E21CA41B44E191F1804F9662 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../JuceLibraryCode/modules/juce_data_structures/juce_module_info; sourceTree = SOURCE_ROOT; }; E23FA5E940A1434B0305875D /* juce_ResizableCornerComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ResizableCornerComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h; sourceTree = SOURCE_ROOT; }; - E2F46E110416D628C11392CA /* Parameter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Parameter.h; path = ../../Source/Processors/Parameter.h; sourceTree = SOURCE_ROOT; }; E31563D2E7DDD8315F369233 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; E33F167E4AA1C44596A1EBED /* juce_mac_CoreGraphicsHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_mac_CoreGraphicsHelpers.h; path = ../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h; sourceTree = SOURCE_ROOT; }; E34E535DA9CBF248E32F7B45 /* juce_ReadWriteLock.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ReadWriteLock.cpp; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_ReadWriteLock.cpp; sourceTree = SOURCE_ROOT; }; E37140E9E8F7CFDDEEEF6148 /* juce_ToolbarItemFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ToolbarItemFactory.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h; sourceTree = SOURCE_ROOT; }; + E39CC410838072043E3C30DC /* OriginalRecording.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OriginalRecording.cpp; path = ../../Source/Processors/RecordNode/OriginalRecording.cpp; sourceTree = SOURCE_ROOT; }; E3C4B6B362320594789E1297 /* juce_PropertySet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PropertySet.cpp; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_PropertySet.cpp; sourceTree = SOURCE_ROOT; }; E3D9DABE0A9C1DCE6A6515CB /* juce_MixerAudioSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MixerAudioSource.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp; sourceTree = SOURCE_ROOT; }; + E3F5E0DDF9859755B10B074D /* ChannelMappingEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChannelMappingEditor.h; path = ../../Source/Processors/ChannelMappingNode/ChannelMappingEditor.h; sourceTree = SOURCE_ROOT; }; E419C9DA3202B8B6EC2DB723 /* juce_Reverb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Reverb.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/effects/juce_Reverb.h; sourceTree = SOURCE_ROOT; }; - E42B745B4D2DCADE54F94757 /* EventNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventNode.h; path = ../../Source/Processors/EventNode.h; sourceTree = SOURCE_ROOT; }; - E442E1FA7B58BFF6F1D8CBD8 /* ChannelMappingEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChannelMappingEditor.h; path = ../../Source/Processors/Editors/ChannelMappingEditor.h; sourceTree = SOURCE_ROOT; }; - E44B26F5D97CB483242DE05B /* RBJ.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RBJ.h; path = ../../Source/Dsp/RBJ.h; sourceTree = SOURCE_ROOT; }; E48A7B152993BCF473725A19 /* juce_CameraDevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CameraDevice.h; path = ../../JuceLibraryCode/modules/juce_video/capture/juce_CameraDevice.h; sourceTree = SOURCE_ROOT; }; E4A2E203101AF37C169F1569 /* juce_BufferingAudioSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BufferingAudioSource.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_BufferingAudioSource.h; sourceTree = SOURCE_ROOT; }; E53FEAA3754E6B5D99516D56 /* juce_KnownPluginList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_KnownPluginList.cpp; path = ../../JuceLibraryCode/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp; sourceTree = SOURCE_ROOT; }; E58A18793D25A1D75811A052 /* juce_ImagePreviewComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImagePreviewComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h; sourceTree = SOURCE_ROOT; }; - E594A85A291E0625E0410A85 /* LfpDisplayEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayEditor.h; path = ../../Source/Processors/Editors/LfpDisplayEditor.h; sourceTree = SOURCE_ROOT; }; E5B10AA248D400FDB2645084 /* juce_win32_WASAPI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_WASAPI.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp; sourceTree = SOURCE_ROOT; }; E5C1D021C0FD6FAD082C5D75 /* GraphViewer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GraphViewer.cpp; path = ../../Source/UI/GraphViewer.cpp; sourceTree = SOURCE_ROOT; }; + E5FA033C407367AE0793258B /* Cascade.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Cascade.cpp; path = ../../Source/Processors/Dsp/Cascade.cpp; sourceTree = SOURCE_ROOT; }; E666E60CC07666669FC77C7D /* juce_MemoryOutputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MemoryOutputStream.cpp; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryOutputStream.cpp; sourceTree = SOURCE_ROOT; }; E67C5ACDC8208CDE200EC8C6 /* juce_graphics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_graphics.h; path = ../../JuceLibraryCode/modules/juce_graphics/juce_graphics.h; sourceTree = SOURCE_ROOT; }; E6D3A973D5CEF18CA2BAFF59 /* juce_TextButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TextButton.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_TextButton.cpp; sourceTree = SOURCE_ROOT; }; @@ -1211,12 +1252,11 @@ E79B7DC03F81DA1F8CDE21CA /* juce_ApplicationCommandManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationCommandManager.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h; sourceTree = SOURCE_ROOT; }; E7ACE8C1456403A574236451 /* cpmono-bold-serialized */ = {isa = PBXFileReference; lastKnownFileType = file; name = "cpmono-bold-serialized"; path = "../../Resources/Fonts/cpmono-bold-serialized"; sourceTree = SOURCE_ROOT; }; E7EE416EF527C7506B499070 /* juce_BigInteger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BigInteger.h; path = ../../JuceLibraryCode/modules/juce_core/maths/juce_BigInteger.h; sourceTree = SOURCE_ROOT; }; - E8174B3346AA69361BF73AE1 /* Cascade.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Cascade.h; path = ../../Source/Dsp/Cascade.h; sourceTree = SOURCE_ROOT; }; - E817F0471AF514FD075B5DB7 /* SerialInput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SerialInput.h; path = ../../Source/Processors/SerialInput.h; sourceTree = SOURCE_ROOT; }; E835BEB3C42E4B241804BE13 /* cpmono-light-serialized */ = {isa = PBXFileReference; lastKnownFileType = file; name = "cpmono-light-serialized"; path = "../../Resources/Fonts/cpmono-light-serialized"; sourceTree = SOURCE_ROOT; }; - E8480C4ED7F9579F6172F7B5 /* Common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Common.h; path = ../../Source/Dsp/Common.h; sourceTree = SOURCE_ROOT; }; + E849E3966302E7D4D06712F5 /* RecordControl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RecordControl.cpp; path = ../../Source/Processors/RecordControl/RecordControl.cpp; sourceTree = SOURCE_ROOT; }; + E850C14F13F9855CE1E14C1A /* ArduinoOutputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ArduinoOutputEditor.cpp; path = ../../Source/Processors/ArduinoOutput/ArduinoOutputEditor.cpp; sourceTree = SOURCE_ROOT; }; E8964C0BE264A55753BC6B7B /* juce_linux_Midi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Midi.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_Midi.cpp; sourceTree = SOURCE_ROOT; }; - E90FCB43DA2FF766597DA75E /* Documentation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Documentation.cpp; path = ../../Source/Dsp/Documentation.cpp; sourceTree = SOURCE_ROOT; }; + E8D51D470C9955D7D03D5469 /* ChebyshevII.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChebyshevII.h; path = ../../Source/Processors/Dsp/ChebyshevII.h; sourceTree = SOURCE_ROOT; }; E91923510CB2280C3A3B9E9C /* juce_LocalisedStrings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LocalisedStrings.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_LocalisedStrings.h; sourceTree = SOURCE_ROOT; }; E91A272EF06892937CB4B9CE /* juce_ComponentDragger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentDragger.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp; sourceTree = SOURCE_ROOT; }; E93BE115650B1CB80EACB841 /* EditorViewportButtons.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EditorViewportButtons.h; path = ../../Source/UI/EditorViewportButtons.h; sourceTree = SOURCE_ROOT; }; @@ -1224,7 +1264,6 @@ E97684DCE824DEDA6683C6CD /* juce_Synthesiser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Synthesiser.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp; sourceTree = SOURCE_ROOT; }; EA2FC92CECD1EDA1F07DC59C /* juce_TooltipWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TooltipWindow.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TooltipWindow.h; sourceTree = SOURCE_ROOT; }; EA354D7D8E48D461415D52D8 /* juce_JPEGLoader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_JPEGLoader.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/image_formats/juce_JPEGLoader.cpp; sourceTree = SOURCE_ROOT; }; - EA535EA158451360B7B8AE52 /* LfpDisplayNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayNode.cpp; path = ../../Source/Processors/LfpDisplayNode.cpp; sourceTree = SOURCE_ROOT; }; EA73332E3D5AEC04ADDFBB2A /* juce_AudioDataConverters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioDataConverters.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioDataConverters.h; sourceTree = SOURCE_ROOT; }; EA9518CDEA7049C21D5CE2D5 /* juce_Process.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Process.h; path = ../../JuceLibraryCode/modules/juce_core/threads/juce_Process.h; sourceTree = SOURCE_ROOT; }; EAB2319C7AA57E06A2247CDF /* juce_BorderSize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BorderSize.h; path = ../../JuceLibraryCode/modules/juce_graphics/geometry/juce_BorderSize.h; sourceTree = SOURCE_ROOT; }; @@ -1235,13 +1274,12 @@ EAEA49B9394D802B79CA8164 /* juce_StringPairArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StringPairArray.h; path = ../../JuceLibraryCode/modules/juce_core/text/juce_StringPairArray.h; sourceTree = SOURCE_ROOT; }; EB5F9A50EB53A57D6AE303C2 /* juce_mac_QuickTimeMovieComponent.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_QuickTimeMovieComponent.mm; path = ../../JuceLibraryCode/modules/juce_video/native/juce_mac_QuickTimeMovieComponent.mm; sourceTree = SOURCE_ROOT; }; EBD8622EAEF10558809888B7 /* RadioButtons_selected_over-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-01.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-01.png"; sourceTree = SOURCE_ROOT; }; - EC780F52ABBD7317A5CE2F33 /* ChebyshevI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChebyshevI.h; path = ../../Source/Dsp/ChebyshevI.h; sourceTree = SOURCE_ROOT; }; EC95A2CF4B33EA37DA5FC1AC /* nordic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = nordic.ttf; path = ../../Resources/Fonts/nordic.ttf; sourceTree = SOURCE_ROOT; }; - ECA6FDB1366BE7EC30F1539B /* SourceNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SourceNode.cpp; path = ../../Source/Processors/SourceNode.cpp; sourceTree = SOURCE_ROOT; }; ECB5A75A81B90327F58CBD9E /* rhd2000datablock.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = rhd2000datablock.cpp; path = "../../Source/Processors/DataThreads/rhythm-api/rhd2000datablock.cpp"; sourceTree = SOURCE_ROOT; }; ECBEF88BBC974D96ED781C75 /* juce_posix_SharedCode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_posix_SharedCode.h; path = ../../JuceLibraryCode/modules/juce_core/native/juce_posix_SharedCode.h; sourceTree = SOURCE_ROOT; }; ECCE033FF2ACE42188FA4A7F /* juce_TemporaryFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TemporaryFile.h; path = ../../JuceLibraryCode/modules/juce_core/files/juce_TemporaryFile.h; sourceTree = SOURCE_ROOT; }; ECE3BE71EB6B9CF1CE869BBE /* juce_BubbleComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BubbleComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_BubbleComponent.h; sourceTree = SOURCE_ROOT; }; + ED0955C4DE64766A7F5F96F2 /* FPGAOutputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FPGAOutputEditor.h; path = ../../Source/Processors/FPGAOutput/FPGAOutputEditor.h; sourceTree = SOURCE_ROOT; }; ED86166920362E9D2BE2CB26 /* juce_SVGParser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SVGParser.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_SVGParser.cpp; sourceTree = SOURCE_ROOT; }; ED887A521EEB8F3EBA7DDB31 /* juce_AudioIODeviceType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioIODeviceType.h; path = ../../JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h; sourceTree = SOURCE_ROOT; }; EDA209B0E7D124EA581023AD /* juce_AudioFormatManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioFormatManager.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatManager.h; sourceTree = SOURCE_ROOT; }; @@ -1256,10 +1294,8 @@ EF4A6E0E1232071252ACCD7B /* juce_RelativeParallelogram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeParallelogram.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h; sourceTree = SOURCE_ROOT; }; EF610B2A17D9B1C0D24DCE67 /* juce_android_JNIHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_android_JNIHelpers.h; path = ../../JuceLibraryCode/modules/juce_core/native/juce_android_JNIHelpers.h; sourceTree = SOURCE_ROOT; }; EF7B66764093D950724EFE70 /* juce_OpenGLShaderProgram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OpenGLShaderProgram.h; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h; sourceTree = SOURCE_ROOT; }; - EF8488936B3D3E9178C9099C /* PulsePalOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PulsePalOutput.h; path = ../../Source/Processors/PulsePalOutput.h; sourceTree = SOURCE_ROOT; }; EFC21F3CD0EB87D67E044E06 /* juce_MenuBarComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MenuBarComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarComponent.h; sourceTree = SOURCE_ROOT; }; F09FD6D9CA4997216ADBF54F /* DataBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataBuffer.h; path = ../../Source/Processors/DataThreads/DataBuffer.h; sourceTree = SOURCE_ROOT; }; - F0CA3600E09054D7DB3B0067 /* SmoothedFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SmoothedFilter.h; path = ../../Source/Dsp/SmoothedFilter.h; sourceTree = SOURCE_ROOT; }; F0D9A28C206D7A8BA7089D29 /* juce_KeyMappingEditorComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_KeyMappingEditorComponent.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h; sourceTree = SOURCE_ROOT; }; F0F3834D46EA8FC8ADB206DB /* juce_AbstractFifo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AbstractFifo.cpp; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_AbstractFifo.cpp; sourceTree = SOURCE_ROOT; }; F1099BFF0BC1656A23D62E84 /* juce_ScrollBar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ScrollBar.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ScrollBar.cpp; sourceTree = SOURCE_ROOT; }; @@ -1267,21 +1303,28 @@ F17DF27524262A21A3EC932D /* juce_PluginListComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PluginListComponent.cpp; path = ../../JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp; sourceTree = SOURCE_ROOT; }; F1A3975235880CAC1D5757F4 /* juce_MP3AudioFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MP3AudioFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp; sourceTree = SOURCE_ROOT; }; F1DBAE92084D9D90234AC436 /* juce_AudioSourcePlayer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioSourcePlayer.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp; sourceTree = SOURCE_ROOT; }; - F230A4C0186379F9EB0B0F74 /* ReferenceNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ReferenceNode.h; path = ../../Source/Processors/ReferenceNode.h; sourceTree = SOURCE_ROOT; }; F28414731D9EE1F75D7B7043 /* juce_AudioFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AudioFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormat.h; sourceTree = SOURCE_ROOT; }; F2A500BA3500C4A9D5792A54 /* juce_DrawableImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableImage.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableImage.h; sourceTree = SOURCE_ROOT; }; F2EDB88302B8A9356F43B834 /* juce_Primes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Primes.h; path = ../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_Primes.h; sourceTree = SOURCE_ROOT; }; F2F11D7C596DAE5579610CCC /* juce_win32_AudioCDReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_AudioCDReader.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_AudioCDReader.cpp; sourceTree = SOURCE_ROOT; }; + F345254DE7F499036FB17995 /* Layout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Layout.h; path = ../../Source/Processors/Dsp/Layout.h; sourceTree = SOURCE_ROOT; }; + F379BA0589FB65817B721314 /* RecordControlEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RecordControlEditor.h; path = ../../Source/Processors/RecordControl/RecordControlEditor.h; sourceTree = SOURCE_ROOT; }; F3D0224E4247BCB06A9E4DDF /* juce_KeyPressMappingSet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_KeyPressMappingSet.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp; sourceTree = SOURCE_ROOT; }; F3F48717927A4E24F7373C09 /* juce_NamedValueSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NamedValueSet.h; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_NamedValueSet.h; sourceTree = SOURCE_ROOT; }; + F46365D8E42099148B843C95 /* SpikeSorterEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeSorterEditor.cpp; path = ../../Source/Processors/SpikeSorter/SpikeSorterEditor.cpp; sourceTree = SOURCE_ROOT; }; F463A19E6EFEB2837582B117 /* juce_audio_processors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_audio_processors.h; path = ../../JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.h; sourceTree = SOURCE_ROOT; }; F46843B979D0385C733C797A /* juce_BubbleMessageComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BubbleMessageComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp; sourceTree = SOURCE_ROOT; }; F4D2A03314AB1CF852CC4F2A /* juce_CPlusPlusCodeTokeniserFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CPlusPlusCodeTokeniserFunctions.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h; sourceTree = SOURCE_ROOT; }; + F552E7A463C6207BC3E74C06 /* HDF5FileFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HDF5FileFormat.cpp; path = ../../Source/Processors/RecordNode/HDF5FileFormat.cpp; sourceTree = SOURCE_ROOT; }; F5642B98949DC0FA45EF904E /* juce_BufferedInputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BufferedInputStream.h; path = ../../JuceLibraryCode/modules/juce_core/streams/juce_BufferedInputStream.h; sourceTree = SOURCE_ROOT; }; F5A00ACFA3D76168F22F1205 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + F603678D95461916B9D971AA /* Custom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Custom.cpp; path = ../../Source/Processors/Dsp/Custom.cpp; sourceTree = SOURCE_ROOT; }; + F6BE430A8D1C6240286ED75B /* EventNodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventNodeEditor.cpp; path = ../../Source/Processors/EventNode/EventNodeEditor.cpp; sourceTree = SOURCE_ROOT; }; F6EBDA368C553C37BE703BE5 /* juce_Vector3D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Vector3D.h; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_Vector3D.h; sourceTree = SOURCE_ROOT; }; F70B7D65EF56B8A0ED36478C /* juce_WavAudioFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WavAudioFormat.h; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WavAudioFormat.h; sourceTree = SOURCE_ROOT; }; + F716728550EBD8FA7B9CA7EF /* RecordEngine.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RecordEngine.cpp; path = ../../Source/Processors/RecordNode/RecordEngine.cpp; sourceTree = SOURCE_ROOT; }; F73A22F20AE71DA0153E274A /* juce_Javascript.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Javascript.h; path = ../../JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.h; sourceTree = SOURCE_ROOT; }; + F753A8E9CE0C51998066EA07 /* SpikeSorterEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeSorterEditor.h; path = ../../Source/Processors/SpikeSorter/SpikeSorterEditor.h; sourceTree = SOURCE_ROOT; }; F796260525BD82FFC1D1732C /* juce_Uuid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Uuid.cpp; path = ../../JuceLibraryCode/modules/juce_core/misc/juce_Uuid.cpp; sourceTree = SOURCE_ROOT; }; F7979AFD5780D9B2208736EE /* juce_TooltipWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TooltipWindow.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp; sourceTree = SOURCE_ROOT; }; F7F374C05CDE0DB7712D18D1 /* juce_Atomic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Atomic.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_Atomic.h; sourceTree = SOURCE_ROOT; }; @@ -1290,34 +1333,36 @@ F8E202A1374401022F87F26E /* juce_CoreAudioFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CoreAudioFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp; sourceTree = SOURCE_ROOT; }; F8EFE3709FDDC2D5F0843058 /* juce_Variant.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Variant.cpp; path = ../../JuceLibraryCode/modules/juce_core/containers/juce_Variant.cpp; sourceTree = SOURCE_ROOT; }; F94BFC6B5057806EEF8B59DA /* juce_AudioIODevice.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioIODevice.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp; sourceTree = SOURCE_ROOT; }; - F94DD42C7BBF81C101D3F605 /* EventNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventNode.cpp; path = ../../Source/Processors/EventNode.cpp; sourceTree = SOURCE_ROOT; }; F960CC94B136201BDA148EEA /* CustomArrowButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CustomArrowButton.cpp; path = ../../Source/UI/CustomArrowButton.cpp; sourceTree = SOURCE_ROOT; }; F9E2371F1A99B292F2947FF5 /* juce_DragAndDropTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DragAndDropTarget.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h; sourceTree = SOURCE_ROOT; }; F9F37AD1C3E7CA932FF44E69 /* juce_LagrangeInterpolator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LagrangeInterpolator.cpp; path = ../../JuceLibraryCode/modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp; sourceTree = SOURCE_ROOT; }; + FA12F07F4F9C872C18A2817B /* LfpTriggeredAverageNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpTriggeredAverageNode.cpp; path = ../../Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageNode.cpp; sourceTree = SOURCE_ROOT; }; FA1F1E9C7DEA48CAE6C247F4 /* OpenEphysBoardLogoGray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = OpenEphysBoardLogoGray.png; path = ../../Resources/Images/Icons/OpenEphysBoardLogoGray.png; sourceTree = SOURCE_ROOT; }; FA23A1334E4CFA77BC18A153 /* FPGAThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FPGAThread.cpp; path = ../../Source/Processors/DataThreads/FPGAThread.cpp; sourceTree = SOURCE_ROOT; }; FA2F04BA4E146ABF649BBE89 /* rhd2000evalboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = rhd2000evalboard.h; path = "../../Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.h"; sourceTree = SOURCE_ROOT; }; + FA8CC6FD54A9F20DA755F2EA /* Channel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Channel.cpp; path = ../../Source/Processors/Channel/Channel.cpp; sourceTree = SOURCE_ROOT; }; FAC7E62CC15CA977A6FC72D1 /* juce_ChangeBroadcaster.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ChangeBroadcaster.cpp; path = ../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp; sourceTree = SOURCE_ROOT; }; - FB071D0659E5F1CC630D765A /* FileReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FileReader.h; path = ../../Source/Processors/FileReader.h; sourceTree = SOURCE_ROOT; }; + FAD15233FFB64C1608A60250 /* RBJ.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RBJ.cpp; path = ../../Source/Processors/Dsp/RBJ.cpp; sourceTree = SOURCE_ROOT; }; + FAFA97C9B7C7635298E274DB /* RHD2000Editor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RHD2000Editor.cpp; path = ../../Source/Processors/DataThreads/RHD2000Editor.cpp; sourceTree = SOURCE_ROOT; }; FB1B880F24F376D1AC52F2A6 /* juce_DrawableButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableButton.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_DrawableButton.cpp; sourceTree = SOURCE_ROOT; }; FB1EA9CB3C695925627B0AC6 /* juce_HeapBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_HeapBlock.h; path = ../../JuceLibraryCode/modules/juce_core/memory/juce_HeapBlock.h; sourceTree = SOURCE_ROOT; }; FB33617B5082CC0CDC189F2C /* juce_KeyboardFocusTraverser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_KeyboardFocusTraverser.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h; sourceTree = SOURCE_ROOT; }; FB65FCCCBEE5FCEA2BFD045D /* juce_JSON.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_JSON.h; path = ../../JuceLibraryCode/modules/juce_core/javascript/juce_JSON.h; sourceTree = SOURCE_ROOT; }; FB7E91937D3BBE00F64F0B72 /* juce_Colours.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Colours.h; path = ../../JuceLibraryCode/modules/juce_graphics/colour/juce_Colours.h; sourceTree = SOURCE_ROOT; }; + FBF2BF7B97C2FF8557CF39E6 /* SpikeSortBoxes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeSortBoxes.h; path = ../../Source/Processors/SpikeSorter/SpikeSortBoxes.h; sourceTree = SOURCE_ROOT; }; FC080F7DF94ABCB7EA09224A /* juce_Colour.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Colour.cpp; path = ../../JuceLibraryCode/modules/juce_graphics/colour/juce_Colour.cpp; sourceTree = SOURCE_ROOT; }; FC20BDD5357D39AC43DFC255 /* juce_LADSPAPluginFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LADSPAPluginFormat.cpp; path = ../../JuceLibraryCode/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp; sourceTree = SOURCE_ROOT; }; FC85D30C66E7A4E4A6CA29AE /* cpmono_bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_bold.otf; path = ../../Resources/Fonts/cpmono_bold.otf; sourceTree = SOURCE_ROOT; }; - FC887C6CD74FE33F8BA784A6 /* MergerEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MergerEditor.h; path = ../../Source/Processors/Editors/MergerEditor.h; sourceTree = SOURCE_ROOT; }; FD3A6BD3A8898E137DF257B9 /* juce_RelativeParallelogram.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeParallelogram.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp; sourceTree = SOURCE_ROOT; }; FD770E73FD462E9C9F6DBFB2 /* juce_PositionableAudioSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PositionableAudioSource.h; path = ../../JuceLibraryCode/modules/juce_audio_basics/sources/juce_PositionableAudioSource.h; sourceTree = SOURCE_ROOT; }; FD88DA941838FC91D222DF35 /* juce_RecentlyOpenedFilesList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RecentlyOpenedFilesList.h; path = ../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h; sourceTree = SOURCE_ROOT; }; + FD9EE3CDFCEE08859781DA65 /* RHD2000Editor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RHD2000Editor.h; path = ../../Source/Processors/DataThreads/RHD2000Editor.h; sourceTree = SOURCE_ROOT; }; FDAAB4F0D2A15A6F0F71945A /* juce_ResizableWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResizableWindow.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp; sourceTree = SOURCE_ROOT; }; FEB3730E084D7DD433D14A6C /* juce_MouseListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseListener.h; path = ../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.h; sourceTree = SOURCE_ROOT; }; FEF0A4E3C8D22A830BCE2B67 /* juce_linux_JackAudio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_JackAudio.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_JackAudio.cpp; sourceTree = SOURCE_ROOT; }; FF082466FC37DC44320B3B7E /* juce_Draggable3DOrientation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Draggable3DOrientation.h; path = ../../JuceLibraryCode/modules/juce_opengl/opengl/juce_Draggable3DOrientation.h; sourceTree = SOURCE_ROOT; }; FF1B5858C942CA02EEC38E69 /* juce_ios_Audio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ios_Audio.cpp; path = ../../JuceLibraryCode/modules/juce_audio_devices/native/juce_ios_Audio.cpp; sourceTree = SOURCE_ROOT; }; FF3E5A9F8B9250790C6DA089 /* juce_URL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_URL.h; path = ../../JuceLibraryCode/modules/juce_core/network/juce_URL.h; sourceTree = SOURCE_ROOT; }; - FF450FAFD49105CE7157DFC0 /* Channel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Channel.h; path = ../../Source/Processors/Channel.h; sourceTree = SOURCE_ROOT; }; FFBB9CE85A7C91FB11E4AEC8 /* juce_ImageComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImageComponent.cpp; path = ../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ImageComponent.cpp; sourceTree = SOURCE_ROOT; }; FFFBDB9A00240D797751FEE6 /* DataWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataWindow.h; path = ../../Source/Processors/Visualization/DataWindow.h; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ @@ -1406,6 +1451,53 @@ name = Icons; sourceTree = "<group>"; }; + 053D472F15D2FE7C83911218 /* Dsp */ = { + isa = PBXGroup; + children = ( + 041038F6E67FE0409D8ECC74 /* Bessel.cpp */, + AAF5C27D2EEDD254A3652717 /* Bessel.h */, + CB5C14E82DE06F767EAD62F9 /* Biquad.cpp */, + 0A6D08BC1B5ACA62F35AF5CD /* Biquad.h */, + 777D9B0FE3C110ADA980BD09 /* Butterworth.cpp */, + 87C0534EAC82E887E1D354C3 /* Butterworth.h */, + E5FA033C407367AE0793258B /* Cascade.cpp */, + D1C27DAA2DDCEF188DDC8C5E /* Cascade.h */, + D60B35D4E32DAE001056D4D5 /* ChebyshevI.cpp */, + 56D5BE8BFA1F07F5EFF1DFE8 /* ChebyshevI.h */, + 4B58436E2B47FC6BB349129F /* ChebyshevII.cpp */, + E8D51D470C9955D7D03D5469 /* ChebyshevII.h */, + 1322A008F022AF76593EAA9A /* Common.h */, + F603678D95461916B9D971AA /* Custom.cpp */, + DAB201178DC7489D24FEA3F4 /* Custom.h */, + BCB5B6CEF112FC911B90E6E2 /* Design.cpp */, + 3D782D1796455167CE41CCAB /* Design.h */, + 5E5098D437FC0612291567AC /* Documentation.cpp */, + 7814050BBF14AF7D45872768 /* Dsp.h */, + 52070E1171C046E4949ADFE5 /* Elliptic.cpp */, + 154D5631EEFF8883BD385EB7 /* Elliptic.h */, + 388D5CAFAE66CCCB8ADA594C /* Filter.cpp */, + BA3C61B41A55C23959AA57A3 /* Filter.h */, + F345254DE7F499036FB17995 /* Layout.h */, + 78A1CE918B3E7ADD87DA4350 /* Legendre.cpp */, + 5CF96A7BBD6C4DE4D059E4A4 /* Legendre.h */, + 98EFA5304D160AD9225E38B4 /* MathSupplement.h */, + 40F90FEFBD575E8A67DF68EB /* Param.cpp */, + 677CC8DA903C77D8ECBAE26D /* Params.h */, + 9C736D7B85CCD9EC40C5D0AF /* PoleFilter.cpp */, + 442F01DC974E1EAC57450906 /* PoleFilter.h */, + FAD15233FFB64C1608A60250 /* RBJ.cpp */, + C1B540E49C0EBA03ACDBBDFB /* RBJ.h */, + E122ECCE167A03BDF2D282FE /* RootFinder.cpp */, + 8B0B1D01BA8A37EC6058E518 /* RootFinder.h */, + BD6FDA7B037CF3535431BFC8 /* SmoothedFilter.h */, + 20BB146B925C4D4AD43BA479 /* State.cpp */, + B207877BD3DC2A555E51ADD8 /* State.h */, + 54B7796F6DCF5531789CCF43 /* Types.h */, + 3846F3FA0FC28CE322073E94 /* Utilities.h */, + ); + name = Dsp; + sourceTree = "<group>"; + }; 09C2000EFECCE35F3F793E55 /* lookandfeel */ = { isa = PBXGroup; children = ( @@ -1445,6 +1537,36 @@ name = native; sourceTree = "<group>"; }; + 0E7092A11A3C96E5ECA71CDA /* RecordNode */ = { + isa = PBXGroup; + children = ( + 7DB22AC6407EEA88F3FFA16D /* EngineConfigWindow.cpp */, + 398BF0B03B719107E6093F98 /* EngineConfigWindow.h */, + F552E7A463C6207BC3E74C06 /* HDF5FileFormat.cpp */, + 449B26D1265BB91B331EFF84 /* HDF5FileFormat.h */, + 36332333DBF8363163F454E6 /* HDF5Recording.cpp */, + 8A07B5B6D56277A222AC0E90 /* HDF5Recording.h */, + E39CC410838072043E3C30DC /* OriginalRecording.cpp */, + 9B1962D340B217B19B077F2A /* OriginalRecording.h */, + F716728550EBD8FA7B9CA7EF /* RecordEngine.cpp */, + 25B79E00075CCF59F0A4A7D7 /* RecordEngine.h */, + 949422DF0532222450E95926 /* RecordNode.cpp */, + B657AEAFB3404A5CB270C413 /* RecordNode.h */, + ); + name = RecordNode; + sourceTree = "<group>"; + }; + 10488A99117FC063889F25C7 /* FileReader */ = { + isa = PBXGroup; + children = ( + 34834859523571912C55AC94 /* FileReader.cpp */, + D5DC73F860143308ADF769C1 /* FileReader.h */, + 56F810EF10E01535A417B671 /* FileReaderEditor.cpp */, + BF8C15407347975836BFA88F /* FileReaderEditor.h */, + ); + name = FileReader; + sourceTree = "<group>"; + }; 147EC1A2CF770171DFB61105 /* sampler */ = { isa = PBXGroup; children = ( @@ -1502,6 +1624,15 @@ name = midi; sourceTree = "<group>"; }; + 1AD84CD59ADC8ACA5C6A1551 /* ProcessorGraph */ = { + isa = PBXGroup; + children = ( + 4CB63EE1552BBFDEB1DADB0A /* ProcessorGraph.cpp */, + B695B24906116ADEFC9D9B5C /* ProcessorGraph.h */, + ); + name = ProcessorGraph; + sourceTree = "<group>"; + }; 1BF4F68D4169491DD79D0B01 /* contexts */ = { isa = PBXGroup; children = ( @@ -1516,9 +1647,22 @@ name = contexts; sourceTree = "<group>"; }; + 1C714E881A404D148C6170CD /* FilterNode */ = { + isa = PBXGroup; + children = ( + 414969AEF838522C9FE1B807 /* FilterEditor.cpp */, + 5EA566ED87CC02EA6DF1993B /* FilterEditor.h */, + 9AA19ECEFE2B49832ECEED2F /* FilterNode.cpp */, + 70651FEF347D8DE167B68EB8 /* FilterNode.h */, + ); + name = FilterNode; + sourceTree = "<group>"; + }; 1D78FCCF430CD91FD1DBD95B /* UI */ = { isa = PBXGroup; children = ( + AF28CAB9C7531EF7422602E1 /* EcubeDialogComponent.cpp */, + A186E03EC7A6A7E657F38300 /* EcubeDialogComponent.h */, F960CC94B136201BDA148EEA /* CustomArrowButton.cpp */, C59B01C8DB5B3B4773032E12 /* CustomArrowButton.h */, E5C1D021C0FD6FAD082C5D75 /* GraphViewer.cpp */, @@ -1537,8 +1681,6 @@ D2696B30CBEAD7CE72510AFA /* InfoLabel.h */, 47A3942AC30A3212C01F1CAF /* DataViewport.cpp */, 7D9374931D760ADC65DCBFC6 /* DataViewport.h */, - 7BD2C39F13FDE202141C4B41 /* MessageCenter.cpp */, - 9B9EDDFA0AE4991BC7FC7263 /* MessageCenter.h */, 610E487E060C42B52FD5AAC9 /* ControlPanel.cpp */, 0FE8ACC50ED8E7FFC9E6B9B4 /* ControlPanel.h */, D2A3B4CDD296B4CEC6902FD7 /* UIComponent.cpp */, @@ -1579,6 +1721,17 @@ name = maths; sourceTree = "<group>"; }; + 1ECFEAA83B8E49686FFA6F2F /* SignalGenerator */ = { + isa = PBXGroup; + children = ( + 748F08ACA463113F570C51AC /* SignalGenerator.cpp */, + D50EA137CEA9654AA8AB3D4C /* SignalGenerator.h */, + 0915EBE101DD5974F692755B /* SignalGeneratorEditor.cpp */, + 38E1C53CF5BB38247BCAA909 /* SignalGeneratorEditor.h */, + ); + name = SignalGenerator; + sourceTree = "<group>"; + }; 208431C2D4A7C383FD247CE3 /* format_types */ = { isa = PBXGroup; children = ( @@ -1608,6 +1761,17 @@ name = sources; sourceTree = "<group>"; }; + 21389ED521B378402213EFC3 /* ReferenceNode */ = { + isa = PBXGroup; + children = ( + D9B10885C9D93CEF580EF167 /* ReferenceNode.cpp */, + 679BBE9F6C930A1941BA7944 /* ReferenceNode.h */, + 6D4D435D25CFC019E0FCF4A1 /* ReferenceNodeEditor.cpp */, + 883E23B392AFB86C3EE1A2AC /* ReferenceNodeEditor.h */, + ); + name = ReferenceNode; + sourceTree = "<group>"; + }; 21BB3DD364DC0C39CC9594B9 /* processors */ = { isa = PBXGroup; children = ( @@ -1667,6 +1831,19 @@ name = broadcasters; sourceTree = "<group>"; }; + 29B817DBDA971F3DA7039F93 /* LfpDisplayNode */ = { + isa = PBXGroup; + children = ( + D9BF6DA66C22FFF5C4D41991 /* LfpDisplayCanvas.cpp */, + CD657DBBDB4550C800F05D22 /* LfpDisplayCanvas.h */, + 88C69F0563A99BD2F7BF5FBB /* LfpDisplayEditor.cpp */, + E04512D01D2F6FE00C336CAD /* LfpDisplayEditor.h */, + 1C64C490BD7FE9E57D6C682D /* LfpDisplayNode.cpp */, + B2F72769CF14BD7F882E9542 /* LfpDisplayNode.h */, + ); + name = LfpDisplayNode; + sourceTree = "<group>"; + }; 2A882D30C0E50E70FCD95554 /* lookandfeel */ = { isa = PBXGroup; children = ( @@ -1687,6 +1864,17 @@ name = hashing; sourceTree = "<group>"; }; + 2AC55A2E70C6CF50A8C46F6B /* Parameter */ = { + isa = PBXGroup; + children = ( + 934B37E2BECD69E6E27051F6 /* ParameterEditor.cpp */, + 362898B655ABFFA23A69BBFA /* ParameterEditor.h */, + 4F5D51C5F8174E3824EF8B42 /* Parameter.cpp */, + 811BCA5BE226C5188BC5E9B9 /* Parameter.h */, + ); + name = Parameter; + sourceTree = "<group>"; + }; 2D49786EE07B37713213F905 /* juce_opengl */ = { isa = PBXGroup; children = ( @@ -1740,7 +1928,6 @@ 420B0E95F1300ABFDC125DBF /* AccessClass.cpp */, DB4FF7675E5C98CF62DA8A2E /* AccessClass.h */, B016FBDF648372A23D7EAAD8 /* Network */, - BCD632E634E0F8A50827F9B6 /* Dsp */, C451728043944D40C69166C1 /* Audio */, 83A3E005DDFCC55F277EEDA5 /* Processors */, 1D78FCCF430CD91FD1DBD95B /* UI */, @@ -1802,6 +1989,17 @@ name = Serial; sourceTree = "<group>"; }; + 3EE4DBB6ED04E5B9DA85CDF9 /* ChannelMappingNode */ = { + isa = PBXGroup; + children = ( + D0105584D551FED59203CC84 /* ChannelMappingEditor.cpp */, + E3F5E0DDF9859755B10B074D /* ChannelMappingEditor.h */, + 25CEC111DFEC71FA6828257F /* ChannelMappingNode.cpp */, + 589657244185109F68A6B5A2 /* ChannelMappingNode.h */, + ); + name = ChannelMappingNode; + sourceTree = "<group>"; + }; 42DE5996B56B332A5B6C636D /* undomanager */ = { isa = PBXGroup; children = ( @@ -1867,6 +2065,17 @@ name = juce_graphics; sourceTree = "<group>"; }; + 456FCC98D03DFAE9AFEC271B /* ResamplingNode */ = { + isa = PBXGroup; + children = ( + E102C308B0722DFFFEFF2415 /* ResamplingNode.cpp */, + B574136FEE7957F7439CB346 /* ResamplingNode.h */, + 55DFE30C901793E56A7E3A22 /* ResamplingNodeEditor.cpp */, + 1785D37A95AF0D67F69F29B6 /* ResamplingNodeEditor.h */, + ); + name = ResamplingNode; + sourceTree = "<group>"; + }; 45BA9E76F27503E30F331299 /* commands */ = { isa = PBXGroup; children = ( @@ -1936,17 +2145,17 @@ name = embedding; sourceTree = "<group>"; }; - 4E3C60995CC567F1A839CAE3 /* Utilities */ = { + 518310F63C8005A8D097A1D8 /* LfpTriggeredAverageNode */ = { isa = PBXGroup; children = ( - 258938780F93A7CF41366F26 /* RecordControl.cpp */, - C5785E58E6F915165729EF16 /* RecordControl.h */, - 4867923F31CC3EDC9B1A5BE5 /* Merger.cpp */, - 6880C148A38A5C8D0092E358 /* Merger.h */, - 2C4730CAFED4F6292B575318 /* Splitter.cpp */, - B1082A8A306A1947F5B0E5FC /* Splitter.h */, - ); - name = Utilities; + CC9134D38EBEC67112CA7502 /* LfpTriggeredAverageCanvas.cpp */, + 22FAA3DA9944AA853D66114F /* LfpTriggeredAverageCanvas.h */, + 20DBF92457AF75C0698D1B26 /* LfpTriggeredAverageEditor.cpp */, + ADCEA06868A5085B60487AC3 /* LfpTriggeredAverageEditor.h */, + FA12F07F4F9C872C18A2817B /* LfpTriggeredAverageNode.cpp */, + DBAB7848C770895CED4E2F95 /* LfpTriggeredAverageNode.h */, + ); + name = LfpTriggeredAverageNode; sourceTree = "<group>"; }; 530413F49A2E29570D8A9761 /* timers */ = { @@ -1960,6 +2169,17 @@ name = timers; sourceTree = "<group>"; }; + 552D8D8CC92277F54C95F760 /* WiFiOutput */ = { + isa = PBXGroup; + children = ( + B25949076F9BB831C5862415 /* WiFiOutput.cpp */, + 540CD9ED0C719DB1DAECA37E /* WiFiOutput.h */, + 3734FF118787377E4C8741D1 /* WiFiOutputEditor.cpp */, + 513D20023796491A24EC58A7 /* WiFiOutputEditor.h */, + ); + name = WiFiOutput; + sourceTree = "<group>"; + }; 553F5880E9CFE9C4A045C0C0 /* effects */ = { isa = PBXGroup; children = ( @@ -2051,6 +2271,15 @@ name = Buttons; sourceTree = "<group>"; }; + 5FAE90CAD8DAA5CE48855F38 /* GenericProcessor */ = { + isa = PBXGroup; + children = ( + C5654EAA7B65445CF1340983 /* GenericProcessor.cpp */, + 012F05BBF926C8F39AC7871B /* GenericProcessor.h */, + ); + name = GenericProcessor; + sourceTree = "<group>"; + }; 6101DBF4D993FE2CB50D4F90 /* drawables */ = { isa = PBXGroup; children = ( @@ -2287,6 +2516,28 @@ name = capture; sourceTree = "<group>"; }; + 7B2364D82845C97E7A1B1924 /* SpikeDisplayNode */ = { + isa = PBXGroup; + children = ( + AAC6EC29963717E95428D7D2 /* SpikeDisplayCanvas.cpp */, + C2CB484954A536E782B4A8E7 /* SpikeDisplayCanvas.h */, + 2F0C721AB2973FAD23C7F47B /* SpikeDisplayEditor.cpp */, + 34CF4D00D785338941AB9590 /* SpikeDisplayEditor.h */, + AC9E30922A14330704FB2573 /* SpikeDisplayNode.cpp */, + AE1FC768C646A0EFEC3E3A11 /* SpikeDisplayNode.h */, + ); + name = SpikeDisplayNode; + sourceTree = "<group>"; + }; + 7BE07AA81C59DD7252F709E6 /* AudioResamplingNode */ = { + isa = PBXGroup; + children = ( + 41E88094E8D929866A6DCA9A /* AudioResamplingNode.cpp */, + 5E5736CB6D96D5271F1A7597 /* AudioResamplingNode.h */, + ); + name = AudioResamplingNode; + sourceTree = "<group>"; + }; 7C6BF9E0D166E4E5C3F2A005 /* native */ = { isa = PBXGroup; children = ( @@ -2366,61 +2617,42 @@ 83A3E005DDFCC55F277EEDA5 /* Processors */ = { isa = PBXGroup; children = ( - 86688D712937F3D08918C68B /* SerialInput.cpp */, - E817F0471AF514FD075B5DB7 /* SerialInput.h */, - 9215DC26F511C58DEE009209 /* FileReader.cpp */, - FB071D0659E5F1CC630D765A /* FileReader.h */, - 5654BDD4FBFF01AC3F17FA0D /* ChannelMappingNode.cpp */, - A234B2D091071A1B710E884B /* ChannelMappingNode.h */, - DBB295F412798131D3F04045 /* PulsePalOutput.cpp */, - EF8488936B3D3E9178C9099C /* PulsePalOutput.h */, - BBD9C2AED6F500D090069007 /* ReferenceNode.cpp */, - F230A4C0186379F9EB0B0F74 /* ReferenceNode.h */, - 9FFD9560522567A033226BD7 /* PhaseDetector.cpp */, - 229989EC8A6F145C81348CA9 /* PhaseDetector.h */, - 76F569AE7B444D8F69EE0E86 /* AudioResamplingNode.cpp */, - 17CE6B2913E72ED8727ECD56 /* AudioResamplingNode.h */, - 9BC055494F9FEE3F90630541 /* Channel.cpp */, - FF450FAFD49105CE7157DFC0 /* Channel.h */, + 9C8E3549A602E74DCFC44244 /* ArduinoOutput */, + 9C7703C01E449614C1CD884D /* AudioNode */, + 7BE07AA81C59DD7252F709E6 /* AudioResamplingNode */, + B3EC4C17E1555DCD89B1B62C /* Channel */, + 3EE4DBB6ED04E5B9DA85CDF9 /* ChannelMappingNode */, + DEA24DC5AC8325310FB40395 /* DataThreads */, + 053D472F15D2FE7C83911218 /* Dsp */, + 9F16043BF599BCE0C02A00A5 /* Editors */, + F8338C653582335A30EADE40 /* EventDetector */, + AE49B2C17B100D5B4F81F694 /* EventNode */, + 10488A99117FC063889F25C7 /* FileReader */, + 1C714E881A404D148C6170CD /* FilterNode */, + 85403FACC153147273CEB933 /* FPGAOutput */, + 5FAE90CAD8DAA5CE48855F38 /* GenericProcessor */, + 29B817DBDA971F3DA7039F93 /* LfpDisplayNode */, + 518310F63C8005A8D097A1D8 /* LfpTriggeredAverageNode */, + A1678CA8F8E882F5D7EFDB3E /* Merger */, + F12EEDE785E2D38F654AE1B1 /* MessageCenter */, + 2AC55A2E70C6CF50A8C46F6B /* Parameter */, + B59685FA20FE7A2DC1FF65C0 /* PhaseDetector */, + 1AD84CD59ADC8ACA5C6A1551 /* ProcessorGraph */, + EC06134D54CF6C9870853ED6 /* PulsePalOutput */, + F884A8B18F33A6FFE6809906 /* RecordControl */, + 0E7092A11A3C96E5ECA71CDA /* RecordNode */, + 21389ED521B378402213EFC3 /* ReferenceNode */, + 456FCC98D03DFAE9AFEC271B /* ResamplingNode */, 3DE49DED45C5CDD8D184E248 /* Serial */, - 39464D2A22940DA2DDCCCFC6 /* EventDetector.cpp */, - 91D7B1F8B94AE9CFCC53771F /* EventDetector.h */, - 9D78F50147005EDB0E89E2B4 /* FPGAOutput.cpp */, - DB702F259EF24DAB9EC99D0A /* FPGAOutput.h */, - D38E60AC4854B6E1EDE488EB /* ArduinoOutput.cpp */, - D128F31F18331117287F5EC5 /* ArduinoOutput.h */, - CD2370F8F4A44446558A08FB /* Parameter.cpp */, - E2F46E110416D628C11392CA /* Parameter.h */, - DAA04A0FD47097893712B241 /* SpikeDisplayNode.cpp */, - 5EA61EDD64BE1E401DD0AA5E /* SpikeDisplayNode.h */, - 2D41C43686CDE35E86A389D7 /* WiFiOutput.cpp */, - B917780A75945062761B6945 /* WiFiOutput.h */, - EA535EA158451360B7B8AE52 /* LfpDisplayNode.cpp */, - DBB86AD59BA3F6EC09AF2C02 /* LfpDisplayNode.h */, - 4E3C60995CC567F1A839CAE3 /* Utilities */, + C451C93CE8C359C1A4BD23C7 /* SerialInput */, + 1ECFEAA83B8E49686FFA6F2F /* SignalGenerator */, + CB7739DB9922F30C029B2A02 /* SourceNode */, + B17425A884659AB7B5FDCDD0 /* SpikeDetector */, + 7B2364D82845C97E7A1B1924 /* SpikeDisplayNode */, + D3F8D770C9E60B5BA2CCBC68 /* SpikeSorter */, + E2624A71F15AE5C96B34505B /* Splitter */, C4B85C0286AC2510730355E3 /* Visualization */, - BC3B7E4E25505D9044BFACC7 /* SpikeDetector.cpp */, - B70D836E0756C3D4EE8E20F2 /* SpikeDetector.h */, - B27F558F42AC78F0E564B5AF /* AudioNode.cpp */, - 5F64FDAFCA899A16C7FDDBCA /* AudioNode.h */, - F94DD42C7BBF81C101D3F605 /* EventNode.cpp */, - E42B745B4D2DCADE54F94757 /* EventNode.h */, - 9F16043BF599BCE0C02A00A5 /* Editors */, - DEA24DC5AC8325310FB40395 /* DataThreads */, - A4E2CAAF556D557B24182414 /* RecordNode.cpp */, - 3EAE25787DBFBA8EFC42A277 /* RecordNode.h */, - 5522973FA48A13C6BED293FE /* SignalGenerator.cpp */, - 23EAFAEA6457DB4E452F8715 /* SignalGenerator.h */, - A98A22CF5F208ED6DBE08063 /* ResamplingNode.cpp */, - C29BC68B2721471F32906FEB /* ResamplingNode.h */, - B0E8FAD5AC445F612E3468B9 /* FilterNode.cpp */, - 886E18520E8BD77234E1B686 /* FilterNode.h */, - ECA6FDB1366BE7EC30F1539B /* SourceNode.cpp */, - 154303EE3929F26B93792187 /* SourceNode.h */, - 3AE038CACE48AF85C4FB1ED5 /* GenericProcessor.cpp */, - 5B2A4DD7133CDE5AEC24CC07 /* GenericProcessor.h */, - 555D34D0CD8776EE5996CC3A /* ProcessorGraph.cpp */, - 0FDD7551AC98348D4A98ADC7 /* ProcessorGraph.h */, + 552D8D8CC92277F54C95F760 /* WiFiOutput */, ); name = Processors; sourceTree = "<group>"; @@ -2451,6 +2683,17 @@ name = juce_gui_basics; sourceTree = "<group>"; }; + 85403FACC153147273CEB933 /* FPGAOutput */ = { + isa = PBXGroup; + children = ( + 4448875C40EAB061B2F8A289 /* FPGAOutput.cpp */, + 07A8ED74417654C40F9EFEFC /* FPGAOutput.h */, + AB4D72F040FF59BED08826EC /* FPGAOutputEditor.cpp */, + ED0955C4DE64766A7F5F96F2 /* FPGAOutputEditor.h */, + ); + name = FPGAOutput; + sourceTree = "<group>"; + }; 85E7ADCD4C773A42B7F493E8 /* memory */ = { isa = PBXGroup; children = ( @@ -2756,6 +2999,28 @@ name = Fonts; sourceTree = "<group>"; }; + 9C7703C01E449614C1CD884D /* AudioNode */ = { + isa = PBXGroup; + children = ( + DA4EAC64A750D0C3DEE83C5D /* AudioEditor.cpp */, + C15024C101ECE85FDDCD770D /* AudioEditor.h */, + 1F22CC8D992B8B49D57DDB3F /* AudioNode.cpp */, + 19B08AF9187EC45ECDE87602 /* AudioNode.h */, + ); + name = AudioNode; + sourceTree = "<group>"; + }; + 9C8E3549A602E74DCFC44244 /* ArduinoOutput */ = { + isa = PBXGroup; + children = ( + 95A64508FF3D0140D3001A19 /* ArduinoOutput.cpp */, + B410FE6CF1A561A1648343D6 /* ArduinoOutput.h */, + E850C14F13F9855CE1E14C1A /* ArduinoOutputEditor.cpp */, + 721B60E285ADAC54829028B9 /* ArduinoOutputEditor.h */, + ); + name = ArduinoOutput; + sourceTree = "<group>"; + }; 9D44948383EAABF451302146 /* open-ephys */ = { isa = PBXGroup; children = ( @@ -2780,68 +3045,31 @@ 9F16043BF599BCE0C02A00A5 /* Editors */ = { isa = PBXGroup; children = ( - 7B7819A5759B54D91E334447 /* LfpTriggeredAverageEditor.cpp */, - 2196ED9DD4262C60135E77F5 /* LfpTriggeredAverageEditor.h */, - 07BEF02C2B930DF7847C2921 /* SerialInputEditor.cpp */, - 39D2C460FE587C5F564495A0 /* SerialInputEditor.h */, - 28CCF04CCC028BAE0AEE5840 /* ElectrodeButtons.cpp */, - 15870472BA2B1779521A21BD /* ElectrodeButtons.h */, - B083B1375828610D55F12CF3 /* ChannelMappingEditor.cpp */, - E442E1FA7B58BFF6F1D8CBD8 /* ChannelMappingEditor.h */, - 4B0097003751A59A11FA8C5B /* FileReaderEditor.cpp */, - 3067867C8C0F6CF6F086A6FC /* FileReaderEditor.h */, - 75B1E4EFCDA9A506CFEDB09F /* PhaseDetectorEditor.cpp */, - 748AF0975561FFFE51DF5F58 /* PhaseDetectorEditor.h */, - 25A9484825F1B93ABC0E577F /* PulsePalOutputEditor.cpp */, - 00A54510EFB9B0966D0B430C /* PulsePalOutputEditor.h */, - 45D78C8EF660EECE64BAA33F /* RHD2000Editor.cpp */, - BBCDE855BD0A58D3779D96A8 /* RHD2000Editor.h */, - 1552007C6C6AF750278C5BE5 /* RecordControlEditor.cpp */, - 0B2B7732073D56E484950C8D /* RecordControlEditor.h */, - 9C39C584DA6F507E773687EE /* ReferenceNodeEditor.cpp */, - 1C93ECD2B04F39923E66B529 /* ReferenceNodeEditor.h */, - C5ABE6BDCA91410BA92A7BD9 /* ResamplingNodeEditor.cpp */, - 0CCE619599DB39323E49FF3C /* ResamplingNodeEditor.h */, - 169F1B20FC9FFE88C53D2735 /* FPGAOutputEditor.cpp */, - 92528D6653802FACF658D8EA /* FPGAOutputEditor.h */, - 1AD76E8111A738A8F3717060 /* ArduinoOutputEditor.cpp */, - 8B9C0831BE4E09B7C0078B7E /* ArduinoOutputEditor.h */, E216D095C98F850A5FB6FB0F /* ChannelSelector.cpp */, 70F06DBCA3948BCC1062E36F /* ChannelSelector.h */, - 46E3A634686BFEF787229582 /* ParameterEditor.cpp */, - 8B745839B225E44C9EB5C6FA /* ParameterEditor.h */, - 1EC95CD1D830F6D85ADB3B9D /* SpikeDisplayEditor.cpp */, - 25ABEB43042E98C668A16432 /* SpikeDisplayEditor.h */, - CAA3B9396EA62166234DAEF1 /* VisualizerEditor.cpp */, - B23E6EBB5F99CF7FC72FAC4E /* VisualizerEditor.h */, - 29FD7B383C5DDACAA7B8DFD3 /* MergerEditor.cpp */, - FC887C6CD74FE33F8BA784A6 /* MergerEditor.h */, - 04C6B933E1603B4D0916570D /* ImageIcon.cpp */, - C51CD15B311D0AAC08D0B908 /* ImageIcon.h */, - C79249376E3FDF10615E16EA /* WiFiOutputEditor.cpp */, - BA2923571505AD47CA1EF878 /* WiFiOutputEditor.h */, - 70151263C4CB8A4F79431E11 /* EventNodeEditor.cpp */, - 985F2B5047476B272B1A4BD4 /* EventNodeEditor.h */, - 9136BD46BE1E28A96FBBD440 /* SignalGeneratorEditor.cpp */, - 265EDA19C88E74249FD66609 /* SignalGeneratorEditor.h */, - 8A91849BE6B96EB8C0663469 /* LfpDisplayEditor.cpp */, - E594A85A291E0625E0410A85 /* LfpDisplayEditor.h */, - 6328434A329C353DB8D9512C /* SourceNodeEditor.cpp */, - 028D4D3C0862B4B1312E2395 /* SourceNodeEditor.h */, - D51315B4241B019BE43EE4F1 /* SplitterEditor.cpp */, - CCC20313AD0D0993F9EDD1B3 /* SplitterEditor.h */, - A252FE4E6A360CBC4AF694B3 /* SpikeDetectorEditor.cpp */, - 83E5EA2AA0CB928889AC80AB /* SpikeDetectorEditor.h */, - 10BE33089BA6F3468F36CD6C /* AudioEditor.cpp */, - A0E3B98412D88921BB0AA58E /* AudioEditor.h */, - D90290A0AA2C36CE757E46D5 /* FilterEditor.cpp */, - 49FA151B1837E543D18858EB /* FilterEditor.h */, + 28CCF04CCC028BAE0AEE5840 /* ElectrodeButtons.cpp */, + 15870472BA2B1779521A21BD /* ElectrodeButtons.h */, D3AE8303545E28D793312F46 /* GenericEditor.cpp */, 984BC60C0AFF3EDED692FA01 /* GenericEditor.h */, + 04C6B933E1603B4D0916570D /* ImageIcon.cpp */, + C51CD15B311D0AAC08D0B908 /* ImageIcon.h */, + CAA3B9396EA62166234DAEF1 /* VisualizerEditor.cpp */, + B23E6EBB5F99CF7FC72FAC4E /* VisualizerEditor.h */, ); name = Editors; sourceTree = "<group>"; }; + A1678CA8F8E882F5D7EFDB3E /* Merger */ = { + isa = PBXGroup; + children = ( + 07B84F46CF90D04BB6B673C5 /* Merger.cpp */, + CA50A6F43BD78D01A8BE974B /* Merger.h */, + BAA5B3AD1A27F8C4D37A6869 /* MergerEditor.cpp */, + 8C639E4F97B7D6070028623A /* MergerEditor.h */, + ); + name = Merger; + sourceTree = "<group>"; + }; A7589AF92E6E958E1F866761 /* Source */ = { isa = PBXGroup; children = ( @@ -2888,6 +3116,17 @@ name = juce_video; sourceTree = "<group>"; }; + AE49B2C17B100D5B4F81F694 /* EventNode */ = { + isa = PBXGroup; + children = ( + 2592795DB135E0F2C04406F3 /* EventNode.cpp */, + 10AC8A3D981DAE425D24F9F1 /* EventNode.h */, + F6BE430A8D1C6240286ED75B /* EventNodeEditor.cpp */, + 51BB55D1CE1667CD340E8358 /* EventNodeEditor.h */, + ); + name = EventNode; + sourceTree = "<group>"; + }; AF98861ADFF70900F6FD1833 /* scanning */ = { isa = PBXGroup; children = ( @@ -2910,6 +3149,17 @@ name = Network; sourceTree = "<group>"; }; + B17425A884659AB7B5FDCDD0 /* SpikeDetector */ = { + isa = PBXGroup; + children = ( + 89CDE7ED25D0EB7452486E85 /* SpikeDetector.cpp */, + 13A33B5CF55BDF7BDC9D1D0C /* SpikeDetector.h */, + D0F10367EBD3945780342A37 /* SpikeDetectorEditor.cpp */, + 811A8689009F6FBEE2168F96 /* SpikeDetectorEditor.h */, + ); + name = SpikeDetector; + sourceTree = "<group>"; + }; B324A7959C768520ED46A064 /* native */ = { isa = PBXGroup; children = ( @@ -2933,6 +3183,15 @@ name = native; sourceTree = "<group>"; }; + B3EC4C17E1555DCD89B1B62C /* Channel */ = { + isa = PBXGroup; + children = ( + FA8CC6FD54A9F20DA755F2EA /* Channel.cpp */, + 74BAC33D6BC1D961F04DCC72 /* Channel.h */, + ); + name = Channel; + sourceTree = "<group>"; + }; B49948DDB0E13018A81FFF94 /* containers */ = { isa = PBXGroup; children = ( @@ -2960,6 +3219,17 @@ name = containers; sourceTree = "<group>"; }; + B59685FA20FE7A2DC1FF65C0 /* PhaseDetector */ = { + isa = PBXGroup; + children = ( + 4F10D1D2F5ED2E7F9A997D4C /* PhaseDetector.cpp */, + 35BB20110BAC6346AA605BF9 /* PhaseDetector.h */, + 3FE8C41480F07050CC21635F /* PhaseDetectorEditor.cpp */, + 31FB49244DF85E2ACCFBDF2B /* PhaseDetectorEditor.h */, + ); + name = PhaseDetector; + sourceTree = "<group>"; + }; B872BDEA72D05524E71AFE06 /* javascript */ = { isa = PBXGroup; children = ( @@ -2991,53 +3261,6 @@ name = misc; sourceTree = "<group>"; }; - BCD632E634E0F8A50827F9B6 /* Dsp */ = { - isa = PBXGroup; - children = ( - 1989E86F8DFDE34887AC0326 /* Bessel.cpp */, - 29D7893C278FFE00782637B6 /* Bessel.h */, - 22801F75289646F6A85E5583 /* Biquad.cpp */, - 361D8C54B3E54766CBC48046 /* Biquad.h */, - B47B3368AA1A182B0CA1AB26 /* Butterworth.cpp */, - 6D59D5780ECD2CC9703CB499 /* Butterworth.h */, - 09BCBD414282A3AA4F66A3A5 /* Cascade.cpp */, - E8174B3346AA69361BF73AE1 /* Cascade.h */, - AC2CFF4DA5CE431FCC628BA3 /* ChebyshevI.cpp */, - EC780F52ABBD7317A5CE2F33 /* ChebyshevI.h */, - B767A249792EB15A87054409 /* ChebyshevII.cpp */, - 9CEDA04DB321755AF74D6FAF /* ChebyshevII.h */, - E8480C4ED7F9579F6172F7B5 /* Common.h */, - D8D895B3AD895C6E7FD446BF /* Custom.cpp */, - 3063CF211ABB734A9FD452EC /* Custom.h */, - 2B93450006102A0093F5EACB /* Design.cpp */, - 7ACB1CB66D69738904358F43 /* Design.h */, - E90FCB43DA2FF766597DA75E /* Documentation.cpp */, - 1086169B0EE86E04B64575C2 /* Dsp.h */, - 392408C1943AC6234BAAC743 /* Elliptic.cpp */, - A95D898F0998F4609E992B5F /* Elliptic.h */, - 587FCA2485B9C89C2A99C23A /* Filter.cpp */, - C39772F796D85E8FE98474D5 /* Filter.h */, - 38313692308D501E4CADF1D5 /* Layout.h */, - C4B0DF8094C90543A65E03E3 /* Legendre.cpp */, - 4939A8B8300394AAD0926C0B /* Legendre.h */, - A41C5A4CD5CF8EEFF993A8B1 /* MathSupplement.h */, - 3F6C67E29CDEDF2EF61C054F /* Param.cpp */, - C3BD84D9B090F98DD09F5958 /* Params.h */, - 65312FAD0900119CDF6CF414 /* PoleFilter.cpp */, - 5A8D46BEB81DDF24462E3D92 /* PoleFilter.h */, - 9A21A229CFACC67E31F4F727 /* RBJ.cpp */, - E44B26F5D97CB483242DE05B /* RBJ.h */, - 3F69480D6145C77992FA59BA /* RootFinder.cpp */, - 7EFF8622168303A4391D6CAE /* RootFinder.h */, - F0CA3600E09054D7DB3B0067 /* SmoothedFilter.h */, - C1CB526B75E406851FA918C6 /* State.cpp */, - 9428D7423971764AC0BA9CB7 /* State.h */, - 6340B1D2FECEABBBE6C0DE28 /* Types.h */, - CFB86C1F2A6076ADC36692AA /* Utilities.h */, - ); - name = Dsp; - sourceTree = "<group>"; - }; C451728043944D40C69166C1 /* Audio */ = { isa = PBXGroup; children = ( @@ -3047,18 +3270,25 @@ name = Audio; sourceTree = "<group>"; }; + C451C93CE8C359C1A4BD23C7 /* SerialInput */ = { + isa = PBXGroup; + children = ( + 4C01F867D43DF7B1D98B887E /* SerialInput.cpp */, + 12F73B770FFDEA8696710E86 /* SerialInput.h */, + 6D38B76951D31D96F1B71E0F /* SerialInputEditor.cpp */, + 27FB12D08303BEC9CD15E317 /* SerialInputEditor.h */, + ); + name = SerialInput; + sourceTree = "<group>"; + }; C4B85C0286AC2510730355E3 /* Visualization */ = { isa = PBXGroup; children = ( + 66463AB11EA4D6341C32F27E /* DataWindow.cpp */, + FFFBDB9A00240D797751FEE6 /* DataWindow.h */, 5894D40A0E8FA6E9B3EBF9D9 /* SpikeObject.cpp */, ADCB42E4C5641007A4B78025 /* SpikeObject.h */, - A7D4C9E3ED3763847C087F46 /* SpikeDisplayCanvas.cpp */, - 4E6EE225098D32E7D5DE60B2 /* SpikeDisplayCanvas.h */, 215E1BD79B5870D5356810F0 /* Visualizer.h */, - 66463AB11EA4D6341C32F27E /* DataWindow.cpp */, - FFFBDB9A00240D797751FEE6 /* DataWindow.h */, - 4A94E809624F99387E600399 /* LfpDisplayCanvas.cpp */, - 12B5DDCB6E5ECD93A4C55BB5 /* LfpDisplayCanvas.h */, ); name = Visualization; sourceTree = "<group>"; @@ -3114,6 +3344,17 @@ name = misc; sourceTree = "<group>"; }; + CB7739DB9922F30C029B2A02 /* SourceNode */ = { + isa = PBXGroup; + children = ( + 242B80832B3C8FF4F3CC18F1 /* SourceNode.cpp */, + A7BF9312D81FF5DCEAB8AC47 /* SourceNode.h */, + 326F8386BCD4E4189D0CC00F /* SourceNodeEditor.cpp */, + B5D805B691B1C38D959F6B54 /* SourceNodeEditor.h */, + ); + name = SourceNode; + sourceTree = "<group>"; + }; CDD260628D8AFE969895A610 /* text */ = { isa = PBXGroup; children = ( @@ -3159,6 +3400,21 @@ name = colour; sourceTree = "<group>"; }; + D3F8D770C9E60B5BA2CCBC68 /* SpikeSorter */ = { + isa = PBXGroup; + children = ( + 92F51CF12E0C21F38D5E61E8 /* SpikeSortBoxes.cpp */, + FBF2BF7B97C2FF8557CF39E6 /* SpikeSortBoxes.h */, + D45EF9812FBC284BCB7EEB7C /* SpikeSorter.cpp */, + 78400C0FB79F6B0D1A27A6D4 /* SpikeSorter.h */, + 6DF620BE87EA9F7F25A1144A /* SpikeSorterCanvas.cpp */, + B66B8CFF619CBF2D66F031E3 /* SpikeSorterCanvas.h */, + F46365D8E42099148B843C95 /* SpikeSorterEditor.cpp */, + F753A8E9CE0C51998066EA07 /* SpikeSorterEditor.h */, + ); + name = SpikeSorter; + sourceTree = "<group>"; + }; D6EA061B97C039BF4BAAB444 /* effects */ = { isa = PBXGroup; children = ( @@ -3288,6 +3544,12 @@ DEA24DC5AC8325310FB40395 /* DataThreads */ = { isa = PBXGroup; children = ( + 80A19F69D9B205BCC0ABA293 /* EcubeEditor.cpp */, + C7D36423459E79F3F462A421 /* EcubeEditor.h */, + FAFA97C9B7C7635298E274DB /* RHD2000Editor.cpp */, + FD9EE3CDFCEE08859781DA65 /* RHD2000Editor.h */, + AFBAE04615D379A18B133090 /* EcubeThread.cpp */, + A166A3013C7AF1BCCA050367 /* EcubeThread.h */, EBA825AF6FDB51EBA368CB8D /* rhythm-api */, A3FB0EA0264580F6B00D993B /* RHD2000Thread.cpp */, 23A6BA852B71DAAF3F709428 /* RHD2000Thread.h */, @@ -3312,6 +3574,17 @@ name = documents; sourceTree = "<group>"; }; + E2624A71F15AE5C96B34505B /* Splitter */ = { + isa = PBXGroup; + children = ( + B9068FF0373FA8321C33C42C /* Splitter.cpp */, + E1E9FAB63BD90C10F2BEF74C /* Splitter.h */, + 607CC2BFCB0622B3348FA1AD /* SplitterEditor.cpp */, + 385F66531BAB16BA754E901E /* SplitterEditor.h */, + ); + name = Splitter; + sourceTree = "<group>"; + }; E2F864696FA2DDDAD60C7E83 /* juce_audio_formats */ = { isa = PBXGroup; children = ( @@ -3403,6 +3676,28 @@ name = "rhythm-api"; sourceTree = "<group>"; }; + EC06134D54CF6C9870853ED6 /* PulsePalOutput */ = { + isa = PBXGroup; + children = ( + 183701B0661B6FE784C6A75F /* PulsePalOutput.cpp */, + E1A51630F1C6E392EBEDD469 /* PulsePalOutput.h */, + DE0EA2212323DEFEBA3D078F /* PulsePalOutputEditor.cpp */, + 623684E73A6005C7BB2717A6 /* PulsePalOutputEditor.h */, + ); + name = PulsePalOutput; + sourceTree = "<group>"; + }; + F12EEDE785E2D38F654AE1B1 /* MessageCenter */ = { + isa = PBXGroup; + children = ( + BC1543B1F822FEEDCB9AC26D /* MessageCenter.cpp */, + 8F058EA775325F9C5650944E /* MessageCenter.h */, + AEFC8A0A9A35F50E59FDE678 /* MessageCenterEditor.cpp */, + 9EB2B238943CCC32B587881C /* MessageCenterEditor.h */, + ); + name = MessageCenter; + sourceTree = "<group>"; + }; F196226BFBA15D76688C61C6 /* juce_cryptography */ = { isa = PBXGroup; children = ( @@ -3428,6 +3723,26 @@ name = juce_events; sourceTree = "<group>"; }; + F8338C653582335A30EADE40 /* EventDetector */ = { + isa = PBXGroup; + children = ( + C5C843AC83A36BE87E3F97F8 /* EventDetector.cpp */, + 9410421AB1CD18F754FD4A9E /* EventDetector.h */, + ); + name = EventDetector; + sourceTree = "<group>"; + }; + F884A8B18F33A6FFE6809906 /* RecordControl */ = { + isa = PBXGroup; + children = ( + E849E3966302E7D4D06712F5 /* RecordControl.cpp */, + E0AB41DFF4A382B93658F53E /* RecordControl.h */, + 56242BB33B53F133914517BD /* RecordControlEditor.cpp */, + F379BA0589FB65817B721314 /* RecordControlEditor.h */, + ); + name = RecordControl; + sourceTree = "<group>"; + }; FA0E0597ED415901958AD5AE /* Products */ = { isa = PBXGroup; children = ( @@ -3550,81 +3865,18 @@ files = ( 14BDAEA656AAFA60334CC55C /* AccessClass.cpp in Sources */, C853FCE2F6C91B3643322CF0 /* PracticalSocket.cpp in Sources */, - 00A0D05390DB9F2B74DDAA78 /* Bessel.cpp in Sources */, - 4AD3281B0CCF122A25E33667 /* Biquad.cpp in Sources */, - F505DF3C2BA492B5A2F28D05 /* Butterworth.cpp in Sources */, - B226387EB0FCE3BE6773FF61 /* Cascade.cpp in Sources */, - B3B08037F49EC7540586828F /* ChebyshevI.cpp in Sources */, - B6C73582C501D8C3C03A4860 /* ChebyshevII.cpp in Sources */, - 129ADFA8B25DE091AFA2D9E3 /* Custom.cpp in Sources */, - 285FF16149C85F2793EBCBAE /* Design.cpp in Sources */, - D19775DC99C67AD20F98EF17 /* Documentation.cpp in Sources */, - CB470032BC92A30906C96258 /* Elliptic.cpp in Sources */, - 4FEC4EC2796E37A3B11B50B9 /* Filter.cpp in Sources */, - A44FEA7117CFE2F06B9889B4 /* Legendre.cpp in Sources */, - C0E966234C8AF91C19CF6EA4 /* Param.cpp in Sources */, - BBE886EA79C50D0D68A5A753 /* PoleFilter.cpp in Sources */, - 9D17609E468FC65EB70ED7F4 /* RBJ.cpp in Sources */, - AE06672D2CBF8F64465B2126 /* RootFinder.cpp in Sources */, - 69630D3ECA4D6014EE3734CD /* State.cpp in Sources */, 0AE243437B40602D35435C32 /* AudioComponent.cpp in Sources */, - B89453078EB0A8107F39EDF3 /* SerialInput.cpp in Sources */, - F25EC78DCCC9CCEE805AE011 /* FileReader.cpp in Sources */, - EA6A1BDDF81818D516B93DD6 /* ChannelMappingNode.cpp in Sources */, - 7077270005BA819E3D5654B5 /* PulsePalOutput.cpp in Sources */, - FDCFDC9CC6D7A82131190FB0 /* ReferenceNode.cpp in Sources */, - 11D82BA398E9433440B76F66 /* PhaseDetector.cpp in Sources */, - EDEE5E21F0C9BDB7DB796083 /* AudioResamplingNode.cpp in Sources */, - C6F08BF3EF53274A42BB88EB /* Channel.cpp in Sources */, - 790911EDF00A4BF77327D99A /* PulsePal.cpp in Sources */, - DDDFAE2042D8AD20CC78CE3C /* ofArduino.cpp in Sources */, - 582C224AA50C9395810C8E27 /* ofSerial.cpp in Sources */, - 704484388E63CDE33491E1AB /* EventDetector.cpp in Sources */, - 1691EC0AC4C7083D65B925E2 /* FPGAOutput.cpp in Sources */, - AD032CEA5DBE4D4C76D3D2D1 /* ArduinoOutput.cpp in Sources */, - 9E8544C3983B3203530B5A49 /* Parameter.cpp in Sources */, - 685151FF4FB872983524A5C3 /* SpikeDisplayNode.cpp in Sources */, - 627C7B84F5FD275FAF43663A /* WiFiOutput.cpp in Sources */, - C59764685E62E7C4D323F84B /* LfpDisplayNode.cpp in Sources */, - E4DA638CDD4DD574A6CD843E /* RecordControl.cpp in Sources */, - 2B4A80DCF867DC025C21966B /* Merger.cpp in Sources */, - D0E9E20F9D8FDA700BB6D820 /* Splitter.cpp in Sources */, - 19BB86C918F89D1377F8A0E1 /* SpikeObject.cpp in Sources */, - EE56A6BBBFA4A27A4BCF7279 /* SpikeDisplayCanvas.cpp in Sources */, - 1B620FC17AAECA4C5DE741E2 /* DataWindow.cpp in Sources */, - 5570682BF1A39FB3E3FAC182 /* LfpDisplayCanvas.cpp in Sources */, - ED8CB527B27C67E9E4DA027C /* SpikeDetector.cpp in Sources */, - DE758AF46844DF951655966C /* AudioNode.cpp in Sources */, - 80E5365461A5A7A32C48C563 /* EventNode.cpp in Sources */, - DD77A0AB68C932F294B753C2 /* LfpTriggeredAverageEditor.cpp in Sources */, - A3CF90DE56808A47519FC101 /* SerialInputEditor.cpp in Sources */, - 029C3B11BE586DA100895A60 /* ElectrodeButtons.cpp in Sources */, - 52E0D9DC7F5C4703257D8BEB /* ChannelMappingEditor.cpp in Sources */, - EA46BA3970E958013FF85690 /* FileReaderEditor.cpp in Sources */, - 88B896EB9793E0C44410D981 /* PhaseDetectorEditor.cpp in Sources */, - 6272253EB0051C1F215CD4D9 /* PulsePalOutputEditor.cpp in Sources */, - AF26E388BF6536803E762CB1 /* RHD2000Editor.cpp in Sources */, - 0CEFF81CD8861F959DB13362 /* RecordControlEditor.cpp in Sources */, - 352F3875222B1D233013AAF9 /* ReferenceNodeEditor.cpp in Sources */, - F0EC60AEFAFF3D289F8110BE /* ResamplingNodeEditor.cpp in Sources */, - C3406F00595AEFF068EDB162 /* FPGAOutputEditor.cpp in Sources */, - 3A2E957EB8D117C535F119E9 /* ArduinoOutputEditor.cpp in Sources */, - 52AE3F7AEED81BA9ED5C4830 /* ChannelSelector.cpp in Sources */, - 3933895CA488855A23943F61 /* ParameterEditor.cpp in Sources */, - AF67C81811F18FCE6AA9C895 /* SpikeDisplayEditor.cpp in Sources */, - AA16BE5A6BBD024C8FCFCDA8 /* VisualizerEditor.cpp in Sources */, - 992137E90F9D41522FD56875 /* MergerEditor.cpp in Sources */, - 7F188166D38DA7FB23311413 /* ImageIcon.cpp in Sources */, - A454D138EC507C01D299AB0F /* WiFiOutputEditor.cpp in Sources */, - 784125612E2B7AC6CD89D835 /* EventNodeEditor.cpp in Sources */, - 21539690A9A5DD20AFAF41D3 /* SignalGeneratorEditor.cpp in Sources */, - 0836C50051EF59BF91D7B12D /* LfpDisplayEditor.cpp in Sources */, - 55CD2E9F373B69C3E8363B78 /* SourceNodeEditor.cpp in Sources */, - 2B29D90B985E9EB788472EFE /* SplitterEditor.cpp in Sources */, - D0873C347977633B4421B94D /* SpikeDetectorEditor.cpp in Sources */, - BF3254F07C15D467D6DB3FEF /* AudioEditor.cpp in Sources */, - 6029B20DF2BD523AC0F78896 /* FilterEditor.cpp in Sources */, - 6702EEA4E99D503C0EE933C4 /* GenericEditor.cpp in Sources */, + 55227B30828797A8DCB0B91D /* ArduinoOutput.cpp in Sources */, + 527EB48A4A9C2F4FF1BC4FB2 /* ArduinoOutputEditor.cpp in Sources */, + 8352817FEDC7542D3E65B49A /* AudioEditor.cpp in Sources */, + 44DB81313BDDF1ECB6AD33FE /* AudioNode.cpp in Sources */, + 64FC0EA0C132341C1C3E98E1 /* AudioResamplingNode.cpp in Sources */, + C45009DBCD71E9E234BFCE97 /* Channel.cpp in Sources */, + E6038800731F7C747D181A51 /* ChannelMappingEditor.cpp in Sources */, + FFCA1C44C024BCA1878F49FE /* ChannelMappingNode.cpp in Sources */, + C9678AAD3560E89CCE8FA529 /* EcubeEditor.cpp in Sources */, + B88BCF2522AD283DDC0B4F16 /* RHD2000Editor.cpp in Sources */, + 5C597B1A42C8CB3940CBDDA9 /* EcubeThread.cpp in Sources */, 89FCE8890946693CD5FC4A70 /* okFrontPanelDLL.cpp in Sources */, C9AC286A46B3A1318F298DEF /* rhd2000datablock.cpp in Sources */, DA836EC803E4FF4EDEBE6386 /* rhd2000evalboard.cpp in Sources */, @@ -3634,13 +3886,92 @@ 6B67D7B6301182C7621294B6 /* FPGAThread.cpp in Sources */, FAE745870674A07A65690433 /* DataBuffer.cpp in Sources */, 24CC7E9A7E87F762D4AB0467 /* DataThread.cpp in Sources */, - 66F3B79BDF9BFB631D7E3584 /* RecordNode.cpp in Sources */, - 996F9E4989EB47941D8100DA /* SignalGenerator.cpp in Sources */, - BE54C019A73BBAE05BFD7D17 /* ResamplingNode.cpp in Sources */, - 5AE42EF7A713B1EC0ACF9EDE /* FilterNode.cpp in Sources */, - 71111DE81104B1536ECB6DFB /* SourceNode.cpp in Sources */, - 85A60568B3DC342C76B4E679 /* GenericProcessor.cpp in Sources */, - 8A5BACA019DA9B0EFAD5CE93 /* ProcessorGraph.cpp in Sources */, + 9252537C12447F047243DEE9 /* Bessel.cpp in Sources */, + B081F3F4FA6D8C35E2EEE778 /* Biquad.cpp in Sources */, + 7398C5E00B9093F78C697706 /* Butterworth.cpp in Sources */, + 2416F9D9E4D89A706514FC25 /* Cascade.cpp in Sources */, + 66507CA290B4730FE77B7ABC /* ChebyshevI.cpp in Sources */, + 031957790B288A3ABED26A87 /* ChebyshevII.cpp in Sources */, + 07868E8D0C1A0BB3A94E87AB /* Custom.cpp in Sources */, + 2B90821075BA2DF4565644D4 /* Design.cpp in Sources */, + E18FD0CB21E95A6E81286611 /* Documentation.cpp in Sources */, + AD938EF313A6AC879CA4BED7 /* Elliptic.cpp in Sources */, + 56C42E2DD0B4905488948796 /* Filter.cpp in Sources */, + DC1D91C883B609DBEF7A4235 /* Legendre.cpp in Sources */, + 8ED8249C48B1BB53F617A789 /* Param.cpp in Sources */, + AD588F05EDFE59FD48A3F9B8 /* PoleFilter.cpp in Sources */, + 6C0A7B0D658E39227319148F /* RBJ.cpp in Sources */, + 469E1EF233BCD61F44687C0F /* RootFinder.cpp in Sources */, + 411543734DA2029A3030D903 /* State.cpp in Sources */, + 52AE3F7AEED81BA9ED5C4830 /* ChannelSelector.cpp in Sources */, + 029C3B11BE586DA100895A60 /* ElectrodeButtons.cpp in Sources */, + 6702EEA4E99D503C0EE933C4 /* GenericEditor.cpp in Sources */, + 7F188166D38DA7FB23311413 /* ImageIcon.cpp in Sources */, + AA16BE5A6BBD024C8FCFCDA8 /* VisualizerEditor.cpp in Sources */, + 44D7379F739C19C7B78B95F5 /* EventDetector.cpp in Sources */, + F4808CE43E77C8EC285A39DC /* EventNode.cpp in Sources */, + D1F0765F1497D5228ABCA63C /* EventNodeEditor.cpp in Sources */, + 68EBB4CEB08BD3DEAC450B95 /* FileReader.cpp in Sources */, + 24800AF87AD21CE652552EDE /* FileReaderEditor.cpp in Sources */, + 0203D029CE7420984F737E51 /* FilterEditor.cpp in Sources */, + 3BAE3A1FD0834E798B8602BF /* FilterNode.cpp in Sources */, + 1A415CE073017DDDA7F2E234 /* FPGAOutput.cpp in Sources */, + 63B3CC385B0988C7ABA3B07B /* FPGAOutputEditor.cpp in Sources */, + B49852F77C0C392C159A1914 /* GenericProcessor.cpp in Sources */, + 9F431DA23C92CA0F8E3A2A28 /* LfpDisplayCanvas.cpp in Sources */, + BFFD23BD72ECEC9E54936061 /* LfpDisplayEditor.cpp in Sources */, + FA882EEE408CBBDC7BD90F14 /* LfpDisplayNode.cpp in Sources */, + 0E62780F9978861D5D2BCF71 /* LfpTriggeredAverageCanvas.cpp in Sources */, + E13848868678C0655147C59D /* LfpTriggeredAverageEditor.cpp in Sources */, + 01646F263C203BB412580CB8 /* LfpTriggeredAverageNode.cpp in Sources */, + 6D00BABD3FE1AA0EAA267C1C /* Merger.cpp in Sources */, + AD371C6F383F03EF392B6581 /* MergerEditor.cpp in Sources */, + 4EF2825142BBAA76FD55FE26 /* MessageCenter.cpp in Sources */, + 3B05807D08271664EEC4977C /* MessageCenterEditor.cpp in Sources */, + F2586A2DCEF44961AEA247E8 /* ParameterEditor.cpp in Sources */, + 3E7939ABAA984EE8BFC8CEDD /* Parameter.cpp in Sources */, + C9F9AE4CB2009DFFD7D7A67F /* PhaseDetector.cpp in Sources */, + C59D4B35ABCF3BE6D0A0665E /* PhaseDetectorEditor.cpp in Sources */, + BAC379C03C2E7995F2393EF5 /* ProcessorGraph.cpp in Sources */, + 82160D8346428EC9F641FAD6 /* PulsePalOutput.cpp in Sources */, + 15C43033BAB27663B4226539 /* PulsePalOutputEditor.cpp in Sources */, + BD091BDB684BB28E0F953B8B /* RecordControl.cpp in Sources */, + 395F1886484CA576C63B7112 /* RecordControlEditor.cpp in Sources */, + E1247DDF1C88D99691499E52 /* EngineConfigWindow.cpp in Sources */, + 0E036CEA1285F9B162A07356 /* HDF5FileFormat.cpp in Sources */, + A4A2DF3FA65BAB4322FE5E74 /* HDF5Recording.cpp in Sources */, + 0A8D8C2D02858F0F08356EA9 /* OriginalRecording.cpp in Sources */, + AEDA8F23648EABF79215B566 /* RecordEngine.cpp in Sources */, + B806F023DF817BB2D59FEEFD /* RecordNode.cpp in Sources */, + A5A90525A975EC3B1E40086E /* ReferenceNode.cpp in Sources */, + 79FC643530710BF2885932C1 /* ReferenceNodeEditor.cpp in Sources */, + 69B5045877D4C674E8A4967F /* ResamplingNode.cpp in Sources */, + 97105BCBC5B1BE4E86D48899 /* ResamplingNodeEditor.cpp in Sources */, + 790911EDF00A4BF77327D99A /* PulsePal.cpp in Sources */, + DDDFAE2042D8AD20CC78CE3C /* ofArduino.cpp in Sources */, + 582C224AA50C9395810C8E27 /* ofSerial.cpp in Sources */, + 846EF153B423E09BC5BFDAFD /* SerialInput.cpp in Sources */, + 66308BBB808DBB920AB3CBAB /* SerialInputEditor.cpp in Sources */, + 1D0D651813C4A1DCBE811242 /* SignalGenerator.cpp in Sources */, + BFAC940E5771516A92281F96 /* SignalGeneratorEditor.cpp in Sources */, + 7B69E73AF79BB2B10BAA559C /* SourceNode.cpp in Sources */, + 74A14124A3B0C5FB13583B57 /* SourceNodeEditor.cpp in Sources */, + 6D8A9AC5ECC0F2D26304849E /* SpikeDetector.cpp in Sources */, + AFC645928D103D9FA51481CA /* SpikeDetectorEditor.cpp in Sources */, + 84BB28DDFF317D243DDC7FA2 /* SpikeDisplayCanvas.cpp in Sources */, + A14CA9089A09267E95C93E1D /* SpikeDisplayEditor.cpp in Sources */, + DED0D08EFA1EFF4F1D4D3BEF /* SpikeDisplayNode.cpp in Sources */, + 9635A954DB8FDD6E19B977C3 /* SpikeSortBoxes.cpp in Sources */, + B9718533E5255AEC3F6C7B2F /* SpikeSorter.cpp in Sources */, + 58EC9F834448B334410385EB /* SpikeSorterCanvas.cpp in Sources */, + 027A01C5025DEA9DAFF605D3 /* SpikeSorterEditor.cpp in Sources */, + 4910924155F31E96B9BAD050 /* Splitter.cpp in Sources */, + 66DE280C28A69B2002C40A86 /* SplitterEditor.cpp in Sources */, + 1B620FC17AAECA4C5DE741E2 /* DataWindow.cpp in Sources */, + 19BB86C918F89D1377F8A0E1 /* SpikeObject.cpp in Sources */, + AEE1F2B70ED51F7AFEF4E93B /* WiFiOutput.cpp in Sources */, + 74D0CA6935D890153FB58C56 /* WiFiOutputEditor.cpp in Sources */, + 8F39AD3F7938EFE82D06E89F /* EcubeDialogComponent.cpp in Sources */, BA608CEFC85F7AB9E30E0EB3 /* CustomArrowButton.cpp in Sources */, D499273B65D901D0A101CAAA /* GraphViewer.cpp in Sources */, 95AE939ADE096394CCD2526F /* EditorViewportButtons.cpp in Sources */, @@ -3650,7 +3981,6 @@ 9A80E3D1D1758A31D2169497 /* CustomLookAndFeel.cpp in Sources */, F4397EAE00E0B9F96C8B6C07 /* InfoLabel.cpp in Sources */, 09673DA3B4D6EA61DEFC0C46 /* DataViewport.cpp in Sources */, - 591CED1277A8C945EF60841C /* MessageCenter.cpp in Sources */, 58D3FF3B1F462634167BDFB5 /* ControlPanel.cpp in Sources */, 3162B66BC8118715AAA527D7 /* UIComponent.cpp in Sources */, 004E78BC139419671A9EA137 /* MainWindow.cpp in Sources */, @@ -3690,7 +4020,6 @@ GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_NAME = "open-ephys"; WARNING_CFLAGS = "-Wreorder"; ZERO_LINK = NO; @@ -3704,22 +4033,33 @@ CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; + DEAD_CODE_STRIPPING = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 3; GCC_PREPROCESSOR_DEFINITIONS = ( "_NDEBUG=1", "NDEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1", + "JUCE_APP_VERSION=0.3.2", + "JUCE_APP_VERSION_HEX=0x302", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( ../../JuceLibraryCode, + /opt/local/include, + ../../JuceLibraryCode/modules, "$(inherited)", ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = /opt/local/lib; MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; + OTHER_LDFLAGS = ( + "-lhdf5", + "-lhdf5_cpp", + ); + SDKROOT = macosx10.8; SDKROOT_ppc = macosx10.5; }; name = Release; @@ -3738,16 +4078,25 @@ "_DEBUG=1", "DEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1", + "JUCE_APP_VERSION=0.3.2", + "JUCE_APP_VERSION_HEX=0x302", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( ../../JuceLibraryCode, + /opt/local/include, + ../../JuceLibraryCode/modules, "$(inherited)", ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = /opt/local/lib; MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; - ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "-lhdf5", + "-lhdf5_cpp", + ); + SDKROOT = macosx10.8; SDKROOT_ppc = macosx10.5; }; name = Debug; @@ -3766,7 +4115,6 @@ GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.8; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "open-ephys"; WARNING_CFLAGS = "-Wreorder"; diff --git a/Builds/VisualStudio2012/open-ephys.v12.suo b/Builds/VisualStudio2012/open-ephys.v12.suo new file mode 100644 index 0000000000000000000000000000000000000000..1e2cb6bfd97ff8ac68505d3b65464004fe4ca9c9 Binary files /dev/null and b/Builds/VisualStudio2012/open-ephys.v12.suo differ diff --git a/Builds/VisualStudio2012/open-ephys.vcxproj b/Builds/VisualStudio2012/open-ephys.vcxproj index 38df4a45bda9a1fd2ce1e41404814a8ffe20ccb4..d738d24725b8566be4b2e931e65aaacfcf044a28 100644 --- a/Builds/VisualStudio2012/open-ephys.vcxproj +++ b/Builds/VisualStudio2012/open-ephys.vcxproj @@ -27,27 +27,23 @@ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> - <CharacterSet>MultiByte</CharacterSet> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> - <CharacterSet>MultiByte</CharacterSet> <WholeProgramOptimization>true</WholeProgramOptimization> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug64|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> - <CharacterSet>MultiByte</CharacterSet> <PlatformToolset>v110</PlatformToolset> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release64|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseOfMfc>false</UseOfMfc> - <CharacterSet>MultiByte</CharacterSet> <WholeProgramOptimization>true</WholeProgramOptimization> <PlatformToolset>v110</PlatformToolset> <PlatformToolset>v110</PlatformToolset> @@ -66,19 +62,19 @@ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\Debug\bin\</OutDir> <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">open-ephys</TargetName> <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</GenerateManifest> - <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(LibraryPath);../../Resources/ZeroMQ/lib_x86;../../Resources/Google Protocols/vsprojects/Debug</LibraryPath> + <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(LibraryPath);../../Resources/windows-libs/HDF5/lib/x86</LibraryPath> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\Release\bin\</OutDir> <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">open-ephys</TargetName> <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</GenerateManifest> - <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(LibraryPath);../../Resources/ZeroMQ/lib_x86;../../Resources/Google Protocols/vsprojects/Release</LibraryPath> + <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(LibraryPath);../../Resources/windows-libs/HDF5/lib/x86</LibraryPath> <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug64|x64'">.\Debug64\bin\</OutDir> <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug64|x64'">open-ephys</TargetName> <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug64|x64'">true</GenerateManifest> - <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug64|x64'">$(LibraryPath);../../Resources/ZeroMQ/lib_x64;../../Resources/Google Protocols/vsprojects/x64/Debug</LibraryPath> + <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug64|x64'">$(LibraryPath);../../Resources/windows-libs/HDF5/lib/x64</LibraryPath> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release64|x64'">.\Release64\bin\</OutDir> <TargetName Condition="'$(Configuration)|$(Platform)'=='Release64|x64'">open-ephys</TargetName> <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release64|x64'">true</GenerateManifest> - <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release64|x64'">$(LibraryPath);../../Resources/ZeroMQ/lib_x64;../../Resources/Google Protocols/vsprojects/x64/Release</LibraryPath> + <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release64|x64'">$(LibraryPath);../../Resources/windows-libs/HDF5/lib/x64</LibraryPath> <PlatformToolset>v110</PlatformToolset> </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> @@ -92,8 +88,8 @@ <ClCompile> <Optimization>Disabled</Optimization> <DebugInformationFormat>EditAndContinue</DebugInformationFormat> - <AdditionalIncludeDirectories>..\..\JuceLibraryCode;../../Resources/Google Protocols/src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;../../Resources/windows-libs/HDF5/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.3.2;JUCE_APP_VERSION_HEX=0x302;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeTypeInfo>true</RuntimeTypeInfo> <PrecompiledHeader/> @@ -116,16 +112,16 @@ <SubSystem>Windows</SubSystem> <TargetMachine>MachineX86</TargetMachine> <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers> - <AdditionalLibraryDirectories>../../Resources/ZeroMQ/lib_x86;../../Resources/Google Protocols/vsprojects/Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>../../Resources/windows-libs/HDF5/lib/x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <LargeAddressAware>true</LargeAddressAware> - <AdditionalDependencies>setupapi.lib;opengl32.lib;glu32.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>setupapi.lib;opengl32.lib;glu32.lib;hdf5.lib;hdf5_cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <Bscmake> <SuppressStartupBanner>true</SuppressStartupBanner> <OutputFile>$(IntDir)\open-ephys.bsc</OutputFile> </Bscmake> <PostBuildEvent> - <Command>copy ..\..\Resources\DLLs\okFrontPanel.dll .\Debug\bin</Command> + <Command>copy "..\..\Resources\DLLs\*.dll" "$(OutDir)"</Command> </PostBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> @@ -138,8 +134,8 @@ </Midl> <ClCompile> <Optimization>Full</Optimization> - <AdditionalIncludeDirectories>..\..\JuceLibraryCode;../../Resources/Google Protocols/src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;../../Resources/windows-libs/HDF5/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.3.2;JUCE_APP_VERSION_HEX=0x302;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeTypeInfo>true</RuntimeTypeInfo> <PrecompiledHeader/> @@ -163,16 +159,16 @@ <TargetMachine>MachineX86</TargetMachine> <OptimizeReferences>true</OptimizeReferences> <EnableCOMDATFolding>true</EnableCOMDATFolding> - <AdditionalLibraryDirectories>../../Resources/ZeroMQ/lib_x86;../../Resources/Google Protocols/vsprojects/Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>../../Resources/windows-libs/HDF5/lib/x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <LargeAddressAware>true</LargeAddressAware> - <AdditionalDependencies>setupapi.lib;opengl32.lib;glu32.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>setupapi.lib;opengl32.lib;glu32.lib;hdf5.lib;hdf5_cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <Bscmake> <SuppressStartupBanner>true</SuppressStartupBanner> <OutputFile>$(IntDir)\open-ephys.bsc</OutputFile> </Bscmake> <PostBuildEvent> - <Command>copy ..\..\Resources\DLLs\okFrontPanel.dll .\Release\bin</Command> + <Command>copy "..\..\Resources\DLLs\*.dll" "$(OutDir)"</Command> </PostBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug64|x64'"> @@ -186,8 +182,8 @@ <ClCompile> <Optimization>Disabled</Optimization> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - <AdditionalIncludeDirectories>..\..\JuceLibraryCode;../../Resources/Google Protocols/src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;../../Resources/windows-libs/HDF5/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.3.2;JUCE_APP_VERSION_HEX=0x302;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeTypeInfo>true</RuntimeTypeInfo> <PrecompiledHeader/> @@ -208,16 +204,16 @@ <GenerateDebugInformation>true</GenerateDebugInformation> <ProgramDatabaseFile>$(IntDir)\open-ephys.pdb</ProgramDatabaseFile> <SubSystem>Windows</SubSystem> - <AdditionalLibraryDirectories>../../Resources/ZeroMQ/lib_x64;../../Resources/Google Protocols/vsprojects/x64/Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>../../Resources/windows-libs/HDF5/lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <LargeAddressAware>true</LargeAddressAware> - <AdditionalDependencies>setupapi.lib;opengl32.lib;glu32.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>setupapi.lib;opengl32.lib;glu32.lib;hdf5.lib;hdf5_cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <Bscmake> <SuppressStartupBanner>true</SuppressStartupBanner> <OutputFile>$(IntDir)\open-ephys.bsc</OutputFile> </Bscmake> <PostBuildEvent> - <Command>copy ..\..\Resources\DLLs\Win64\okFrontPanel.dll .\Debug64\bin</Command> + <Command>copy "..\..\Resources\DLLs\Win64\*.dll" "$(OutDir)"</Command> </PostBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release64|x64'"> @@ -230,8 +226,8 @@ </Midl> <ClCompile> <Optimization>Full</Optimization> - <AdditionalIncludeDirectories>..\..\JuceLibraryCode;../../Resources/Google Protocols/src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;../../Resources/windows-libs/HDF5/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.3.2;JUCE_APP_VERSION_HEX=0x302;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeTypeInfo>true</RuntimeTypeInfo> <PrecompiledHeader/> @@ -254,96 +250,33 @@ <SubSystem>Windows</SubSystem> <OptimizeReferences>true</OptimizeReferences> <EnableCOMDATFolding>true</EnableCOMDATFolding> - <AdditionalLibraryDirectories>../../Resources/ZeroMQ/lib_x64;../../Resources/Google Protocols/vsprojects/x64/Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>../../Resources/windows-libs/HDF5/lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <LargeAddressAware>true</LargeAddressAware> - <AdditionalDependencies>setupapi.lib;opengl32.lib;glu32.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>setupapi.lib;opengl32.lib;glu32.lib;hdf5.lib;hdf5_cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <Bscmake> <SuppressStartupBanner>true</SuppressStartupBanner> <OutputFile>$(IntDir)\open-ephys.bsc</OutputFile> </Bscmake> <PostBuildEvent> - <Command>copy ..\..\Resources\DLLs\Win64\okFrontPanel.dll .\Release64\bin</Command> + <Command>copy "..\..\Resources\DLLs\Win64\*.dll" "$(OutDir)"</Command> </PostBuildEvent> </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="..\..\Source\AccessClass.cpp"/> <ClCompile Include="..\..\Source\Network\PracticalSocket.cpp"/> - <ClCompile Include="..\..\Source\Dsp\Bessel.cpp"/> - <ClCompile Include="..\..\Source\Dsp\Biquad.cpp"/> - <ClCompile Include="..\..\Source\Dsp\Butterworth.cpp"/> - <ClCompile Include="..\..\Source\Dsp\Cascade.cpp"/> - <ClCompile Include="..\..\Source\Dsp\ChebyshevI.cpp"/> - <ClCompile Include="..\..\Source\Dsp\ChebyshevII.cpp"/> - <ClCompile Include="..\..\Source\Dsp\Custom.cpp"/> - <ClCompile Include="..\..\Source\Dsp\Design.cpp"/> - <ClCompile Include="..\..\Source\Dsp\Documentation.cpp"/> - <ClCompile Include="..\..\Source\Dsp\Elliptic.cpp"/> - <ClCompile Include="..\..\Source\Dsp\Filter.cpp"/> - <ClCompile Include="..\..\Source\Dsp\Legendre.cpp"/> - <ClCompile Include="..\..\Source\Dsp\Param.cpp"/> - <ClCompile Include="..\..\Source\Dsp\PoleFilter.cpp"/> - <ClCompile Include="..\..\Source\Dsp\RBJ.cpp"/> - <ClCompile Include="..\..\Source\Dsp\RootFinder.cpp"/> - <ClCompile Include="..\..\Source\Dsp\State.cpp"/> <ClCompile Include="..\..\Source\Audio\AudioComponent.cpp"/> - <ClCompile Include="..\..\Source\Processors\SerialInput.cpp"/> - <ClCompile Include="..\..\Source\Processors\FileReader.cpp"/> - <ClCompile Include="..\..\Source\Processors\ChannelMappingNode.cpp"/> - <ClCompile Include="..\..\Source\Processors\PulsePalOutput.cpp"/> - <ClCompile Include="..\..\Source\Processors\ReferenceNode.cpp"/> - <ClCompile Include="..\..\Source\Processors\PhaseDetector.cpp"/> - <ClCompile Include="..\..\Source\Processors\AudioResamplingNode.cpp"/> - <ClCompile Include="..\..\Source\Processors\Channel.cpp"/> - <ClCompile Include="..\..\Source\Processors\Serial\PulsePal.cpp"/> - <ClCompile Include="..\..\Source\Processors\Serial\ofArduino.cpp"/> - <ClCompile Include="..\..\Source\Processors\Serial\ofSerial.cpp"/> - <ClCompile Include="..\..\Source\Processors\EventDetector.cpp"/> - <ClCompile Include="..\..\Source\Processors\FPGAOutput.cpp"/> - <ClCompile Include="..\..\Source\Processors\ArduinoOutput.cpp"/> - <ClCompile Include="..\..\Source\Processors\Parameter.cpp"/> - <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode.cpp"/> - <ClCompile Include="..\..\Source\Processors\WiFiOutput.cpp"/> - <ClCompile Include="..\..\Source\Processors\LfpDisplayNode.cpp"/> - <ClCompile Include="..\..\Source\Processors\Utilities\RecordControl.cpp"/> - <ClCompile Include="..\..\Source\Processors\Utilities\Merger.cpp"/> - <ClCompile Include="..\..\Source\Processors\Utilities\Splitter.cpp"/> - <ClCompile Include="..\..\Source\Processors\Visualization\SpikeObject.cpp"/> - <ClCompile Include="..\..\Source\Processors\Visualization\SpikeDisplayCanvas.cpp"/> - <ClCompile Include="..\..\Source\Processors\Visualization\DataWindow.cpp"/> - <ClCompile Include="..\..\Source\Processors\Visualization\LfpDisplayCanvas.cpp"/> - <ClCompile Include="..\..\Source\Processors\SpikeDetector.cpp"/> - <ClCompile Include="..\..\Source\Processors\AudioNode.cpp"/> - <ClCompile Include="..\..\Source\Processors\EventNode.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\LfpTriggeredAverageEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\SerialInputEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\ElectrodeButtons.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\ChannelMappingEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\FileReaderEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\PhaseDetectorEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\PulsePalOutputEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\RHD2000Editor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\RecordControlEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\ReferenceNodeEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\FPGAOutputEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\ArduinoOutputEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\ChannelSelector.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\ParameterEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\SpikeDisplayEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\VisualizerEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\MergerEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\ImageIcon.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\WiFiOutputEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\EventNodeEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\SignalGeneratorEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\LfpDisplayEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\SourceNodeEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\SplitterEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\SpikeDetectorEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\AudioEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\FilterEditor.cpp"/> - <ClCompile Include="..\..\Source\Processors\Editors\GenericEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutput.cpp"/> + <ClCompile Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutputEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\AudioNode\AudioEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\AudioNode\AudioNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\AudioResamplingNode\AudioResamplingNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\Channel\Channel.cpp"/> + <ClCompile Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\EcubeEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\RHD2000Editor.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\EcubeThread.cpp"/> <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\okFrontPanelDLL.cpp"/> <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000datablock.cpp"/> <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000evalboard.cpp"/> @@ -353,13 +286,92 @@ <ClCompile Include="..\..\Source\Processors\DataThreads\FPGAThread.cpp"/> <ClCompile Include="..\..\Source\Processors\DataThreads\DataBuffer.cpp"/> <ClCompile Include="..\..\Source\Processors\DataThreads\DataThread.cpp"/> - <ClCompile Include="..\..\Source\Processors\RecordNode.cpp"/> - <ClCompile Include="..\..\Source\Processors\SignalGenerator.cpp"/> - <ClCompile Include="..\..\Source\Processors\ResamplingNode.cpp"/> - <ClCompile Include="..\..\Source\Processors\FilterNode.cpp"/> - <ClCompile Include="..\..\Source\Processors\SourceNode.cpp"/> - <ClCompile Include="..\..\Source\Processors\GenericProcessor.cpp"/> - <ClCompile Include="..\..\Source\Processors\ProcessorGraph.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Bessel.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Biquad.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Butterworth.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Cascade.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\ChebyshevI.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\ChebyshevII.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Custom.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Design.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Documentation.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Elliptic.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Filter.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Legendre.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Param.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\PoleFilter.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\RBJ.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\RootFinder.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\State.cpp"/> + <ClCompile Include="..\..\Source\Processors\Editors\ChannelSelector.cpp"/> + <ClCompile Include="..\..\Source\Processors\Editors\ElectrodeButtons.cpp"/> + <ClCompile Include="..\..\Source\Processors\Editors\GenericEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Editors\ImageIcon.cpp"/> + <ClCompile Include="..\..\Source\Processors\Editors\VisualizerEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\EventDetector\EventDetector.cpp"/> + <ClCompile Include="..\..\Source\Processors\EventNode\EventNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\EventNode\EventNodeEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\FileReader\FileReader.cpp"/> + <ClCompile Include="..\..\Source\Processors\FileReader\FileReaderEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\FilterNode\FilterEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\FilterNode\FilterNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\FPGAOutput\FPGAOutput.cpp"/> + <ClCompile Include="..\..\Source\Processors\FPGAOutput\FPGAOutputEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\GenericProcessor\GenericProcessor.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayCanvas.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageCanvas.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\Merger\Merger.cpp"/> + <ClCompile Include="..\..\Source\Processors\Merger\MergerEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\MessageCenter\MessageCenter.cpp"/> + <ClCompile Include="..\..\Source\Processors\MessageCenter\MessageCenterEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Parameter\ParameterEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Parameter\Parameter.cpp"/> + <ClCompile Include="..\..\Source\Processors\PhaseDetector\PhaseDetector.cpp"/> + <ClCompile Include="..\..\Source\Processors\PhaseDetector\PhaseDetectorEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\ProcessorGraph\ProcessorGraph.cpp"/> + <ClCompile Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutput.cpp"/> + <ClCompile Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutputEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordControl\RecordControl.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordControl\RecordControlEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\EngineConfigWindow.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\HDF5FileFormat.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\HDF5Recording.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\OriginalRecording.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\RecordEngine.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\RecordNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\ReferenceNode\ReferenceNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\ReferenceNode\ReferenceNodeEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\ResamplingNode\ResamplingNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\ResamplingNode\ResamplingNodeEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Serial\PulsePal.cpp"/> + <ClCompile Include="..\..\Source\Processors\Serial\ofArduino.cpp"/> + <ClCompile Include="..\..\Source\Processors\Serial\ofSerial.cpp"/> + <ClCompile Include="..\..\Source\Processors\SerialInput\SerialInput.cpp"/> + <ClCompile Include="..\..\Source\Processors\SerialInput\SerialInputEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\SignalGenerator\SignalGenerator.cpp"/> + <ClCompile Include="..\..\Source\Processors\SignalGenerator\SignalGeneratorEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\SourceNode\SourceNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\SourceNode\SourceNodeEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeDetector\SpikeDetector.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeDetector\SpikeDetectorEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayCanvas.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSortBoxes.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorter.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorterCanvas.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorterEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Splitter\Splitter.cpp"/> + <ClCompile Include="..\..\Source\Processors\Splitter\SplitterEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Visualization\DataWindow.cpp"/> + <ClCompile Include="..\..\Source\Processors\Visualization\SpikeObject.cpp"/> + <ClCompile Include="..\..\Source\Processors\WiFiOutput\WiFiOutput.cpp"/> + <ClCompile Include="..\..\Source\Processors\WiFiOutput\WiFiOutputEditor.cpp"/> + <ClCompile Include="..\..\Source\UI\EcubeDialogComponent.cpp"/> <ClCompile Include="..\..\Source\UI\CustomArrowButton.cpp"/> <ClCompile Include="..\..\Source\UI\GraphViewer.cpp"/> <ClCompile Include="..\..\Source\UI\EditorViewportButtons.cpp"/> @@ -369,7 +381,6 @@ <ClCompile Include="..\..\Source\UI\CustomLookAndFeel.cpp"/> <ClCompile Include="..\..\Source\UI\InfoLabel.cpp"/> <ClCompile Include="..\..\Source\UI\DataViewport.cpp"/> - <ClCompile Include="..\..\Source\UI\MessageCenter.cpp"/> <ClCompile Include="..\..\Source\UI\ControlPanel.cpp"/> <ClCompile Include="..\..\Source\UI\UIComponent.cpp"/> <ClCompile Include="..\..\Source\MainWindow.cpp"/> @@ -1500,89 +1511,18 @@ <ItemGroup> <ClInclude Include="..\..\Source\AccessClass.h"/> <ClInclude Include="..\..\Source\Network\PracticalSocket.h"/> - <ClInclude Include="..\..\Source\Dsp\Bessel.h"/> - <ClInclude Include="..\..\Source\Dsp\Biquad.h"/> - <ClInclude Include="..\..\Source\Dsp\Butterworth.h"/> - <ClInclude Include="..\..\Source\Dsp\Cascade.h"/> - <ClInclude Include="..\..\Source\Dsp\ChebyshevI.h"/> - <ClInclude Include="..\..\Source\Dsp\ChebyshevII.h"/> - <ClInclude Include="..\..\Source\Dsp\Common.h"/> - <ClInclude Include="..\..\Source\Dsp\Custom.h"/> - <ClInclude Include="..\..\Source\Dsp\Design.h"/> - <ClInclude Include="..\..\Source\Dsp\Dsp.h"/> - <ClInclude Include="..\..\Source\Dsp\Elliptic.h"/> - <ClInclude Include="..\..\Source\Dsp\Filter.h"/> - <ClInclude Include="..\..\Source\Dsp\Layout.h"/> - <ClInclude Include="..\..\Source\Dsp\Legendre.h"/> - <ClInclude Include="..\..\Source\Dsp\MathSupplement.h"/> - <ClInclude Include="..\..\Source\Dsp\Params.h"/> - <ClInclude Include="..\..\Source\Dsp\PoleFilter.h"/> - <ClInclude Include="..\..\Source\Dsp\RBJ.h"/> - <ClInclude Include="..\..\Source\Dsp\RootFinder.h"/> - <ClInclude Include="..\..\Source\Dsp\SmoothedFilter.h"/> - <ClInclude Include="..\..\Source\Dsp\State.h"/> - <ClInclude Include="..\..\Source\Dsp\Types.h"/> - <ClInclude Include="..\..\Source\Dsp\Utilities.h"/> <ClInclude Include="..\..\Source\Audio\AudioComponent.h"/> - <ClInclude Include="..\..\Source\Processors\SerialInput.h"/> - <ClInclude Include="..\..\Source\Processors\FileReader.h"/> - <ClInclude Include="..\..\Source\Processors\ChannelMappingNode.h"/> - <ClInclude Include="..\..\Source\Processors\PulsePalOutput.h"/> - <ClInclude Include="..\..\Source\Processors\ReferenceNode.h"/> - <ClInclude Include="..\..\Source\Processors\PhaseDetector.h"/> - <ClInclude Include="..\..\Source\Processors\AudioResamplingNode.h"/> - <ClInclude Include="..\..\Source\Processors\Channel.h"/> - <ClInclude Include="..\..\Source\Processors\Serial\PulsePal.h"/> - <ClInclude Include="..\..\Source\Processors\Serial\ofArduino.h"/> - <ClInclude Include="..\..\Source\Processors\Serial\ofConstants.h"/> - <ClInclude Include="..\..\Source\Processors\Serial\ofSerial.h"/> - <ClInclude Include="..\..\Source\Processors\EventDetector.h"/> - <ClInclude Include="..\..\Source\Processors\FPGAOutput.h"/> - <ClInclude Include="..\..\Source\Processors\ArduinoOutput.h"/> - <ClInclude Include="..\..\Source\Processors\Parameter.h"/> - <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode.h"/> - <ClInclude Include="..\..\Source\Processors\WiFiOutput.h"/> - <ClInclude Include="..\..\Source\Processors\LfpDisplayNode.h"/> - <ClInclude Include="..\..\Source\Processors\Utilities\RecordControl.h"/> - <ClInclude Include="..\..\Source\Processors\Utilities\Merger.h"/> - <ClInclude Include="..\..\Source\Processors\Utilities\Splitter.h"/> - <ClInclude Include="..\..\Source\Processors\Visualization\SpikeObject.h"/> - <ClInclude Include="..\..\Source\Processors\Visualization\SpikeDisplayCanvas.h"/> - <ClInclude Include="..\..\Source\Processors\Visualization\Visualizer.h"/> - <ClInclude Include="..\..\Source\Processors\Visualization\DataWindow.h"/> - <ClInclude Include="..\..\Source\Processors\Visualization\LfpDisplayCanvas.h"/> - <ClInclude Include="..\..\Source\Processors\SpikeDetector.h"/> - <ClInclude Include="..\..\Source\Processors\AudioNode.h"/> - <ClInclude Include="..\..\Source\Processors\EventNode.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\LfpTriggeredAverageEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\SerialInputEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\ElectrodeButtons.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\ChannelMappingEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\FileReaderEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\PhaseDetectorEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\PulsePalOutputEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\RHD2000Editor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\RecordControlEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\ReferenceNodeEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\FPGAOutputEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\ArduinoOutputEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\ChannelSelector.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\ParameterEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\SpikeDisplayEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\VisualizerEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\MergerEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\ImageIcon.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\WiFiOutputEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\EventNodeEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\SignalGeneratorEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\LfpDisplayEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\SourceNodeEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\SplitterEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\SpikeDetectorEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\AudioEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\FilterEditor.h"/> - <ClInclude Include="..\..\Source\Processors\Editors\GenericEditor.h"/> + <ClInclude Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutput.h"/> + <ClInclude Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutputEditor.h"/> + <ClInclude Include="..\..\Source\Processors\AudioNode\AudioEditor.h"/> + <ClInclude Include="..\..\Source\Processors\AudioNode\AudioNode.h"/> + <ClInclude Include="..\..\Source\Processors\AudioResamplingNode\AudioResamplingNode.h"/> + <ClInclude Include="..\..\Source\Processors\Channel\Channel.h"/> + <ClInclude Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingEditor.h"/> + <ClInclude Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingNode.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\EcubeEditor.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\RHD2000Editor.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\EcubeThread.h"/> <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\okFrontPanelDLL.h"/> <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000datablock.h"/> <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000evalboard.h"/> @@ -1592,13 +1532,100 @@ <ClInclude Include="..\..\Source\Processors\DataThreads\FPGAThread.h"/> <ClInclude Include="..\..\Source\Processors\DataThreads\DataBuffer.h"/> <ClInclude Include="..\..\Source\Processors\DataThreads\DataThread.h"/> - <ClInclude Include="..\..\Source\Processors\RecordNode.h"/> - <ClInclude Include="..\..\Source\Processors\SignalGenerator.h"/> - <ClInclude Include="..\..\Source\Processors\ResamplingNode.h"/> - <ClInclude Include="..\..\Source\Processors\FilterNode.h"/> - <ClInclude Include="..\..\Source\Processors\SourceNode.h"/> - <ClInclude Include="..\..\Source\Processors\GenericProcessor.h"/> - <ClInclude Include="..\..\Source\Processors\ProcessorGraph.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Bessel.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Biquad.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Butterworth.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Cascade.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\ChebyshevI.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\ChebyshevII.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Common.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Custom.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Design.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Dsp.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Elliptic.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Filter.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Layout.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Legendre.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\MathSupplement.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Params.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\PoleFilter.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\RBJ.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\RootFinder.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\SmoothedFilter.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\State.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Types.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Utilities.h"/> + <ClInclude Include="..\..\Source\Processors\Editors\ChannelSelector.h"/> + <ClInclude Include="..\..\Source\Processors\Editors\ElectrodeButtons.h"/> + <ClInclude Include="..\..\Source\Processors\Editors\GenericEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Editors\ImageIcon.h"/> + <ClInclude Include="..\..\Source\Processors\Editors\VisualizerEditor.h"/> + <ClInclude Include="..\..\Source\Processors\EventDetector\EventDetector.h"/> + <ClInclude Include="..\..\Source\Processors\EventNode\EventNode.h"/> + <ClInclude Include="..\..\Source\Processors\EventNode\EventNodeEditor.h"/> + <ClInclude Include="..\..\Source\Processors\FileReader\FileReader.h"/> + <ClInclude Include="..\..\Source\Processors\FileReader\FileReaderEditor.h"/> + <ClInclude Include="..\..\Source\Processors\FilterNode\FilterEditor.h"/> + <ClInclude Include="..\..\Source\Processors\FilterNode\FilterNode.h"/> + <ClInclude Include="..\..\Source\Processors\FPGAOutput\FPGAOutput.h"/> + <ClInclude Include="..\..\Source\Processors\FPGAOutput\FPGAOutputEditor.h"/> + <ClInclude Include="..\..\Source\Processors\GenericProcessor\GenericProcessor.h"/> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayCanvas.h"/> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayEditor.h"/> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayNode.h"/> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageCanvas.h"/> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageEditor.h"/> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageNode.h"/> + <ClInclude Include="..\..\Source\Processors\Merger\Merger.h"/> + <ClInclude Include="..\..\Source\Processors\Merger\MergerEditor.h"/> + <ClInclude Include="..\..\Source\Processors\MessageCenter\MessageCenter.h"/> + <ClInclude Include="..\..\Source\Processors\MessageCenter\MessageCenterEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Parameter\ParameterEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Parameter\Parameter.h"/> + <ClInclude Include="..\..\Source\Processors\PhaseDetector\PhaseDetector.h"/> + <ClInclude Include="..\..\Source\Processors\PhaseDetector\PhaseDetectorEditor.h"/> + <ClInclude Include="..\..\Source\Processors\ProcessorGraph\ProcessorGraph.h"/> + <ClInclude Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutput.h"/> + <ClInclude Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutputEditor.h"/> + <ClInclude Include="..\..\Source\Processors\RecordControl\RecordControl.h"/> + <ClInclude Include="..\..\Source\Processors\RecordControl\RecordControlEditor.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\EngineConfigWindow.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\HDF5FileFormat.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\HDF5Recording.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\OriginalRecording.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\RecordEngine.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\RecordNode.h"/> + <ClInclude Include="..\..\Source\Processors\ReferenceNode\ReferenceNode.h"/> + <ClInclude Include="..\..\Source\Processors\ReferenceNode\ReferenceNodeEditor.h"/> + <ClInclude Include="..\..\Source\Processors\ResamplingNode\ResamplingNode.h"/> + <ClInclude Include="..\..\Source\Processors\ResamplingNode\ResamplingNodeEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Serial\PulsePal.h"/> + <ClInclude Include="..\..\Source\Processors\Serial\ofArduino.h"/> + <ClInclude Include="..\..\Source\Processors\Serial\ofConstants.h"/> + <ClInclude Include="..\..\Source\Processors\Serial\ofSerial.h"/> + <ClInclude Include="..\..\Source\Processors\SerialInput\SerialInput.h"/> + <ClInclude Include="..\..\Source\Processors\SerialInput\SerialInputEditor.h"/> + <ClInclude Include="..\..\Source\Processors\SignalGenerator\SignalGenerator.h"/> + <ClInclude Include="..\..\Source\Processors\SignalGenerator\SignalGeneratorEditor.h"/> + <ClInclude Include="..\..\Source\Processors\SourceNode\SourceNode.h"/> + <ClInclude Include="..\..\Source\Processors\SourceNode\SourceNodeEditor.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeDetector\SpikeDetector.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeDetector\SpikeDetectorEditor.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayCanvas.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayEditor.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayNode.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSortBoxes.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorter.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorterCanvas.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorterEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Splitter\Splitter.h"/> + <ClInclude Include="..\..\Source\Processors\Splitter\SplitterEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Visualization\DataWindow.h"/> + <ClInclude Include="..\..\Source\Processors\Visualization\SpikeObject.h"/> + <ClInclude Include="..\..\Source\Processors\Visualization\Visualizer.h"/> + <ClInclude Include="..\..\Source\Processors\WiFiOutput\WiFiOutput.h"/> + <ClInclude Include="..\..\Source\Processors\WiFiOutput\WiFiOutputEditor.h"/> + <ClInclude Include="..\..\Source\UI\EcubeDialogComponent.h"/> <ClInclude Include="..\..\Source\UI\CustomArrowButton.h"/> <ClInclude Include="..\..\Source\UI\GraphViewer.h"/> <ClInclude Include="..\..\Source\UI\EditorViewportButtons.h"/> @@ -1608,7 +1635,6 @@ <ClInclude Include="..\..\Source\UI\CustomLookAndFeel.h"/> <ClInclude Include="..\..\Source\UI\InfoLabel.h"/> <ClInclude Include="..\..\Source\UI\DataViewport.h"/> - <ClInclude Include="..\..\Source\UI\MessageCenter.h"/> <ClInclude Include="..\..\Source\UI\ControlPanel.h"/> <ClInclude Include="..\..\Source\UI\UIComponent.h"/> <ClInclude Include="..\..\Source\MainWindow.h"/> diff --git a/Builds/VisualStudio2012/open-ephys.vcxproj.filters b/Builds/VisualStudio2012/open-ephys.vcxproj.filters index 8f6fab367965183adc4db029ba5ed9419bf7acaa..b1b6225b788b6cf1a2a571b39ee915de31a62f31 100644 --- a/Builds/VisualStudio2012/open-ephys.vcxproj.filters +++ b/Builds/VisualStudio2012/open-ephys.vcxproj.filters @@ -26,26 +26,26 @@ <Filter Include="open-ephys\Source\Network"> <UniqueIdentifier>{F426EB08-DE72-34FB-F5F1-D8D077A9C12D}</UniqueIdentifier> </Filter> - <Filter Include="open-ephys\Source\Dsp"> - <UniqueIdentifier>{A6A61A5B-F355-7BD1-D31D-6FFCFA565F59}</UniqueIdentifier> - </Filter> <Filter Include="open-ephys\Source\Audio"> <UniqueIdentifier>{DC7BD6F0-2EB6-B7BF-B84C-66EF8EE93230}</UniqueIdentifier> </Filter> <Filter Include="open-ephys\Source\Processors"> <UniqueIdentifier>{3DDEC88C-BAA5-2DDA-A59F-0FB74070AB82}</UniqueIdentifier> </Filter> - <Filter Include="open-ephys\Source\Processors\Serial"> - <UniqueIdentifier>{58FEEDBF-D0C4-32AB-FC79-00C612892B6D}</UniqueIdentifier> + <Filter Include="open-ephys\Source\Processors\ArduinoOutput"> + <UniqueIdentifier>{26D17857-B604-0035-CFB5-C3FFD320BD99}</UniqueIdentifier> </Filter> - <Filter Include="open-ephys\Source\Processors\Utilities"> - <UniqueIdentifier>{9465E55A-A9FC-7BED-5EC5-A0596662B8FD}</UniqueIdentifier> + <Filter Include="open-ephys\Source\Processors\AudioNode"> + <UniqueIdentifier>{117683A8-B332-1FBB-1FA0-8C6C7D231B69}</UniqueIdentifier> </Filter> - <Filter Include="open-ephys\Source\Processors\Visualization"> - <UniqueIdentifier>{851942D5-FED6-A7B2-6FAB-C278A247FE7A}</UniqueIdentifier> + <Filter Include="open-ephys\Source\Processors\AudioResamplingNode"> + <UniqueIdentifier>{BB0D2303-17CA-2E39-9765-7A701B2AE2F6}</UniqueIdentifier> </Filter> - <Filter Include="open-ephys\Source\Processors\Editors"> - <UniqueIdentifier>{E65874A6-23B2-9D76-B12A-15730E2192BC}</UniqueIdentifier> + <Filter Include="open-ephys\Source\Processors\Channel"> + <UniqueIdentifier>{7374BFF8-0BFC-382A-1DC3-F4B934CF25BC}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\ChannelMappingNode"> + <UniqueIdentifier>{CFA4FC13-DA1B-011C-D897-0FF0B7D1301B}</UniqueIdentifier> </Filter> <Filter Include="open-ephys\Source\Processors\DataThreads"> <UniqueIdentifier>{AA123918-8642-2612-7B72-C63DA032271B}</UniqueIdentifier> @@ -53,6 +53,96 @@ <Filter Include="open-ephys\Source\Processors\DataThreads\rhythm-api"> <UniqueIdentifier>{EF1534B7-662E-9844-D11F-1D1003B02E4A}</UniqueIdentifier> </Filter> + <Filter Include="open-ephys\Source\Processors\Dsp"> + <UniqueIdentifier>{9C1026A0-8DA9-8D8D-AC1D-22880764350D}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Editors"> + <UniqueIdentifier>{E65874A6-23B2-9D76-B12A-15730E2192BC}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\EventDetector"> + <UniqueIdentifier>{FDD5B79A-1AA4-7745-BB6E-E09A6DFC328E}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\EventNode"> + <UniqueIdentifier>{3BDCC6CD-7B1F-ED1C-7442-F2B0CD1A86C8}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\FileReader"> + <UniqueIdentifier>{59F490B2-F5D9-601B-01AE-368632E3C9D7}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\FilterNode"> + <UniqueIdentifier>{189BB62E-5852-A4F3-AC79-704FAAE02870}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\FPGAOutput"> + <UniqueIdentifier>{995BE2D8-55CB-BBA8-8155-2EFE5F03F143}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\GenericProcessor"> + <UniqueIdentifier>{223ADE1C-7B16-1075-5D22-4771767BF960}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\LfpDisplayNode"> + <UniqueIdentifier>{6F781BCA-7DB6-E933-BDDB-D2EAA51713B0}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\LfpTriggeredAverageNode"> + <UniqueIdentifier>{1150A21B-5E97-AC73-C141-CEF966829E71}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Merger"> + <UniqueIdentifier>{144C1CD2-E387-1D24-EFF3-C5238BD84182}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\MessageCenter"> + <UniqueIdentifier>{BC6AF028-A7C2-7914-7DCA-A3F145C7DF5F}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Parameter"> + <UniqueIdentifier>{1A622D55-9AE3-2A07-5AC5-237BFA2278DD}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\PhaseDetector"> + <UniqueIdentifier>{C9BE6651-5B98-F5D3-047F-E021EE143E00}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\ProcessorGraph"> + <UniqueIdentifier>{6A13AFE9-16FA-463C-B758-8702F1EA4F8B}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\PulsePalOutput"> + <UniqueIdentifier>{75B4E291-E4EA-812C-4963-E760993C4B0D}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\RecordControl"> + <UniqueIdentifier>{2DF3655B-132B-CD8A-6483-C2F4C74C6D42}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\RecordNode"> + <UniqueIdentifier>{185877A6-9FE6-DD2E-BC41-93EE3C608CFC}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\ReferenceNode"> + <UniqueIdentifier>{763A6B4C-B0C6-BA22-7FAB-0DEEF8D66097}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\ResamplingNode"> + <UniqueIdentifier>{3135385A-1E61-FB08-3E00-D5C52DFB1BC9}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Serial"> + <UniqueIdentifier>{58FEEDBF-D0C4-32AB-FC79-00C612892B6D}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SerialInput"> + <UniqueIdentifier>{AC7C03CC-B7F3-EF83-085E-AB894624CAFC}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SignalGenerator"> + <UniqueIdentifier>{98080044-1FF9-22CA-70D0-745170D30FD6}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SourceNode"> + <UniqueIdentifier>{83A3043C-94AE-ADED-C72B-394EB4BAE6B4}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SpikeDetector"> + <UniqueIdentifier>{2D5F5EA7-422D-75BE-FA59-68F2C55B89E8}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SpikeDisplayNode"> + <UniqueIdentifier>{818E5C85-5930-DC8D-A3C2-0443F4C35B47}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SpikeSorter"> + <UniqueIdentifier>{11B5BECA-5948-83BC-3C0F-DEB527800990}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Splitter"> + <UniqueIdentifier>{2AAA8664-72AA-EC5C-92E2-3392067B058F}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Visualization"> + <UniqueIdentifier>{851942D5-FED6-A7B2-6FAB-C278A247FE7A}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\WiFiOutput"> + <UniqueIdentifier>{F733C561-3FBD-E17D-CC23-601836ADF7E6}</UniqueIdentifier> + </Filter> <Filter Include="open-ephys\Source\UI"> <UniqueIdentifier>{717A0FE3-E079-E4BD-8F50-15A1953825C5}</UniqueIdentifier> </Filter> @@ -361,278 +451,326 @@ <ClCompile Include="..\..\Source\Network\PracticalSocket.cpp"> <Filter>open-ephys\Source\Network</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\Bessel.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Audio\AudioComponent.cpp"> + <Filter>open-ephys\Source\Audio</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\Biquad.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutput.cpp"> + <Filter>open-ephys\Source\Processors\ArduinoOutput</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\Butterworth.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutputEditor.cpp"> + <Filter>open-ephys\Source\Processors\ArduinoOutput</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\Cascade.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\AudioNode\AudioEditor.cpp"> + <Filter>open-ephys\Source\Processors\AudioNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\ChebyshevI.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\AudioNode\AudioNode.cpp"> + <Filter>open-ephys\Source\Processors\AudioNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\ChebyshevII.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\AudioResamplingNode\AudioResamplingNode.cpp"> + <Filter>open-ephys\Source\Processors\AudioResamplingNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\Custom.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\Channel\Channel.cpp"> + <Filter>open-ephys\Source\Processors\Channel</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\Design.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingEditor.cpp"> + <Filter>open-ephys\Source\Processors\ChannelMappingNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\Documentation.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingNode.cpp"> + <Filter>open-ephys\Source\Processors\ChannelMappingNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\Elliptic.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\DataThreads\EcubeEditor.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\Filter.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\DataThreads\RHD2000Editor.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\Legendre.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\DataThreads\EcubeThread.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\Param.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\okFrontPanelDLL.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000datablock.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\PoleFilter.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000evalboard.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000registers.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\RBJ.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\DataThreads\RHD2000Thread.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\RootFinder.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\DataThreads\FileReaderThread.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Dsp\State.cpp"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClCompile Include="..\..\Source\Processors\DataThreads\FPGAThread.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Audio\AudioComponent.cpp"> - <Filter>open-ephys\Source\Audio</Filter> + <ClCompile Include="..\..\Source\Processors\DataThreads\DataBuffer.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\SerialInput.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\DataThreads\DataThread.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\FileReader.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\Bessel.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\ChannelMappingNode.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\Biquad.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\PulsePalOutput.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\Butterworth.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\ReferenceNode.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\Cascade.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\PhaseDetector.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\ChebyshevI.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\AudioResamplingNode.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\ChebyshevII.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Channel.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\Custom.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Serial\PulsePal.cpp"> - <Filter>open-ephys\Source\Processors\Serial</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\Design.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Serial\ofArduino.cpp"> - <Filter>open-ephys\Source\Processors\Serial</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\Documentation.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Serial\ofSerial.cpp"> - <Filter>open-ephys\Source\Processors\Serial</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\Elliptic.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\EventDetector.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\Filter.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\FPGAOutput.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\Legendre.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\ArduinoOutput.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\Param.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Parameter.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\PoleFilter.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\RBJ.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\WiFiOutput.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\RootFinder.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\LfpDisplayNode.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\Dsp\State.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Utilities\RecordControl.cpp"> - <Filter>open-ephys\Source\Processors\Utilities</Filter> + <ClCompile Include="..\..\Source\Processors\Editors\ChannelSelector.cpp"> + <Filter>open-ephys\Source\Processors\Editors</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Utilities\Merger.cpp"> - <Filter>open-ephys\Source\Processors\Utilities</Filter> + <ClCompile Include="..\..\Source\Processors\Editors\ElectrodeButtons.cpp"> + <Filter>open-ephys\Source\Processors\Editors</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Utilities\Splitter.cpp"> - <Filter>open-ephys\Source\Processors\Utilities</Filter> + <ClCompile Include="..\..\Source\Processors\Editors\GenericEditor.cpp"> + <Filter>open-ephys\Source\Processors\Editors</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Visualization\SpikeObject.cpp"> - <Filter>open-ephys\Source\Processors\Visualization</Filter> + <ClCompile Include="..\..\Source\Processors\Editors\ImageIcon.cpp"> + <Filter>open-ephys\Source\Processors\Editors</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Visualization\SpikeDisplayCanvas.cpp"> - <Filter>open-ephys\Source\Processors\Visualization</Filter> + <ClCompile Include="..\..\Source\Processors\Editors\VisualizerEditor.cpp"> + <Filter>open-ephys\Source\Processors\Editors</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Visualization\DataWindow.cpp"> - <Filter>open-ephys\Source\Processors\Visualization</Filter> + <ClCompile Include="..\..\Source\Processors\EventDetector\EventDetector.cpp"> + <Filter>open-ephys\Source\Processors\EventDetector</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Visualization\LfpDisplayCanvas.cpp"> - <Filter>open-ephys\Source\Processors\Visualization</Filter> + <ClCompile Include="..\..\Source\Processors\EventNode\EventNode.cpp"> + <Filter>open-ephys\Source\Processors\EventNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\SpikeDetector.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\EventNode\EventNodeEditor.cpp"> + <Filter>open-ephys\Source\Processors\EventNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\AudioNode.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\FileReader\FileReader.cpp"> + <Filter>open-ephys\Source\Processors\FileReader</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\EventNode.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\FileReader\FileReaderEditor.cpp"> + <Filter>open-ephys\Source\Processors\FileReader</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\LfpTriggeredAverageEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\FilterNode\FilterEditor.cpp"> + <Filter>open-ephys\Source\Processors\FilterNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\SerialInputEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\FilterNode\FilterNode.cpp"> + <Filter>open-ephys\Source\Processors\FilterNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\ElectrodeButtons.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\FPGAOutput\FPGAOutput.cpp"> + <Filter>open-ephys\Source\Processors\FPGAOutput</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\ChannelMappingEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\FPGAOutput\FPGAOutputEditor.cpp"> + <Filter>open-ephys\Source\Processors\FPGAOutput</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\FileReaderEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\GenericProcessor\GenericProcessor.cpp"> + <Filter>open-ephys\Source\Processors\GenericProcessor</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\PhaseDetectorEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayCanvas.cpp"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\PulsePalOutputEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayEditor.cpp"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\RHD2000Editor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayNode.cpp"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\RecordControlEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageCanvas.cpp"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\ReferenceNodeEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageEditor.cpp"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageNode.cpp"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\FPGAOutputEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\Merger\Merger.cpp"> + <Filter>open-ephys\Source\Processors\Merger</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\ArduinoOutputEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\Merger\MergerEditor.cpp"> + <Filter>open-ephys\Source\Processors\Merger</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\ChannelSelector.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\MessageCenter\MessageCenter.cpp"> + <Filter>open-ephys\Source\Processors\MessageCenter</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\ParameterEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\MessageCenter\MessageCenterEditor.cpp"> + <Filter>open-ephys\Source\Processors\MessageCenter</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\SpikeDisplayEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\Parameter\ParameterEditor.cpp"> + <Filter>open-ephys\Source\Processors\Parameter</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\VisualizerEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\Parameter\Parameter.cpp"> + <Filter>open-ephys\Source\Processors\Parameter</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\MergerEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\PhaseDetector\PhaseDetector.cpp"> + <Filter>open-ephys\Source\Processors\PhaseDetector</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\ImageIcon.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\PhaseDetector\PhaseDetectorEditor.cpp"> + <Filter>open-ephys\Source\Processors\PhaseDetector</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\WiFiOutputEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\ProcessorGraph\ProcessorGraph.cpp"> + <Filter>open-ephys\Source\Processors\ProcessorGraph</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\EventNodeEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutput.cpp"> + <Filter>open-ephys\Source\Processors\PulsePalOutput</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\SignalGeneratorEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutputEditor.cpp"> + <Filter>open-ephys\Source\Processors\PulsePalOutput</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\LfpDisplayEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\RecordControl\RecordControl.cpp"> + <Filter>open-ephys\Source\Processors\RecordControl</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\SourceNodeEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\RecordControl\RecordControlEditor.cpp"> + <Filter>open-ephys\Source\Processors\RecordControl</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\SplitterEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\RecordNode\EngineConfigWindow.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\SpikeDetectorEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\RecordNode\HDF5FileFormat.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\AudioEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\RecordNode\HDF5Recording.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\FilterEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\RecordNode\OriginalRecording.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\Editors\GenericEditor.cpp"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClCompile Include="..\..\Source\Processors\RecordNode\RecordEngine.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\okFrontPanelDLL.cpp"> - <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + <ClCompile Include="..\..\Source\Processors\RecordNode\RecordNode.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000datablock.cpp"> - <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + <ClCompile Include="..\..\Source\Processors\ReferenceNode\ReferenceNode.cpp"> + <Filter>open-ephys\Source\Processors\ReferenceNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000evalboard.cpp"> - <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + <ClCompile Include="..\..\Source\Processors\ReferenceNode\ReferenceNodeEditor.cpp"> + <Filter>open-ephys\Source\Processors\ReferenceNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000registers.cpp"> - <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + <ClCompile Include="..\..\Source\Processors\ResamplingNode\ResamplingNode.cpp"> + <Filter>open-ephys\Source\Processors\ResamplingNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\DataThreads\RHD2000Thread.cpp"> - <Filter>open-ephys\Source\Processors\DataThreads</Filter> + <ClCompile Include="..\..\Source\Processors\ResamplingNode\ResamplingNodeEditor.cpp"> + <Filter>open-ephys\Source\Processors\ResamplingNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\DataThreads\FileReaderThread.cpp"> - <Filter>open-ephys\Source\Processors\DataThreads</Filter> + <ClCompile Include="..\..\Source\Processors\Serial\PulsePal.cpp"> + <Filter>open-ephys\Source\Processors\Serial</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\DataThreads\FPGAThread.cpp"> - <Filter>open-ephys\Source\Processors\DataThreads</Filter> + <ClCompile Include="..\..\Source\Processors\Serial\ofArduino.cpp"> + <Filter>open-ephys\Source\Processors\Serial</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\DataThreads\DataBuffer.cpp"> - <Filter>open-ephys\Source\Processors\DataThreads</Filter> + <ClCompile Include="..\..\Source\Processors\Serial\ofSerial.cpp"> + <Filter>open-ephys\Source\Processors\Serial</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\DataThreads\DataThread.cpp"> - <Filter>open-ephys\Source\Processors\DataThreads</Filter> + <ClCompile Include="..\..\Source\Processors\SerialInput\SerialInput.cpp"> + <Filter>open-ephys\Source\Processors\SerialInput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SerialInput\SerialInputEditor.cpp"> + <Filter>open-ephys\Source\Processors\SerialInput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SignalGenerator\SignalGenerator.cpp"> + <Filter>open-ephys\Source\Processors\SignalGenerator</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SignalGenerator\SignalGeneratorEditor.cpp"> + <Filter>open-ephys\Source\Processors\SignalGenerator</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\RecordNode.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\SourceNode\SourceNode.cpp"> + <Filter>open-ephys\Source\Processors\SourceNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\SignalGenerator.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\SourceNode\SourceNodeEditor.cpp"> + <Filter>open-ephys\Source\Processors\SourceNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\ResamplingNode.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\SpikeDetector\SpikeDetector.cpp"> + <Filter>open-ephys\Source\Processors\SpikeDetector</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\FilterNode.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\SpikeDetector\SpikeDetectorEditor.cpp"> + <Filter>open-ephys\Source\Processors\SpikeDetector</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\SourceNode.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayCanvas.cpp"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\GenericProcessor.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayEditor.cpp"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> </ClCompile> - <ClCompile Include="..\..\Source\Processors\ProcessorGraph.cpp"> - <Filter>open-ephys\Source\Processors</Filter> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayNode.cpp"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSortBoxes.cpp"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorter.cpp"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorterCanvas.cpp"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorterEditor.cpp"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Splitter\Splitter.cpp"> + <Filter>open-ephys\Source\Processors\Splitter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Splitter\SplitterEditor.cpp"> + <Filter>open-ephys\Source\Processors\Splitter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Visualization\DataWindow.cpp"> + <Filter>open-ephys\Source\Processors\Visualization</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Visualization\SpikeObject.cpp"> + <Filter>open-ephys\Source\Processors\Visualization</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\WiFiOutput\WiFiOutput.cpp"> + <Filter>open-ephys\Source\Processors\WiFiOutput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\WiFiOutput\WiFiOutputEditor.cpp"> + <Filter>open-ephys\Source\Processors\WiFiOutput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\EcubeDialogComponent.cpp"> + <Filter>open-ephys\Source\UI</Filter> </ClCompile> <ClCompile Include="..\..\Source\UI\CustomArrowButton.cpp"> <Filter>open-ephys\Source\UI</Filter> @@ -661,9 +799,6 @@ <ClCompile Include="..\..\Source\UI\DataViewport.cpp"> <Filter>open-ephys\Source\UI</Filter> </ClCompile> - <ClCompile Include="..\..\Source\UI\MessageCenter.cpp"> - <Filter>open-ephys\Source\UI</Filter> - </ClCompile> <ClCompile Include="..\..\Source\UI\ControlPanel.cpp"> <Filter>open-ephys\Source\UI</Filter> </ClCompile> @@ -1911,302 +2046,350 @@ <ClInclude Include="..\..\Source\Network\PracticalSocket.h"> <Filter>open-ephys\Source\Network</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Bessel.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Audio\AudioComponent.h"> + <Filter>open-ephys\Source\Audio</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Biquad.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutput.h"> + <Filter>open-ephys\Source\Processors\ArduinoOutput</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Butterworth.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutputEditor.h"> + <Filter>open-ephys\Source\Processors\ArduinoOutput</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Cascade.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\AudioNode\AudioEditor.h"> + <Filter>open-ephys\Source\Processors\AudioNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\ChebyshevI.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\AudioNode\AudioNode.h"> + <Filter>open-ephys\Source\Processors\AudioNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\ChebyshevII.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\AudioResamplingNode\AudioResamplingNode.h"> + <Filter>open-ephys\Source\Processors\AudioResamplingNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Common.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\Channel\Channel.h"> + <Filter>open-ephys\Source\Processors\Channel</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Custom.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingEditor.h"> + <Filter>open-ephys\Source\Processors\ChannelMappingNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Design.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingNode.h"> + <Filter>open-ephys\Source\Processors\ChannelMappingNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Dsp.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\EcubeEditor.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Elliptic.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\RHD2000Editor.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Filter.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\EcubeThread.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Layout.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\okFrontPanelDLL.h"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Legendre.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000datablock.h"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\MathSupplement.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000evalboard.h"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Params.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000registers.h"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\PoleFilter.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\RHD2000Thread.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\RBJ.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\FileReaderThread.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\RootFinder.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\FPGAThread.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\SmoothedFilter.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\DataBuffer.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\State.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\DataThreads\DataThread.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Types.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Bessel.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Dsp\Utilities.h"> - <Filter>open-ephys\Source\Dsp</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Biquad.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Audio\AudioComponent.h"> - <Filter>open-ephys\Source\Audio</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Butterworth.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\SerialInput.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Cascade.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\FileReader.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\ChebyshevI.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\ChannelMappingNode.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\ChebyshevII.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\PulsePalOutput.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Common.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\ReferenceNode.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Custom.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\PhaseDetector.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Design.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\AudioResamplingNode.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Dsp.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Channel.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Elliptic.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Serial\PulsePal.h"> - <Filter>open-ephys\Source\Processors\Serial</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Filter.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Serial\ofArduino.h"> - <Filter>open-ephys\Source\Processors\Serial</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Layout.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Serial\ofConstants.h"> - <Filter>open-ephys\Source\Processors\Serial</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Legendre.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Serial\ofSerial.h"> - <Filter>open-ephys\Source\Processors\Serial</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\MathSupplement.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\EventDetector.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Params.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\FPGAOutput.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\PoleFilter.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\ArduinoOutput.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\RBJ.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Parameter.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\RootFinder.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\SmoothedFilter.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\WiFiOutput.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\State.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\LfpDisplayNode.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Types.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Utilities\RecordControl.h"> - <Filter>open-ephys\Source\Processors\Utilities</Filter> + <ClInclude Include="..\..\Source\Processors\Dsp\Utilities.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Utilities\Merger.h"> - <Filter>open-ephys\Source\Processors\Utilities</Filter> + <ClInclude Include="..\..\Source\Processors\Editors\ChannelSelector.h"> + <Filter>open-ephys\Source\Processors\Editors</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Utilities\Splitter.h"> - <Filter>open-ephys\Source\Processors\Utilities</Filter> + <ClInclude Include="..\..\Source\Processors\Editors\ElectrodeButtons.h"> + <Filter>open-ephys\Source\Processors\Editors</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Visualization\SpikeObject.h"> - <Filter>open-ephys\Source\Processors\Visualization</Filter> + <ClInclude Include="..\..\Source\Processors\Editors\GenericEditor.h"> + <Filter>open-ephys\Source\Processors\Editors</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Visualization\SpikeDisplayCanvas.h"> - <Filter>open-ephys\Source\Processors\Visualization</Filter> + <ClInclude Include="..\..\Source\Processors\Editors\ImageIcon.h"> + <Filter>open-ephys\Source\Processors\Editors</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Visualization\Visualizer.h"> - <Filter>open-ephys\Source\Processors\Visualization</Filter> + <ClInclude Include="..\..\Source\Processors\Editors\VisualizerEditor.h"> + <Filter>open-ephys\Source\Processors\Editors</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Visualization\DataWindow.h"> - <Filter>open-ephys\Source\Processors\Visualization</Filter> + <ClInclude Include="..\..\Source\Processors\EventDetector\EventDetector.h"> + <Filter>open-ephys\Source\Processors\EventDetector</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Visualization\LfpDisplayCanvas.h"> - <Filter>open-ephys\Source\Processors\Visualization</Filter> + <ClInclude Include="..\..\Source\Processors\EventNode\EventNode.h"> + <Filter>open-ephys\Source\Processors\EventNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\SpikeDetector.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\EventNode\EventNodeEditor.h"> + <Filter>open-ephys\Source\Processors\EventNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\AudioNode.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\FileReader\FileReader.h"> + <Filter>open-ephys\Source\Processors\FileReader</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\EventNode.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\FileReader\FileReaderEditor.h"> + <Filter>open-ephys\Source\Processors\FileReader</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\LfpTriggeredAverageEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\FilterNode\FilterEditor.h"> + <Filter>open-ephys\Source\Processors\FilterNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\SerialInputEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\FilterNode\FilterNode.h"> + <Filter>open-ephys\Source\Processors\FilterNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\ElectrodeButtons.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\FPGAOutput\FPGAOutput.h"> + <Filter>open-ephys\Source\Processors\FPGAOutput</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\ChannelMappingEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\FPGAOutput\FPGAOutputEditor.h"> + <Filter>open-ephys\Source\Processors\FPGAOutput</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\FileReaderEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\GenericProcessor\GenericProcessor.h"> + <Filter>open-ephys\Source\Processors\GenericProcessor</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\PhaseDetectorEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayCanvas.h"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\PulsePalOutputEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayEditor.h"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\RHD2000Editor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayNode.h"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\RecordControlEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageCanvas.h"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\ReferenceNodeEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageEditor.h"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageNode.h"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\FPGAOutputEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\Merger\Merger.h"> + <Filter>open-ephys\Source\Processors\Merger</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\ArduinoOutputEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\Merger\MergerEditor.h"> + <Filter>open-ephys\Source\Processors\Merger</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\ChannelSelector.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\MessageCenter\MessageCenter.h"> + <Filter>open-ephys\Source\Processors\MessageCenter</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\ParameterEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\MessageCenter\MessageCenterEditor.h"> + <Filter>open-ephys\Source\Processors\MessageCenter</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\SpikeDisplayEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\Parameter\ParameterEditor.h"> + <Filter>open-ephys\Source\Processors\Parameter</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\VisualizerEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\Parameter\Parameter.h"> + <Filter>open-ephys\Source\Processors\Parameter</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\MergerEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\PhaseDetector\PhaseDetector.h"> + <Filter>open-ephys\Source\Processors\PhaseDetector</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\ImageIcon.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\PhaseDetector\PhaseDetectorEditor.h"> + <Filter>open-ephys\Source\Processors\PhaseDetector</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\WiFiOutputEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\ProcessorGraph\ProcessorGraph.h"> + <Filter>open-ephys\Source\Processors\ProcessorGraph</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\EventNodeEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutput.h"> + <Filter>open-ephys\Source\Processors\PulsePalOutput</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\SignalGeneratorEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutputEditor.h"> + <Filter>open-ephys\Source\Processors\PulsePalOutput</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\LfpDisplayEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\RecordControl\RecordControl.h"> + <Filter>open-ephys\Source\Processors\RecordControl</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\SourceNodeEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\RecordControl\RecordControlEditor.h"> + <Filter>open-ephys\Source\Processors\RecordControl</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\SplitterEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\RecordNode\EngineConfigWindow.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\SpikeDetectorEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\RecordNode\HDF5FileFormat.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\AudioEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\RecordNode\HDF5Recording.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\FilterEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\RecordNode\OriginalRecording.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\Editors\GenericEditor.h"> - <Filter>open-ephys\Source\Processors\Editors</Filter> + <ClInclude Include="..\..\Source\Processors\RecordNode\RecordEngine.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\okFrontPanelDLL.h"> - <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + <ClInclude Include="..\..\Source\Processors\RecordNode\RecordNode.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000datablock.h"> - <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + <ClInclude Include="..\..\Source\Processors\ReferenceNode\ReferenceNode.h"> + <Filter>open-ephys\Source\Processors\ReferenceNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000evalboard.h"> - <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + <ClInclude Include="..\..\Source\Processors\ReferenceNode\ReferenceNodeEditor.h"> + <Filter>open-ephys\Source\Processors\ReferenceNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000registers.h"> - <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + <ClInclude Include="..\..\Source\Processors\ResamplingNode\ResamplingNode.h"> + <Filter>open-ephys\Source\Processors\ResamplingNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\DataThreads\RHD2000Thread.h"> - <Filter>open-ephys\Source\Processors\DataThreads</Filter> + <ClInclude Include="..\..\Source\Processors\ResamplingNode\ResamplingNodeEditor.h"> + <Filter>open-ephys\Source\Processors\ResamplingNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\DataThreads\FileReaderThread.h"> - <Filter>open-ephys\Source\Processors\DataThreads</Filter> + <ClInclude Include="..\..\Source\Processors\Serial\PulsePal.h"> + <Filter>open-ephys\Source\Processors\Serial</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\DataThreads\FPGAThread.h"> - <Filter>open-ephys\Source\Processors\DataThreads</Filter> + <ClInclude Include="..\..\Source\Processors\Serial\ofArduino.h"> + <Filter>open-ephys\Source\Processors\Serial</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\DataThreads\DataBuffer.h"> - <Filter>open-ephys\Source\Processors\DataThreads</Filter> + <ClInclude Include="..\..\Source\Processors\Serial\ofConstants.h"> + <Filter>open-ephys\Source\Processors\Serial</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\DataThreads\DataThread.h"> - <Filter>open-ephys\Source\Processors\DataThreads</Filter> + <ClInclude Include="..\..\Source\Processors\Serial\ofSerial.h"> + <Filter>open-ephys\Source\Processors\Serial</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SerialInput\SerialInput.h"> + <Filter>open-ephys\Source\Processors\SerialInput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SerialInput\SerialInputEditor.h"> + <Filter>open-ephys\Source\Processors\SerialInput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SignalGenerator\SignalGenerator.h"> + <Filter>open-ephys\Source\Processors\SignalGenerator</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SignalGenerator\SignalGeneratorEditor.h"> + <Filter>open-ephys\Source\Processors\SignalGenerator</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SourceNode\SourceNode.h"> + <Filter>open-ephys\Source\Processors\SourceNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SourceNode\SourceNodeEditor.h"> + <Filter>open-ephys\Source\Processors\SourceNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\RecordNode.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\SpikeDetector\SpikeDetector.h"> + <Filter>open-ephys\Source\Processors\SpikeDetector</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\SignalGenerator.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\SpikeDetector\SpikeDetectorEditor.h"> + <Filter>open-ephys\Source\Processors\SpikeDetector</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\ResamplingNode.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayCanvas.h"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\FilterNode.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayEditor.h"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\SourceNode.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayNode.h"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\GenericProcessor.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSortBoxes.h"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> </ClInclude> - <ClInclude Include="..\..\Source\Processors\ProcessorGraph.h"> - <Filter>open-ephys\Source\Processors</Filter> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorter.h"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorterCanvas.h"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorterEditor.h"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Splitter\Splitter.h"> + <Filter>open-ephys\Source\Processors\Splitter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Splitter\SplitterEditor.h"> + <Filter>open-ephys\Source\Processors\Splitter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Visualization\DataWindow.h"> + <Filter>open-ephys\Source\Processors\Visualization</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Visualization\SpikeObject.h"> + <Filter>open-ephys\Source\Processors\Visualization</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Visualization\Visualizer.h"> + <Filter>open-ephys\Source\Processors\Visualization</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\WiFiOutput\WiFiOutput.h"> + <Filter>open-ephys\Source\Processors\WiFiOutput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\WiFiOutput\WiFiOutputEditor.h"> + <Filter>open-ephys\Source\Processors\WiFiOutput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\EcubeDialogComponent.h"> + <Filter>open-ephys\Source\UI</Filter> </ClInclude> <ClInclude Include="..\..\Source\UI\CustomArrowButton.h"> <Filter>open-ephys\Source\UI</Filter> @@ -2235,9 +2418,6 @@ <ClInclude Include="..\..\Source\UI\DataViewport.h"> <Filter>open-ephys\Source\UI</Filter> </ClInclude> - <ClInclude Include="..\..\Source\UI\MessageCenter.h"> - <Filter>open-ephys\Source\UI</Filter> - </ClInclude> <ClInclude Include="..\..\Source\UI\ControlPanel.h"> <Filter>open-ephys\Source\UI</Filter> </ClInclude> diff --git a/Builds/VisualStudio2012/resources.rc b/Builds/VisualStudio2012/resources.rc index 7e90b4e76da66c087a68622404d18c38082d4b83..37719a97bd794d32c5c0f172efaaf280f7267255 100644 --- a/Builds/VisualStudio2012/resources.rc +++ b/Builds/VisualStudio2012/resources.rc @@ -7,7 +7,7 @@ #include <windows.h> VS_VERSION_INFO VERSIONINFO -FILEVERSION 0,3,1,0 +FILEVERSION 0,3,2,0 BEGIN BLOCK "StringFileInfo" BEGIN @@ -15,9 +15,9 @@ BEGIN BEGIN VALUE "CompanyName", "Open Ephys\0" VALUE "FileDescription", "open-ephys\0" - VALUE "FileVersion", "0.3.1\0" + VALUE "FileVersion", "0.3.2\0" VALUE "ProductName", "open-ephys\0" - VALUE "ProductVersion", "0.3.1\0" + VALUE "ProductVersion", "0.3.2\0" END END diff --git a/Builds/VisualStudio2013/copydlls.cmd b/Builds/VisualStudio2013/copydlls.cmd new file mode 100644 index 0000000000000000000000000000000000000000..9284f9c3085fceac7a98b3ab7c651b9b630b4a22 --- /dev/null +++ b/Builds/VisualStudio2013/copydlls.cmd @@ -0,0 +1,13 @@ +@echo off +echo copy %2\okFrontPanel.dll %3 +copy %2\okFrontPanel.dll %3 +echo copy %1\hdf5.dll %3 +copy %1\hdf5.dll %3 +echo copy %1\hdf5_cpp.dll %3 +copy %1\hdf5_cpp.dll %3 +rem copy %1\szip.dll %3 +rem copy %1\zlib.dll %3 + + + +echo copy ..\..\Resources\DLLs\Win64\okFrontPanel.dll .\Debug64\bin \ No newline at end of file diff --git a/Builds/VisualStudio2013/open-ephys.sln b/Builds/VisualStudio2013/open-ephys.sln new file mode 100644 index 0000000000000000000000000000000000000000..da69c688136db3653983f2209d0483a528b88091 --- /dev/null +++ b/Builds/VisualStudio2013/open-ephys.sln @@ -0,0 +1,19 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2013 +Project("{5A05F353-1D63-394C-DFB0-981BB2309002}") = "open-ephys", "open-ephys.vcxproj", "{9C924D66-7DEC-1AEF-B375-DB8666BFB909}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9C924D66-7DEC-1AEF-B375-DB8666BFB909}.Debug|Win32.ActiveCfg = Debug|Win32 + {9C924D66-7DEC-1AEF-B375-DB8666BFB909}.Debug|Win32.Build.0 = Debug|Win32 + {9C924D66-7DEC-1AEF-B375-DB8666BFB909}.Release|Win32.ActiveCfg = Release|Win32 + {9C924D66-7DEC-1AEF-B375-DB8666BFB909}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Builds/VisualStudio2013/open-ephys.vcxproj b/Builds/VisualStudio2013/open-ephys.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..f257d8927adcf1e5da3fafbc65e7e952fd212501 --- /dev/null +++ b/Builds/VisualStudio2013/open-ephys.vcxproj @@ -0,0 +1,2058 @@ +<?xml version="1.0" encoding="utf-8"?> + +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{9C924D66-7DEC-1AEF-B375-DB8666BFB909}</ProjectGuid> + <PlatformToolset>v120</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseOfMfc>false</UseOfMfc> + <PlatformToolset>v120</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseOfMfc>false</UseOfMfc> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v120</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/> + <ImportGroup Label="ExtensionSettings"/> + <ImportGroup Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" + Label="LocalAppDataPlatform"/> + </ImportGroup> + <PropertyGroup Label="UserMacros"> + <PlatformToolset>v120</PlatformToolset> + </PropertyGroup> + <PropertyGroup> + <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\Debug\bin\</OutDir> + <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">open-ephys</TargetName> + <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</GenerateManifest> + <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(LibraryPath);../../Resources/ZeroMQ/lib_x86;../../Resources/Google Protocols/vsprojects/Debug;$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\lib</LibraryPath> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\Release\bin\</OutDir> + <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">open-ephys</TargetName> + <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</GenerateManifest> + <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(LibraryPath);$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\lib;../../Resources/ZeroMQ/lib_x86;../../Resources/Google Protocols/vsprojects/Release</LibraryPath> + <PlatformToolset>v120</PlatformToolset> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Midl> + <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MkTypLibCompatible>true</MkTypLibCompatible> + <SuppressStartupBanner>true</SuppressStartupBanner> + <TargetEnvironment>Win32</TargetEnvironment> + <HeaderFileName/> + </Midl> + <ClCompile> + <Optimization>Disabled</Optimization> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\include;../../Resources/Google Protocols/src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=0.3.2;JUCE_APP_VERSION_HEX=0x302;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <RuntimeTypeInfo>true</RuntimeTypeInfo> + <PrecompiledHeader/> + <AssemblerListingLocation>$(IntDir)\</AssemblerListingLocation> + <ObjectFileName>$(IntDir)\</ObjectFileName> + <ProgramDataBaseFileName>$(IntDir)\</ProgramDataBaseFileName> + <WarningLevel>Level4</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <FloatingPointModel>Fast</FloatingPointModel> + </ClCompile> + <ResourceCompile> + <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ResourceCompile> + <Link> + <OutputFile>$(OutDir)\open-ephys.exe</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <IgnoreSpecificDefaultLibraries>libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> + <GenerateDebugInformation>true</GenerateDebugInformation> + <ProgramDatabaseFile>$(IntDir)\open-ephys.pdb</ProgramDatabaseFile> + <SubSystem>Windows</SubSystem> + <TargetMachine>MachineX86</TargetMachine> + <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers> + <AdditionalLibraryDirectories>../../Resources/ZeroMQ/lib_x86;../../Resources/Google Protocols/vsprojects/Debug;$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <LargeAddressAware>true</LargeAddressAware> + <AdditionalDependencies>setupapi.lib;opengl32.lib;glu32.lib;hdf5.lib;hdf5_cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + <Bscmake> + <SuppressStartupBanner>true</SuppressStartupBanner> + <OutputFile>$(IntDir)\open-ephys.bsc</OutputFile> + </Bscmake> + <PostBuildEvent> + <Command>call "$(SolutionDir)\copydlls.cmd" "$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\bin" "$(SolutionDir)\..\..\Resources\DLLs" "$(OutDir)"</Command> + </PostBuildEvent> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Midl> + <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MkTypLibCompatible>true</MkTypLibCompatible> + <SuppressStartupBanner>true</SuppressStartupBanner> + <TargetEnvironment>Win32</TargetEnvironment> + <HeaderFileName/> + </Midl> + <ClCompile> + <Optimization>Full</Optimization> + <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\include;../../Resources/Google Protocols/src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=0.3.2;JUCE_APP_VERSION_HEX=0x302;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <RuntimeTypeInfo>true</RuntimeTypeInfo> + <PrecompiledHeader/> + <AssemblerListingLocation>$(IntDir)\</AssemblerListingLocation> + <ObjectFileName>$(IntDir)\</ObjectFileName> + <ProgramDataBaseFileName>$(IntDir)\</ProgramDataBaseFileName> + <WarningLevel>Level4</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <FloatingPointModel>Fast</FloatingPointModel> + </ClCompile> + <ResourceCompile> + <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ResourceCompile> + <Link> + <OutputFile>$(OutDir)\open-ephys.exe</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> + <GenerateDebugInformation>false</GenerateDebugInformation> + <ProgramDatabaseFile>$(IntDir)\open-ephys.pdb</ProgramDatabaseFile> + <SubSystem>Windows</SubSystem> + <TargetMachine>MachineX86</TargetMachine> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <AdditionalLibraryDirectories>$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\lib;../../Resources/ZeroMQ/lib_x86;../../Resources/Google Protocols/vsprojects/Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <LargeAddressAware>true</LargeAddressAware> + <AdditionalDependencies>setupapi.lib;opengl32.lib;glu32.lib;hdf5.lib;hdf5_cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + <Bscmake> + <SuppressStartupBanner>true</SuppressStartupBanner> + <OutputFile>$(IntDir)\open-ephys.bsc</OutputFile> + </Bscmake> + <PostBuildEvent> + <Command>call "$(SolutionDir)\copydlls.cmd" "$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\bin" "$(SolutionDir)\..\..\Resources\DLLs" "$(OutDir)"</Command> + </PostBuildEvent> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\..\Source\AccessClass.cpp"/> + <ClCompile Include="..\..\Source\Network\PracticalSocket.cpp"/> + <ClCompile Include="..\..\Source\Audio\AudioComponent.cpp"/> + <ClCompile Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutput.cpp"/> + <ClCompile Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutputEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\AudioNode\AudioEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\AudioNode\AudioNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\AudioResamplingNode\AudioResamplingNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\Channel\Channel.cpp"/> + <ClCompile Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\EcubeEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\RHD2000Editor.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\EcubeThread.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\okFrontPanelDLL.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000datablock.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000evalboard.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000registers.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\RHD2000Thread.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\FileReaderThread.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\FPGAThread.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\DataBuffer.cpp"/> + <ClCompile Include="..\..\Source\Processors\DataThreads\DataThread.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Bessel.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Biquad.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Butterworth.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Cascade.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\ChebyshevI.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\ChebyshevII.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Custom.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Design.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Documentation.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Elliptic.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Filter.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Legendre.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\Param.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\PoleFilter.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\RBJ.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\RootFinder.cpp"/> + <ClCompile Include="..\..\Source\Processors\Dsp\State.cpp"/> + <ClCompile Include="..\..\Source\Processors\Editors\ChannelSelector.cpp"/> + <ClCompile Include="..\..\Source\Processors\Editors\ElectrodeButtons.cpp"/> + <ClCompile Include="..\..\Source\Processors\Editors\GenericEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Editors\ImageIcon.cpp"/> + <ClCompile Include="..\..\Source\Processors\Editors\VisualizerEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\EventDetector\EventDetector.cpp"/> + <ClCompile Include="..\..\Source\Processors\EventNode\EventNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\EventNode\EventNodeEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\FileReader\FileReader.cpp"/> + <ClCompile Include="..\..\Source\Processors\FileReader\FileReaderEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\FilterNode\FilterEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\FilterNode\FilterNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\FPGAOutput\FPGAOutput.cpp"/> + <ClCompile Include="..\..\Source\Processors\FPGAOutput\FPGAOutputEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\GenericProcessor\GenericProcessor.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayCanvas.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageCanvas.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\Merger\Merger.cpp"/> + <ClCompile Include="..\..\Source\Processors\Merger\MergerEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\MessageCenter\MessageCenter.cpp"/> + <ClCompile Include="..\..\Source\Processors\MessageCenter\MessageCenterEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Parameter\ParameterEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Parameter\Parameter.cpp"/> + <ClCompile Include="..\..\Source\Processors\PhaseDetector\PhaseDetector.cpp"/> + <ClCompile Include="..\..\Source\Processors\PhaseDetector\PhaseDetectorEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\ProcessorGraph\ProcessorGraph.cpp"/> + <ClCompile Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutput.cpp"/> + <ClCompile Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutputEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordControl\RecordControl.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordControl\RecordControlEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\EngineConfigWindow.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\HDF5FileFormat.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\HDF5Recording.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\OriginalRecording.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\RecordEngine.cpp"/> + <ClCompile Include="..\..\Source\Processors\RecordNode\RecordNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\ReferenceNode\ReferenceNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\ReferenceNode\ReferenceNodeEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\ResamplingNode\ResamplingNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\ResamplingNode\ResamplingNodeEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Serial\PulsePal.cpp"/> + <ClCompile Include="..\..\Source\Processors\Serial\ofArduino.cpp"/> + <ClCompile Include="..\..\Source\Processors\Serial\ofSerial.cpp"/> + <ClCompile Include="..\..\Source\Processors\SerialInput\SerialInput.cpp"/> + <ClCompile Include="..\..\Source\Processors\SerialInput\SerialInputEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\SignalGenerator\SignalGenerator.cpp"/> + <ClCompile Include="..\..\Source\Processors\SignalGenerator\SignalGeneratorEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\SourceNode\SourceNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\SourceNode\SourceNodeEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeDetector\SpikeDetector.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeDetector\SpikeDetectorEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayCanvas.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayNode.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSortBoxes.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorter.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorterCanvas.cpp"/> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorterEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Splitter\Splitter.cpp"/> + <ClCompile Include="..\..\Source\Processors\Splitter\SplitterEditor.cpp"/> + <ClCompile Include="..\..\Source\Processors\Visualization\DataWindow.cpp"/> + <ClCompile Include="..\..\Source\Processors\Visualization\SpikeObject.cpp"/> + <ClCompile Include="..\..\Source\Processors\WiFiOutput\WiFiOutput.cpp"/> + <ClCompile Include="..\..\Source\Processors\WiFiOutput\WiFiOutputEditor.cpp"/> + <ClCompile Include="..\..\Source\UI\EcubeDialogComponent.cpp"/> + <ClCompile Include="..\..\Source\UI\CustomArrowButton.cpp"/> + <ClCompile Include="..\..\Source\UI\GraphViewer.cpp"/> + <ClCompile Include="..\..\Source\UI\EditorViewportButtons.cpp"/> + <ClCompile Include="..\..\Source\UI\SignalChainManager.cpp"/> + <ClCompile Include="..\..\Source\UI\EditorViewport.cpp"/> + <ClCompile Include="..\..\Source\UI\ProcessorList.cpp"/> + <ClCompile Include="..\..\Source\UI\CustomLookAndFeel.cpp"/> + <ClCompile Include="..\..\Source\UI\InfoLabel.cpp"/> + <ClCompile Include="..\..\Source\UI\DataViewport.cpp"/> + <ClCompile Include="..\..\Source\UI\ControlPanel.cpp"/> + <ClCompile Include="..\..\Source\UI\UIComponent.cpp"/> + <ClCompile Include="..\..\Source\MainWindow.cpp"/> + <ClCompile Include="..\..\Source\Main.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_AudioDataConverters.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_AudioSampleBuffer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_FloatVectorOperations.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiBuffer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiFile.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiKeyboardState.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiMessage.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiMessageSequence.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_IIRFilter.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_LagrangeInterpolator.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_BufferingAudioSource.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ChannelRemappingAudioSource.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_IIRFilterAudioSource.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_MixerAudioSource.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ResamplingAudioSource.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ReverbAudioSource.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioDeviceManager.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioIODevice.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioIODeviceType.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\midi_io\juce_MidiOutput.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\sources\juce_AudioSourcePlayer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\sources\juce_AudioTransportSource.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_cd\juce_AudioCDReader.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_android_Audio.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_android_Midi.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_android_OpenSL.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_ios_Audio.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_linux_ALSA.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_linux_AudioCDReader.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_linux_JackAudio.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_linux_Midi.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_mac_CoreAudio.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_mac_CoreMidi.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_ASIO.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_AudioCDBurner.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_AudioCDReader.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_DirectSound.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_Midi.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_WASAPI.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatManager.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatReader.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatReaderSource.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatWriter.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioSubsectionReader.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_BufferingAudioFormatReader.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_AiffAudioFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_CoreAudioFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_FlacAudioFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_LAMEEncoderAudioFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_MP3AudioFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_OggVorbisAudioFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_QuickTimeAudioFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_WavAudioFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_WindowsMediaAudioFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\sampler\juce_Sampler.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessor.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessorEditor.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessorGraph.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_GenericAudioProcessorEditor.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_PluginDescription.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format\juce_AudioPluginFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format\juce_AudioPluginFormatManager.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_LADSPAPluginFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_KnownPluginList.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_PluginDirectoryScanner.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_PluginListComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioDeviceSelectorComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioThumbnail.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioThumbnailCache.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_MidiKeyboardComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\players\juce_AudioProcessorPlayer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharacterFunctions.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_Identifier.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_LocalisedStrings.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_String.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringArray.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringPairArray.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringPool.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_TextDiff.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_BigInteger.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_Expression.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_Random.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_MemoryBlock.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_AbstractFifo.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_DynamicObject.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_NamedValueSet.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_PropertySet.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_Variant.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ChildProcess.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_HighResolutionTimer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ReadWriteLock.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_Thread.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ThreadPool.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_TimeSliceThread.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_PerformanceCounter.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_RelativeTime.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_Time.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_DirectoryIterator.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_File.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileFilter.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileInputStream.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileOutputStream.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileSearchPath.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_TemporaryFile.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_WildcardFileFilter.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_IPAddress.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_MACAddress.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_NamedPipe.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_Socket.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_URL.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_BufferedInputStream.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_FileInputSource.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_InputStream.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_MemoryInputStream.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_MemoryOutputStream.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_OutputStream.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_SubregionStream.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\logging\juce_FileLogger.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\logging\juce_Logger.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\system\juce_SystemStats.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\xml\juce_XmlDocument.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\xml\juce_XmlElement.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\javascript\juce_Javascript.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\javascript\juce_JSON.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_GZIPCompressorOutputStream.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_GZIPDecompressorInputStream.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_ZipFile.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\unit_tests\juce_UnitTest.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\misc\juce_Result.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\misc\juce_Uuid.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_Files.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_Misc.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_Network.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_SystemStats.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_Threads.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_linux_CommonFile.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_linux_Files.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_linux_Network.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_linux_SystemStats.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_linux_Threads.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_posix_NamedPipe.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_Files.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_Network.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_Registry.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_SystemStats.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_Threads.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_BlowFish.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_Primes.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_RSAKey.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\hashing\juce_MD5.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\hashing\juce_SHA256.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\values\juce_Value.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\values\juce_ValueTree.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\undomanager\juce_UndoManager.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\app_properties\juce_ApplicationProperties.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\app_properties\juce_PropertiesFile.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_ApplicationBase.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_DeletedAtShutdown.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_MessageListener.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_MessageManager.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\timers\juce_MultiTimer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\timers\juce_Timer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ActionBroadcaster.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_AsyncUpdater.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ChangeBroadcaster.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_ConnectedChildProcess.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_InterprocessConnection.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_InterprocessConnectionServer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_android_Messaging.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_linux_Messaging.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_win32_Messaging.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_Colour.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_ColourGradient.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_Colours.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_FillType.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_GraphicsContext.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_LowLevelGraphicsPostScriptRenderer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_LowLevelGraphicsSoftwareRenderer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_Image.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageCache.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageConvolutionKernel.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageFileFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\image_formats\juce_GIFLoader.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\image_formats\juce_JPEGLoader.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\image_formats\juce_PNGLoader.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_AffineTransform.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_EdgeTable.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_Path.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_PathIterator.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_PathStrokeType.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_RectangleList.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\placement\juce_Justification.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\placement\juce_RectanglePlacement.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_AttributedString.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_CustomTypeface.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_Font.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_GlyphArrangement.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_TextLayout.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_Typeface.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\effects\juce_DropShadowEffect.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\effects\juce_GlowEffect.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_android_Fonts.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_android_GraphicsContext.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_freetype_Fonts.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_linux_Fonts.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_win32_Direct2DGraphicsContext.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_win32_DirectWriteTypeface.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_win32_DirectWriteTypeLayout.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_win32_Fonts.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_Component.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_ComponentListener.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_Desktop.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_ModalComponentManager.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_ComponentDragger.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_DragAndDropContainer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseCursor.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseEvent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseInactivityDetector.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseInputSource.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseListener.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_CaretComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyboardFocusTraverser.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyListener.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyPress.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_ModifierKeys.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ComboBox.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ImageComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Label.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ListBox.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ProgressBar.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Slider.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TableHeaderComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TableListBox.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TextEditor.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Toolbar.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ToolbarItemComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ToolbarItemPalette.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TreeView.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_AlertWindow.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_CallOutBox.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ComponentPeer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_DialogWindow.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_DocumentWindow.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ResizableWindow.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ThreadWithProgressWindow.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_TooltipWindow.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_TopLevelWindow.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_MenuBarComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_MenuBarModel.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_PopupMenu.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentAnimator.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentBoundsConstrainer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentBuilder.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_GroupComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableCornerComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableEdgeComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ScrollBar.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableLayoutManager.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableLayoutResizerBar.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableObjectResizer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_TabbedButtonBar.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_TabbedComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_Viewport.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ArrowButton.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_Button.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_DrawableButton.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_HyperlinkButton.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ImageButton.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ShapeButton.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_TextButton.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ToggleButton.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ToolbarButton.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_MarkerList.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeCoordinate.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeCoordinatePositioner.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeParallelogram.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativePoint.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativePointPath.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeRectangle.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_Drawable.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableComposite.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableImage.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawablePath.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableRectangle.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableShape.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableText.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_SVGParser.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_BooleanPropertyComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_ButtonPropertyComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_ChoicePropertyComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_PropertyComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_PropertyPanel.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_SliderPropertyComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_TextPropertyComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V1.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V2.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V3.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_DirectoryContentsDisplayComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_DirectoryContentsList.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileBrowserComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileChooser.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileChooserDialogBox.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileFilter.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileListComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FilenameComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileSearchPathListComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileTreeComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_ImagePreviewComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_WildcardFileFilter.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandInfo.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandManager.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandTarget.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_KeyPressMappingSet.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\misc\juce_BubbleComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\misc\juce_DropShadower.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\application\juce_Application.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_android_FileChooser.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_android_Windowing.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_linux_Clipboard.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_linux_FileChooser.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_linux_Windowing.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_win32_DragAndDrop.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_win32_FileChooser.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_win32_Windowing.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CodeDocument.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CodeEditorComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CPlusPlusCodeTokeniser.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_LuaCodeTokeniser.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_XMLCodeTokeniser.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\documents\juce_FileBasedDocument.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\lookandfeel\juce_OldSchoolLookAndFeel.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_BubbleMessageComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_ColourSelector.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_KeyMappingEditorComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_LiveConstantEditor.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_PreferencesPanel.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_RecentlyOpenedFilesList.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_SplashScreen.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_android_WebBrowserComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_linux_SystemTrayIcon.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_linux_WebBrowserComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_mac_SystemTrayIcon.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_win32_ActiveXComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_win32_SystemTrayIcon.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_win32_WebBrowserComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLFrameBuffer.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLGraphicsContext.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLHelpers.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_android_CameraDevice.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_win32_CameraDevice.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_win32_DirectShowComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_win32_QuickTimeMovieComponent.cpp"> + <ExcludedFromBuild>true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\BinaryData.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\juce_audio_basics.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\juce_audio_devices.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\juce_audio_formats.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\juce_audio_processors.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\juce_audio_utils.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\juce_core.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\juce_cryptography.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\juce_data_structures.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\juce_events.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\juce_graphics.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\juce_gui_basics.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\juce_gui_extra.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\juce_opengl.cpp"/> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\juce_video.cpp"/> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\Source\AccessClass.h"/> + <ClInclude Include="..\..\Source\Network\PracticalSocket.h"/> + <ClInclude Include="..\..\Source\Audio\AudioComponent.h"/> + <ClInclude Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutput.h"/> + <ClInclude Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutputEditor.h"/> + <ClInclude Include="..\..\Source\Processors\AudioNode\AudioEditor.h"/> + <ClInclude Include="..\..\Source\Processors\AudioNode\AudioNode.h"/> + <ClInclude Include="..\..\Source\Processors\AudioResamplingNode\AudioResamplingNode.h"/> + <ClInclude Include="..\..\Source\Processors\Channel\Channel.h"/> + <ClInclude Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingEditor.h"/> + <ClInclude Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingNode.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\EcubeEditor.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\RHD2000Editor.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\EcubeThread.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\okFrontPanelDLL.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000datablock.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000evalboard.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000registers.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\RHD2000Thread.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\FileReaderThread.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\FPGAThread.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\DataBuffer.h"/> + <ClInclude Include="..\..\Source\Processors\DataThreads\DataThread.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Bessel.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Biquad.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Butterworth.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Cascade.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\ChebyshevI.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\ChebyshevII.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Common.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Custom.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Design.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Dsp.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Elliptic.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Filter.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Layout.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Legendre.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\MathSupplement.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Params.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\PoleFilter.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\RBJ.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\RootFinder.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\SmoothedFilter.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\State.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Types.h"/> + <ClInclude Include="..\..\Source\Processors\Dsp\Utilities.h"/> + <ClInclude Include="..\..\Source\Processors\Editors\ChannelSelector.h"/> + <ClInclude Include="..\..\Source\Processors\Editors\ElectrodeButtons.h"/> + <ClInclude Include="..\..\Source\Processors\Editors\GenericEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Editors\ImageIcon.h"/> + <ClInclude Include="..\..\Source\Processors\Editors\VisualizerEditor.h"/> + <ClInclude Include="..\..\Source\Processors\EventDetector\EventDetector.h"/> + <ClInclude Include="..\..\Source\Processors\EventNode\EventNode.h"/> + <ClInclude Include="..\..\Source\Processors\EventNode\EventNodeEditor.h"/> + <ClInclude Include="..\..\Source\Processors\FileReader\FileReader.h"/> + <ClInclude Include="..\..\Source\Processors\FileReader\FileReaderEditor.h"/> + <ClInclude Include="..\..\Source\Processors\FilterNode\FilterEditor.h"/> + <ClInclude Include="..\..\Source\Processors\FilterNode\FilterNode.h"/> + <ClInclude Include="..\..\Source\Processors\FPGAOutput\FPGAOutput.h"/> + <ClInclude Include="..\..\Source\Processors\FPGAOutput\FPGAOutputEditor.h"/> + <ClInclude Include="..\..\Source\Processors\GenericProcessor\GenericProcessor.h"/> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayCanvas.h"/> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayEditor.h"/> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayNode.h"/> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageCanvas.h"/> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageEditor.h"/> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageNode.h"/> + <ClInclude Include="..\..\Source\Processors\Merger\Merger.h"/> + <ClInclude Include="..\..\Source\Processors\Merger\MergerEditor.h"/> + <ClInclude Include="..\..\Source\Processors\MessageCenter\MessageCenter.h"/> + <ClInclude Include="..\..\Source\Processors\MessageCenter\MessageCenterEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Parameter\ParameterEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Parameter\Parameter.h"/> + <ClInclude Include="..\..\Source\Processors\PhaseDetector\PhaseDetector.h"/> + <ClInclude Include="..\..\Source\Processors\PhaseDetector\PhaseDetectorEditor.h"/> + <ClInclude Include="..\..\Source\Processors\ProcessorGraph\ProcessorGraph.h"/> + <ClInclude Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutput.h"/> + <ClInclude Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutputEditor.h"/> + <ClInclude Include="..\..\Source\Processors\RecordControl\RecordControl.h"/> + <ClInclude Include="..\..\Source\Processors\RecordControl\RecordControlEditor.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\EngineConfigWindow.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\HDF5FileFormat.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\HDF5Recording.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\OriginalRecording.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\RecordEngine.h"/> + <ClInclude Include="..\..\Source\Processors\RecordNode\RecordNode.h"/> + <ClInclude Include="..\..\Source\Processors\ReferenceNode\ReferenceNode.h"/> + <ClInclude Include="..\..\Source\Processors\ReferenceNode\ReferenceNodeEditor.h"/> + <ClInclude Include="..\..\Source\Processors\ResamplingNode\ResamplingNode.h"/> + <ClInclude Include="..\..\Source\Processors\ResamplingNode\ResamplingNodeEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Serial\PulsePal.h"/> + <ClInclude Include="..\..\Source\Processors\Serial\ofArduino.h"/> + <ClInclude Include="..\..\Source\Processors\Serial\ofConstants.h"/> + <ClInclude Include="..\..\Source\Processors\Serial\ofSerial.h"/> + <ClInclude Include="..\..\Source\Processors\SerialInput\SerialInput.h"/> + <ClInclude Include="..\..\Source\Processors\SerialInput\SerialInputEditor.h"/> + <ClInclude Include="..\..\Source\Processors\SignalGenerator\SignalGenerator.h"/> + <ClInclude Include="..\..\Source\Processors\SignalGenerator\SignalGeneratorEditor.h"/> + <ClInclude Include="..\..\Source\Processors\SourceNode\SourceNode.h"/> + <ClInclude Include="..\..\Source\Processors\SourceNode\SourceNodeEditor.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeDetector\SpikeDetector.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeDetector\SpikeDetectorEditor.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayCanvas.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayEditor.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayNode.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSortBoxes.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorter.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorterCanvas.h"/> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorterEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Splitter\Splitter.h"/> + <ClInclude Include="..\..\Source\Processors\Splitter\SplitterEditor.h"/> + <ClInclude Include="..\..\Source\Processors\Visualization\DataWindow.h"/> + <ClInclude Include="..\..\Source\Processors\Visualization\SpikeObject.h"/> + <ClInclude Include="..\..\Source\Processors\Visualization\Visualizer.h"/> + <ClInclude Include="..\..\Source\Processors\WiFiOutput\WiFiOutput.h"/> + <ClInclude Include="..\..\Source\Processors\WiFiOutput\WiFiOutputEditor.h"/> + <ClInclude Include="..\..\Source\UI\EcubeDialogComponent.h"/> + <ClInclude Include="..\..\Source\UI\CustomArrowButton.h"/> + <ClInclude Include="..\..\Source\UI\GraphViewer.h"/> + <ClInclude Include="..\..\Source\UI\EditorViewportButtons.h"/> + <ClInclude Include="..\..\Source\UI\SignalChainManager.h"/> + <ClInclude Include="..\..\Source\UI\EditorViewport.h"/> + <ClInclude Include="..\..\Source\UI\ProcessorList.h"/> + <ClInclude Include="..\..\Source\UI\CustomLookAndFeel.h"/> + <ClInclude Include="..\..\Source\UI\InfoLabel.h"/> + <ClInclude Include="..\..\Source\UI\DataViewport.h"/> + <ClInclude Include="..\..\Source\UI\ControlPanel.h"/> + <ClInclude Include="..\..\Source\UI\UIComponent.h"/> + <ClInclude Include="..\..\Source\MainWindow.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_AudioDataConverters.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_AudioSampleBuffer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_FloatVectorOperations.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiBuffer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiFile.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiKeyboardState.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiMessage.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiMessageSequence.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_Decibels.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_IIRFilter.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_LagrangeInterpolator.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_Reverb.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_AudioSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_BufferingAudioSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ChannelRemappingAudioSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_IIRFilterAudioSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_MixerAudioSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_PositionableAudioSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ResamplingAudioSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ReverbAudioSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\juce_audio_basics.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioDeviceManager.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioIODevice.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioIODeviceType.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_SystemAudioVolume.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\midi_io\juce_MidiInput.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\midi_io\juce_MidiOutput.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\sources\juce_AudioSourcePlayer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\sources\juce_AudioTransportSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_cd\juce_AudioCDBurner.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_cd\juce_AudioCDReader.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_MidiDataConcatenator.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\juce_audio_devices.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatManager.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatReader.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatReaderSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatWriter.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioSubsectionReader.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_BufferingAudioFormatReader.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_MemoryMappedAudioFormatReader.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_AiffAudioFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_CoreAudioFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_FlacAudioFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_LAMEEncoderAudioFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_MP3AudioFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_OggVorbisAudioFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_QuickTimeAudioFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_WavAudioFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_WindowsMediaAudioFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\sampler\juce_Sampler.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\juce_audio_formats.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioPlayHead.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioPluginInstance.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessor.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessorEditor.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessorGraph.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessorListener.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_GenericAudioProcessorEditor.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_PluginDescription.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format\juce_AudioPluginFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format\juce_AudioPluginFormatManager.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_AudioUnitPluginFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_LADSPAPluginFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VST3Common.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_KnownPluginList.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_PluginDirectoryScanner.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_PluginListComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\juce_audio_processors.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioDeviceSelectorComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioThumbnail.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioThumbnailBase.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioThumbnailCache.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_MidiKeyboardComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\players\juce_AudioProcessorPlayer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\juce_audio_utils.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharacterFunctions.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharPointer_ASCII.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharPointer_UTF16.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharPointer_UTF32.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharPointer_UTF8.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_Identifier.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_LocalisedStrings.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_NewLine.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_String.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringArray.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringPairArray.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringPool.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringRef.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_TextDiff.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_BigInteger.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_Expression.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_MathsFunctions.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_Random.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_Range.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_Atomic.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_ByteOrder.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_ContainerDeletePolicy.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_HeapBlock.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_LeakedObjectDetector.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_Memory.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_MemoryBlock.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_OptionalScopedPointer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_ReferenceCountedObject.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_ScopedPointer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_SharedResourcePointer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_Singleton.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_WeakReference.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_AbstractFifo.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_Array.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_ArrayAllocationBase.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_DynamicObject.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_ElementComparator.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_HashMap.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_LinkedListPointer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_NamedValueSet.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_OwnedArray.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_PropertySet.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_ReferenceCountedArray.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_ScopedValueSetter.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_SortedSet.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_SparseSet.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_Variant.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ChildProcess.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_CriticalSection.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_DynamicLibrary.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_HighResolutionTimer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_InterProcessLock.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_Process.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ReadWriteLock.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ScopedLock.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ScopedReadLock.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ScopedWriteLock.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_SpinLock.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_Thread.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ThreadLocalValue.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ThreadPool.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_TimeSliceThread.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_WaitableEvent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_PerformanceCounter.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_RelativeTime.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_Time.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_DirectoryIterator.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_File.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileFilter.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileInputStream.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileOutputStream.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileSearchPath.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_MemoryMappedFile.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_TemporaryFile.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_WildcardFileFilter.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_IPAddress.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_MACAddress.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_NamedPipe.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_Socket.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_URL.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_BufferedInputStream.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_FileInputSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_InputSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_InputStream.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_MemoryInputStream.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_MemoryOutputStream.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_OutputStream.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_SubregionStream.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\logging\juce_FileLogger.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\logging\juce_Logger.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\system\juce_PlatformDefs.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\system\juce_StandardHeader.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\system\juce_SystemStats.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\system\juce_TargetPlatform.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\xml\juce_XmlDocument.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\xml\juce_XmlElement.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\javascript\juce_Javascript.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\javascript\juce_JSON.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_GZIPCompressorOutputStream.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_GZIPDecompressorInputStream.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_ZipFile.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\unit_tests\juce_UnitTest.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\misc\juce_Result.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\misc\juce_Uuid.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\misc\juce_WindowsRegistry.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_JNIHelpers.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_BasicNativeHeaders.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_osx_ObjCHelpers.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_posix_SharedCode.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_ComSmartPtr.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\juce_core.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_BlowFish.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_Primes.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_RSAKey.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\hashing\juce_MD5.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\hashing\juce_SHA256.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\juce_cryptography.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\values\juce_Value.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\values\juce_ValueTree.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\undomanager\juce_UndoableAction.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\undomanager\juce_UndoManager.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\app_properties\juce_ApplicationProperties.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\app_properties\juce_PropertiesFile.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\juce_data_structures.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_ApplicationBase.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_CallbackMessage.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_DeletedAtShutdown.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_Initialisation.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_Message.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_MessageListener.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_MessageManager.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_NotificationType.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\timers\juce_MultiTimer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\timers\juce_Timer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ActionListener.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_AsyncUpdater.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ChangeBroadcaster.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ChangeListener.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ListenerList.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_ConnectedChildProcess.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_InterprocessConnection.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_InterprocessConnectionServer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_osx_MessageQueue.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_ScopedXLock.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_win32_HiddenMessageWindow.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\juce_events.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_Colour.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_ColourGradient.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_Colours.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_FillType.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_PixelFormats.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_GraphicsContext.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_LowLevelGraphicsContext.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_LowLevelGraphicsPostScriptRenderer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_LowLevelGraphicsSoftwareRenderer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_Image.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageCache.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageConvolutionKernel.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageFileFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_AffineTransform.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_BorderSize.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_EdgeTable.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_Line.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_Path.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_PathIterator.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_PathStrokeType.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_Point.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_Rectangle.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_RectangleList.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\placement\juce_Justification.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\placement\juce_RectanglePlacement.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_AttributedString.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_CustomTypeface.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_Font.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_TextLayout.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_Typeface.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\effects\juce_DropShadowEffect.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\effects\juce_GlowEffect.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\effects\juce_ImageEffectFilter.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_mac_CoreGraphicsContext.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_mac_CoreGraphicsHelpers.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_RenderingHelpers.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\juce_graphics.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_CachedComponentImage.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_Component.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_ComponentListener.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_Desktop.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_ModalComponentManager.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_ComponentDragger.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_DragAndDropContainer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_DragAndDropTarget.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_FileDragAndDropTarget.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_LassoComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseCursor.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseEvent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseInactivityDetector.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseInputSource.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseListener.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_SelectedItemSet.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_TextDragAndDropTarget.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_CaretComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyboardFocusTraverser.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyListener.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyPress.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_ModifierKeys.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_SystemClipboard.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_TextEditorKeyMapper.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_TextInputTarget.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ComboBox.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ImageComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Label.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ListBox.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ProgressBar.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Slider.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TableHeaderComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TableListBox.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TextEditor.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Toolbar.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ToolbarItemComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ToolbarItemFactory.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ToolbarItemPalette.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TreeView.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_AlertWindow.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_CallOutBox.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ComponentPeer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_DialogWindow.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_DocumentWindow.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_NativeMessageBox.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ResizableWindow.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ThreadWithProgressWindow.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_TooltipWindow.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_TopLevelWindow.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_MenuBarComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_MenuBarModel.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_PopupMenu.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_AnimatedPosition.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_AnimatedPositionBehaviours.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentAnimator.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentBoundsConstrainer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_GroupComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableCornerComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableEdgeComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ScrollBar.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableLayoutManager.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableLayoutResizerBar.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableObjectResizer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_TabbedButtonBar.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_TabbedComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_Viewport.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ArrowButton.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_Button.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_DrawableButton.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_HyperlinkButton.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ImageButton.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ShapeButton.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_TextButton.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ToggleButton.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ToolbarButton.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_MarkerList.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeCoordinate.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeCoordinatePositioner.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeParallelogram.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativePoint.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativePointPath.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeRectangle.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_Drawable.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableComposite.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableImage.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawablePath.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableRectangle.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableShape.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableText.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_BooleanPropertyComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_ButtonPropertyComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_ChoicePropertyComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_PropertyComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_PropertyPanel.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_SliderPropertyComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_TextPropertyComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V1.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V2.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V3.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_DirectoryContentsDisplayComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_DirectoryContentsList.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileBrowserComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileBrowserListener.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileChooser.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileChooserDialogBox.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileFilter.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileListComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FilenameComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FilePreviewComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileSearchPathListComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileTreeComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_ImagePreviewComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_WildcardFileFilter.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandID.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandInfo.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandManager.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandTarget.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_KeyPressMappingSet.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\misc\juce_BubbleComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\misc\juce_DropShadower.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\application\juce_Application.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\application\juce_Initialisation.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_MultiTouchMapper.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\juce_gui_basics.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CodeDocument.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CodeEditorComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CodeTokeniser.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CPlusPlusCodeTokeniser.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CPlusPlusCodeTokeniserFunctions.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_LuaCodeTokeniser.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_XMLCodeTokeniser.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\documents\juce_FileBasedDocument.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\embedding\juce_ActiveXControlComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\embedding\juce_NSViewComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\embedding\juce_UIViewComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\lookandfeel\juce_OldSchoolLookAndFeel.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_AppleRemote.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_BubbleMessageComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_ColourSelector.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_KeyMappingEditorComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_LiveConstantEditor.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_PreferencesPanel.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_RecentlyOpenedFilesList.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\juce_gui_extra.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_Matrix3D.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLContext.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLFrameBuffer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLGraphicsContext.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLHelpers.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLRenderer.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_Quaternion.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_Vector3D.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGL_android.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGL_ios.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGL_linux.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGL_osx.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGL_win32.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\juce_opengl.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_video\playback\juce_DirectShowComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_video\playback\juce_QuickTimeMovieComponent.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_video\capture\juce_CameraDevice.h"/> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_video\juce_video.h"/> + <ClInclude Include="..\..\JuceLibraryCode\AppConfig.h"/> + <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> + <ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/> + </ItemGroup> + <ItemGroup> + <None Include="..\..\Resources\Fonts\cpmono-black-serialized"/> + <None Include="..\..\Resources\Fonts\cpmono-bold-serialized"/> + <None Include="..\..\Resources\Fonts\cpmono-extralight-serialized"/> + <None Include="..\..\Resources\Fonts\cpmono-light-serialized"/> + <None Include="..\..\Resources\Fonts\cpmono-plain-serialized"/> + <None Include="..\..\Resources\Fonts\BebasNeue.otf"/> + <None Include="..\..\Resources\Fonts\cpmono_bold.otf"/> + <None Include="..\..\Resources\Fonts\cpmono_extra_light.otf"/> + <None Include="..\..\Resources\Fonts\cpmono_light.otf"/> + <None Include="..\..\Resources\Fonts\cpmono_plain.otf"/> + <None Include="..\..\Resources\Fonts\miso-bold.ttf"/> + <None Include="..\..\Resources\Fonts\miso-light.ttf"/> + <None Include="..\..\Resources\Fonts\miso-regular.ttf"/> + <None Include="..\..\Resources\Fonts\miso-serialized"/> + <None Include="..\..\Resources\Fonts\nordic.ttf"/> + <None Include="..\..\Resources\Fonts\ostrich.ttf"/> + <None Include="..\..\Resources\Fonts\silkscreen-serialized"/> + <None Include="..\..\Resources\Fonts\silkscreen.ttf"/> + <None Include="..\..\Resources\Fonts\unibody-8.otf"/> + <None Include="..\..\Resources\Images\Icons\ArduinoIcon.png"/> + <None Include="..\..\Resources\Images\Icons\OpenEphysBoardLogoBlack.png"/> + <None Include="..\..\Resources\Images\Icons\OpenEphysBoardLogoGray.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons-01.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons-02.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons-03.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons-04.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons-05.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_neutral-01.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_neutral-02.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_neutral-03.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_neutral-04.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_neutral-05.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected-01.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected-02.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected-03.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected-04.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected-05.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected_over-01.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected_over-02.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected_over-03.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected_over-04.png"/> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected_over-05.png"/> + <None Include="..\..\Resources\Images\Icons\noise_wave.png"/> + <None Include="..\..\Resources\Images\Icons\saw_wave.png"/> + <None Include="..\..\Resources\Images\Icons\sine_wave.png"/> + <None Include="..\..\Resources\Images\Icons\square_wave.png"/> + <None Include="..\..\Resources\Images\Icons\triangle_wave.png"/> + <None Include="..\..\Resources\Images\Icons\wifi.png"/> + <None Include="..\..\Resources\Images\Icons\SourceDrop.png"/> + <None Include="..\..\Resources\Images\Icons\DefaultDataSource.png"/> + <None Include="..\..\Resources\Images\Icons\FileReaderIcon.png"/> + <None Include="..\..\Resources\Images\Icons\IntanIcon.png"/> + <None Include="..\..\Resources\Images\Buttons\muteoff.png"/> + <None Include="..\..\Resources\Images\Buttons\muteon.png"/> + <None Include="..\..\Resources\Images\Buttons\MergerA-01.png"/> + <None Include="..\..\Resources\Images\Buttons\MergerA-02.png"/> + <None Include="..\..\Resources\Images\Buttons\MergerB-01.png"/> + <None Include="..\..\Resources\Images\Buttons\MergerB-02.png"/> + <None Include="..\..\Resources\Images\Buttons\PipelineA-01.png"/> + <None Include="..\..\Resources\Images\Buttons\PipelineA-02.png"/> + <None Include="..\..\Resources\Images\Buttons\PipelineB-01.png"/> + <None Include="..\..\Resources\Images\Buttons\PipelineB-02.png"/> + <None Include="..\..\JuceLibraryCode\modules\juce_audio_basics\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_audio_devices\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_audio_formats\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_audio_processors\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_audio_utils\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_core\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_cryptography\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_data_structures\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_events\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_graphics\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_gui_basics\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_gui_extra\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_opengl\juce_module_info"/> + <None Include="..\..\JuceLibraryCode\modules\juce_video\juce_module_info"/> + </ItemGroup> + <ItemGroup> + <ResourceCompile Include=".\resources.rc"/> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/> + <ImportGroup Label="ExtensionTargets"/> +</Project> diff --git a/Builds/VisualStudio2013/open-ephys.vcxproj.filters b/Builds/VisualStudio2013/open-ephys.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..552cf996fc94a3692721a2c6823d26c201fff477 --- /dev/null +++ b/Builds/VisualStudio2013/open-ephys.vcxproj.filters @@ -0,0 +1,4019 @@ +<?xml version="1.0" encoding="utf-8"?> + +<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="open-ephys"> + <UniqueIdentifier>{09327587-4EDB-7847-7714-99A7CCA19DD2}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Resources"> + <UniqueIdentifier>{4FB3688D-1CC4-C459-F92E-F1764A198374}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Resources\Fonts"> + <UniqueIdentifier>{1DC91498-AFB8-F53B-37B4-DA354ACC7637}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Resources\Images"> + <UniqueIdentifier>{0CFBAC61-A902-EBAE-20AE-E5199135B6E5}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Resources\Images\Icons"> + <UniqueIdentifier>{75E4141A-653A-06D6-ED9C-A35FBA8EA1DC}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Resources\Images\Buttons"> + <UniqueIdentifier>{787A3382-81B7-4512-0559-E369ACB28986}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source"> + <UniqueIdentifier>{02B8D40A-0071-792E-592F-8A30DD87BAE6}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Network"> + <UniqueIdentifier>{F426EB08-DE72-34FB-F5F1-D8D077A9C12D}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Audio"> + <UniqueIdentifier>{DC7BD6F0-2EB6-B7BF-B84C-66EF8EE93230}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors"> + <UniqueIdentifier>{3DDEC88C-BAA5-2DDA-A59F-0FB74070AB82}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\ArduinoOutput"> + <UniqueIdentifier>{26D17857-B604-0035-CFB5-C3FFD320BD99}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\AudioNode"> + <UniqueIdentifier>{117683A8-B332-1FBB-1FA0-8C6C7D231B69}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\AudioResamplingNode"> + <UniqueIdentifier>{BB0D2303-17CA-2E39-9765-7A701B2AE2F6}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Channel"> + <UniqueIdentifier>{7374BFF8-0BFC-382A-1DC3-F4B934CF25BC}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\ChannelMappingNode"> + <UniqueIdentifier>{CFA4FC13-DA1B-011C-D897-0FF0B7D1301B}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\DataThreads"> + <UniqueIdentifier>{AA123918-8642-2612-7B72-C63DA032271B}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\DataThreads\rhythm-api"> + <UniqueIdentifier>{EF1534B7-662E-9844-D11F-1D1003B02E4A}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Dsp"> + <UniqueIdentifier>{9C1026A0-8DA9-8D8D-AC1D-22880764350D}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Editors"> + <UniqueIdentifier>{E65874A6-23B2-9D76-B12A-15730E2192BC}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\EventDetector"> + <UniqueIdentifier>{FDD5B79A-1AA4-7745-BB6E-E09A6DFC328E}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\EventNode"> + <UniqueIdentifier>{3BDCC6CD-7B1F-ED1C-7442-F2B0CD1A86C8}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\FileReader"> + <UniqueIdentifier>{59F490B2-F5D9-601B-01AE-368632E3C9D7}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\FilterNode"> + <UniqueIdentifier>{189BB62E-5852-A4F3-AC79-704FAAE02870}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\FPGAOutput"> + <UniqueIdentifier>{995BE2D8-55CB-BBA8-8155-2EFE5F03F143}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\GenericProcessor"> + <UniqueIdentifier>{223ADE1C-7B16-1075-5D22-4771767BF960}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\LfpDisplayNode"> + <UniqueIdentifier>{6F781BCA-7DB6-E933-BDDB-D2EAA51713B0}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\LfpTriggeredAverageNode"> + <UniqueIdentifier>{1150A21B-5E97-AC73-C141-CEF966829E71}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Merger"> + <UniqueIdentifier>{144C1CD2-E387-1D24-EFF3-C5238BD84182}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\MessageCenter"> + <UniqueIdentifier>{BC6AF028-A7C2-7914-7DCA-A3F145C7DF5F}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Parameter"> + <UniqueIdentifier>{1A622D55-9AE3-2A07-5AC5-237BFA2278DD}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\PhaseDetector"> + <UniqueIdentifier>{C9BE6651-5B98-F5D3-047F-E021EE143E00}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\ProcessorGraph"> + <UniqueIdentifier>{6A13AFE9-16FA-463C-B758-8702F1EA4F8B}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\PulsePalOutput"> + <UniqueIdentifier>{75B4E291-E4EA-812C-4963-E760993C4B0D}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\RecordControl"> + <UniqueIdentifier>{2DF3655B-132B-CD8A-6483-C2F4C74C6D42}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\RecordNode"> + <UniqueIdentifier>{185877A6-9FE6-DD2E-BC41-93EE3C608CFC}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\ReferenceNode"> + <UniqueIdentifier>{763A6B4C-B0C6-BA22-7FAB-0DEEF8D66097}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\ResamplingNode"> + <UniqueIdentifier>{3135385A-1E61-FB08-3E00-D5C52DFB1BC9}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Serial"> + <UniqueIdentifier>{58FEEDBF-D0C4-32AB-FC79-00C612892B6D}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SerialInput"> + <UniqueIdentifier>{AC7C03CC-B7F3-EF83-085E-AB894624CAFC}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SignalGenerator"> + <UniqueIdentifier>{98080044-1FF9-22CA-70D0-745170D30FD6}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SourceNode"> + <UniqueIdentifier>{83A3043C-94AE-ADED-C72B-394EB4BAE6B4}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SpikeDetector"> + <UniqueIdentifier>{2D5F5EA7-422D-75BE-FA59-68F2C55B89E8}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SpikeDisplayNode"> + <UniqueIdentifier>{818E5C85-5930-DC8D-A3C2-0443F4C35B47}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\SpikeSorter"> + <UniqueIdentifier>{11B5BECA-5948-83BC-3C0F-DEB527800990}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Splitter"> + <UniqueIdentifier>{2AAA8664-72AA-EC5C-92E2-3392067B058F}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\Visualization"> + <UniqueIdentifier>{851942D5-FED6-A7B2-6FAB-C278A247FE7A}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\Processors\WiFiOutput"> + <UniqueIdentifier>{F733C561-3FBD-E17D-CC23-601836ADF7E6}</UniqueIdentifier> + </Filter> + <Filter Include="open-ephys\Source\UI"> + <UniqueIdentifier>{717A0FE3-E079-E4BD-8F50-15A1953825C5}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules"> + <UniqueIdentifier>{422C46B7-0467-2DB0-BF3C-16DFCAFD69AC}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_basics"> + <UniqueIdentifier>{3247ED97-A75A-F50B-8CCC-46155E895806}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_basics\buffers"> + <UniqueIdentifier>{A33A1E1D-AC2C-6382-8681-48B0FC374C60}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_basics\midi"> + <UniqueIdentifier>{3FD908F5-98C8-9A61-FC03-0BAF8913CBB0}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_basics\effects"> + <UniqueIdentifier>{11A75801-B027-40BD-4993-023023ACCBF7}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_basics\sources"> + <UniqueIdentifier>{EF2CAB40-0432-429B-C517-86ADF136BB8A}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_basics\synthesisers"> + <UniqueIdentifier>{8F7EC212-3168-AD81-5064-C45BA838C408}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_devices"> + <UniqueIdentifier>{CACD7B50-4DB3-76AF-A6E8-90DF94F8F594}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_devices\audio_io"> + <UniqueIdentifier>{9D270B31-2425-8FDB-84A4-6A2288FF5B2F}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_devices\midi_io"> + <UniqueIdentifier>{0F766DD4-A277-CB86-5647-42498C8B41E1}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_devices\sources"> + <UniqueIdentifier>{D64942B4-6984-3623-3347-45D472AE1C61}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_devices\audio_cd"> + <UniqueIdentifier>{45C2CE26-EC4B-BA52-58F3-297C408E1483}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_devices\native"> + <UniqueIdentifier>{01603E05-423B-5FC3-1BEE-E15ED33B5688}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_formats"> + <UniqueIdentifier>{65CB28F8-0422-A8F3-9A17-959E12A1F8E2}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_formats\format"> + <UniqueIdentifier>{2FE25F4C-E9DF-04A5-CAED-6E4B7CF28C59}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_formats\codecs"> + <UniqueIdentifier>{0CD9E281-DDD0-91EC-6F77-EA9D9D5E0E1A}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_formats\sampler"> + <UniqueIdentifier>{40C5CA7C-AEBB-05B1-11CE-AE41D87B5CCB}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_processors"> + <UniqueIdentifier>{0B0E7392-324B-088C-FBEB-5FE999D61782}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_processors\processors"> + <UniqueIdentifier>{77E2C34E-A4D6-EDB5-A107-7CB3CEF0E8EF}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_processors\format"> + <UniqueIdentifier>{20254EFE-6CBD-31A7-2119-92B1E0E0E311}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_processors\format_types"> + <UniqueIdentifier>{70796D73-6D30-8A1B-4732-7C021E47C05A}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_processors\scanning"> + <UniqueIdentifier>{EB8DD942-E2CB-869F-D381-E02A65BA790B}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_utils"> + <UniqueIdentifier>{B63F69FD-8A40-8E1E-E7ED-419B8DC1C12B}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_utils\gui"> + <UniqueIdentifier>{8167E753-09C7-5D1C-EF2B-32D297557443}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_audio_utils\players"> + <UniqueIdentifier>{AEDCB7F7-7A36-5392-8E9A-715F5BDE35CB}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core"> + <UniqueIdentifier>{95CA1506-2B94-0DEE-0C8D-85EDEBBC4E88}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\text"> + <UniqueIdentifier>{244D11B0-2D68-3C08-A0B7-0D12469BC3AA}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\maths"> + <UniqueIdentifier>{476C69CE-0B67-6B85-E888-45D91E37A29E}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\memory"> + <UniqueIdentifier>{7C5AD030-F8CC-6E85-0AF6-196B3ED40AC6}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\containers"> + <UniqueIdentifier>{0608ADE9-66EF-1A19-6D57-12D07F76EB53}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\threads"> + <UniqueIdentifier>{05F3DB8A-499C-6ACA-282F-5BF8455A0DE1}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\time"> + <UniqueIdentifier>{C9F6D785-BF78-5AA1-B479-111C65397864}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\files"> + <UniqueIdentifier>{C8F726FC-26BF-2E6B-4ED5-55A7FE316D7D}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\network"> + <UniqueIdentifier>{DA0DC4AC-B511-A2D4-199A-C93454D6F114}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\streams"> + <UniqueIdentifier>{91929C6F-7902-B87D-5260-2F6CBF8ACD93}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\logging"> + <UniqueIdentifier>{C294408A-2005-2E9E-7AC0-8D3ABE8AC175}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\system"> + <UniqueIdentifier>{4634FFAE-9586-A970-364C-4FDDA635F99F}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\xml"> + <UniqueIdentifier>{F2B2F310-F30F-7166-42A9-9BF9C230DA78}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\javascript"> + <UniqueIdentifier>{1B67A7C0-86E0-53F6-6AE3-7AD93B8DC95B}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\zip"> + <UniqueIdentifier>{F03654BC-34D8-F975-BEA3-750CC2783D23}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\unit_tests"> + <UniqueIdentifier>{4927C7A1-9235-4AA1-93CD-B4E67E6F1E5F}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\misc"> + <UniqueIdentifier>{FA891A58-9FDA-9651-43C4-714A19B5D08D}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_core\native"> + <UniqueIdentifier>{C79A4D23-7866-8F3E-AC39-BD68C52A9259}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_cryptography"> + <UniqueIdentifier>{3C7C8F35-6C08-9866-6663-6FEFE2EFC9FC}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_cryptography\encryption"> + <UniqueIdentifier>{7703D2CE-C32A-936A-0EEF-949FE6E52EB5}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_cryptography\hashing"> + <UniqueIdentifier>{8D283B6C-13BA-9EF6-1B18-B1C393786943}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_data_structures"> + <UniqueIdentifier>{928D8FCC-5E00-174B-6538-93E8D75AB396}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_data_structures\values"> + <UniqueIdentifier>{1988E68A-A964-64CA-0E0C-26FF9BC5176C}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_data_structures\undomanager"> + <UniqueIdentifier>{3DF036EA-3B80-553B-2494-3AAC835CAE75}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_data_structures\app_properties"> + <UniqueIdentifier>{358AEA11-3F96-36AE-7B32-71373B5C5396}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_events"> + <UniqueIdentifier>{F2A38F45-6E55-E147-2E52-64A89FDD9D59}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_events\messages"> + <UniqueIdentifier>{6172822C-01A5-E824-12DA-FA43FA934D35}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_events\timers"> + <UniqueIdentifier>{41DC3BE3-D629-8A17-C32B-F5B4008B5FAD}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_events\broadcasters"> + <UniqueIdentifier>{B098BC87-3298-7E6B-12DC-D26C09CDCAED}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_events\interprocess"> + <UniqueIdentifier>{6322B88F-984A-C3CD-6263-38D7AA49B6EC}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_events\native"> + <UniqueIdentifier>{73C1E759-AD90-59A3-942E-2D10FAA29107}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_graphics"> + <UniqueIdentifier>{EE1AE8C3-0908-8F53-A4E5-D930C7C97C26}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_graphics\colour"> + <UniqueIdentifier>{4926B3FF-E797-F586-857A-69D9703FA2D1}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_graphics\contexts"> + <UniqueIdentifier>{EBC65085-3AD5-280C-1A29-2B1683643AA1}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_graphics\images"> + <UniqueIdentifier>{413F481F-075C-2958-115C-D8268682FCB7}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_graphics\image_formats"> + <UniqueIdentifier>{69E1179D-76EC-26DC-C3E6-6602ED26D783}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_graphics\geometry"> + <UniqueIdentifier>{C1A1A236-AB01-173E-96C3-0706BFF93B1E}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_graphics\placement"> + <UniqueIdentifier>{1182303F-ECA3-166D-AC0C-92C5E762CB93}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_graphics\fonts"> + <UniqueIdentifier>{26ECA2AF-7368-C6CC-58EF-017ECD1862D0}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_graphics\effects"> + <UniqueIdentifier>{E37D25CD-4350-4614-055B-7ABC55E67895}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_graphics\native"> + <UniqueIdentifier>{FFC6E1CC-C772-75E6-5087-FB5D4E016799}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics"> + <UniqueIdentifier>{8E43579F-C185-266D-DD67-F8B95BD80F2F}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\components"> + <UniqueIdentifier>{2CB59E7C-D0E4-7D27-2ACF-C7ABADEE936D}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\mouse"> + <UniqueIdentifier>{796B7886-44A7-34CC-9B95-BF4FB2C7B6F4}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\keyboard"> + <UniqueIdentifier>{A92719C7-70BE-57C4-CE9E-A9BC9DFEB757}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\widgets"> + <UniqueIdentifier>{75F1F352-251A-75E0-D941-8431588F5C1E}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\windows"> + <UniqueIdentifier>{DB6E3D09-66DA-12DA-BAE8-A5BFFA7A14AC}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\menus"> + <UniqueIdentifier>{7BCEAB87-62FD-0327-EB5D-679E54EDB9B1}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\layout"> + <UniqueIdentifier>{E980FADB-6E3F-B93C-DE02-CE4271C9BA93}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\buttons"> + <UniqueIdentifier>{C3B2EB8A-1A2F-306F-AA78-3E9D1593788B}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\positioning"> + <UniqueIdentifier>{7A53E6F1-1343-33B8-4CA8-1D7B714A0E76}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\drawables"> + <UniqueIdentifier>{5A0AA36E-3957-E413-14C6-31CBE15271DF}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\properties"> + <UniqueIdentifier>{D7E3D10F-3ED8-DFC5-6DB3-E4ACBF8678FB}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\lookandfeel"> + <UniqueIdentifier>{F408DCA2-D5E2-0A3A-A064-A1D045889BC1}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\filebrowser"> + <UniqueIdentifier>{5FDBD6B1-9BBD-392F-4DA5-FEA40A9370C4}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\commands"> + <UniqueIdentifier>{46535B56-3737-2BE8-E3A0-571BCBEB2DA4}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\misc"> + <UniqueIdentifier>{C2B9505B-27B4-F650-12BD-F477D4BBCBAA}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\application"> + <UniqueIdentifier>{61712B09-5783-ADFA-2001-5A0C3D7764EB}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_basics\native"> + <UniqueIdentifier>{8A80BA78-D3A8-C0F8-7FFD-61AA028CE852}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_extra"> + <UniqueIdentifier>{8EC9572F-3CCA-E930-74B6-CB6139DE0E17}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_extra\code_editor"> + <UniqueIdentifier>{C60A6FCA-9462-922E-AD8D-69F10C9049AF}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_extra\documents"> + <UniqueIdentifier>{D56498EE-E354-1F00-5EEE-8CF7944BEAFB}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_extra\embedding"> + <UniqueIdentifier>{61B2920C-494D-D8CB-C0C7-5DBF3D76D164}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_extra\lookandfeel"> + <UniqueIdentifier>{4980B18D-FEDE-B773-F254-E3B5207D81F0}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_extra\misc"> + <UniqueIdentifier>{66C9B809-8739-A217-C78D-A15D6089B8E3}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_gui_extra\native"> + <UniqueIdentifier>{C413328B-5D81-89EE-F4F3-75752E700DE4}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_opengl"> + <UniqueIdentifier>{639E16C5-DA8B-ADBA-6E24-7B596378EAB2}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_opengl\opengl"> + <UniqueIdentifier>{2D8D0E19-E676-83EB-38D9-F73500DD6B79}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_opengl\native"> + <UniqueIdentifier>{151B49D8-6102-F802-1C07-D59931BC0574}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_video"> + <UniqueIdentifier>{72A923E2-C729-DB92-D7BF-A9D4AFAE5896}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_video\playback"> + <UniqueIdentifier>{0E43EA8A-95EE-4253-E1B7-160F38ACBB00}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_video\capture"> + <UniqueIdentifier>{7F11E7D2-54C0-2A36-5F15-BEC0A5374A08}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Modules\juce_video\native"> + <UniqueIdentifier>{EE985DEA-CD83-8132-7219-542BB1DAD560}</UniqueIdentifier> + </Filter> + <Filter Include="Juce Library Code"> + <UniqueIdentifier>{8B4D1BAA-6DB4-CAEC-A0FA-271F354D5C61}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\Source\AccessClass.cpp"> + <Filter>open-ephys\Source</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Network\PracticalSocket.cpp"> + <Filter>open-ephys\Source\Network</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Audio\AudioComponent.cpp"> + <Filter>open-ephys\Source\Audio</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutput.cpp"> + <Filter>open-ephys\Source\Processors\ArduinoOutput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutputEditor.cpp"> + <Filter>open-ephys\Source\Processors\ArduinoOutput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\AudioNode\AudioEditor.cpp"> + <Filter>open-ephys\Source\Processors\AudioNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\AudioNode\AudioNode.cpp"> + <Filter>open-ephys\Source\Processors\AudioNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\AudioResamplingNode\AudioResamplingNode.cpp"> + <Filter>open-ephys\Source\Processors\AudioResamplingNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Channel\Channel.cpp"> + <Filter>open-ephys\Source\Processors\Channel</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingEditor.cpp"> + <Filter>open-ephys\Source\Processors\ChannelMappingNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingNode.cpp"> + <Filter>open-ephys\Source\Processors\ChannelMappingNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\EcubeEditor.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\RHD2000Editor.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\EcubeThread.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\okFrontPanelDLL.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000datablock.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000evalboard.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000registers.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\RHD2000Thread.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\FileReaderThread.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\FPGAThread.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\DataBuffer.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\DataThreads\DataThread.cpp"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\Bessel.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\Biquad.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\Butterworth.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\Cascade.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\ChebyshevI.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\ChebyshevII.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\Custom.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\Design.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\Documentation.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\Elliptic.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\Filter.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\Legendre.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\Param.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\PoleFilter.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\RBJ.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\RootFinder.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Dsp\State.cpp"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Editors\ChannelSelector.cpp"> + <Filter>open-ephys\Source\Processors\Editors</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Editors\ElectrodeButtons.cpp"> + <Filter>open-ephys\Source\Processors\Editors</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Editors\GenericEditor.cpp"> + <Filter>open-ephys\Source\Processors\Editors</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Editors\ImageIcon.cpp"> + <Filter>open-ephys\Source\Processors\Editors</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Editors\VisualizerEditor.cpp"> + <Filter>open-ephys\Source\Processors\Editors</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\EventDetector\EventDetector.cpp"> + <Filter>open-ephys\Source\Processors\EventDetector</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\EventNode\EventNode.cpp"> + <Filter>open-ephys\Source\Processors\EventNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\EventNode\EventNodeEditor.cpp"> + <Filter>open-ephys\Source\Processors\EventNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\FileReader\FileReader.cpp"> + <Filter>open-ephys\Source\Processors\FileReader</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\FileReader\FileReaderEditor.cpp"> + <Filter>open-ephys\Source\Processors\FileReader</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\FilterNode\FilterEditor.cpp"> + <Filter>open-ephys\Source\Processors\FilterNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\FilterNode\FilterNode.cpp"> + <Filter>open-ephys\Source\Processors\FilterNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\FPGAOutput\FPGAOutput.cpp"> + <Filter>open-ephys\Source\Processors\FPGAOutput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\FPGAOutput\FPGAOutputEditor.cpp"> + <Filter>open-ephys\Source\Processors\FPGAOutput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\GenericProcessor\GenericProcessor.cpp"> + <Filter>open-ephys\Source\Processors\GenericProcessor</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayCanvas.cpp"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayEditor.cpp"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayNode.cpp"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageCanvas.cpp"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageEditor.cpp"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageNode.cpp"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Merger\Merger.cpp"> + <Filter>open-ephys\Source\Processors\Merger</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Merger\MergerEditor.cpp"> + <Filter>open-ephys\Source\Processors\Merger</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\MessageCenter\MessageCenter.cpp"> + <Filter>open-ephys\Source\Processors\MessageCenter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\MessageCenter\MessageCenterEditor.cpp"> + <Filter>open-ephys\Source\Processors\MessageCenter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Parameter\ParameterEditor.cpp"> + <Filter>open-ephys\Source\Processors\Parameter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Parameter\Parameter.cpp"> + <Filter>open-ephys\Source\Processors\Parameter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\PhaseDetector\PhaseDetector.cpp"> + <Filter>open-ephys\Source\Processors\PhaseDetector</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\PhaseDetector\PhaseDetectorEditor.cpp"> + <Filter>open-ephys\Source\Processors\PhaseDetector</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\ProcessorGraph\ProcessorGraph.cpp"> + <Filter>open-ephys\Source\Processors\ProcessorGraph</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutput.cpp"> + <Filter>open-ephys\Source\Processors\PulsePalOutput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutputEditor.cpp"> + <Filter>open-ephys\Source\Processors\PulsePalOutput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\RecordControl\RecordControl.cpp"> + <Filter>open-ephys\Source\Processors\RecordControl</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\RecordControl\RecordControlEditor.cpp"> + <Filter>open-ephys\Source\Processors\RecordControl</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\RecordNode\EngineConfigWindow.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\RecordNode\HDF5FileFormat.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\RecordNode\HDF5Recording.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\RecordNode\OriginalRecording.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\RecordNode\RecordEngine.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\RecordNode\RecordNode.cpp"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\ReferenceNode\ReferenceNode.cpp"> + <Filter>open-ephys\Source\Processors\ReferenceNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\ReferenceNode\ReferenceNodeEditor.cpp"> + <Filter>open-ephys\Source\Processors\ReferenceNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\ResamplingNode\ResamplingNode.cpp"> + <Filter>open-ephys\Source\Processors\ResamplingNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\ResamplingNode\ResamplingNodeEditor.cpp"> + <Filter>open-ephys\Source\Processors\ResamplingNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Serial\PulsePal.cpp"> + <Filter>open-ephys\Source\Processors\Serial</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Serial\ofArduino.cpp"> + <Filter>open-ephys\Source\Processors\Serial</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Serial\ofSerial.cpp"> + <Filter>open-ephys\Source\Processors\Serial</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SerialInput\SerialInput.cpp"> + <Filter>open-ephys\Source\Processors\SerialInput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SerialInput\SerialInputEditor.cpp"> + <Filter>open-ephys\Source\Processors\SerialInput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SignalGenerator\SignalGenerator.cpp"> + <Filter>open-ephys\Source\Processors\SignalGenerator</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SignalGenerator\SignalGeneratorEditor.cpp"> + <Filter>open-ephys\Source\Processors\SignalGenerator</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SourceNode\SourceNode.cpp"> + <Filter>open-ephys\Source\Processors\SourceNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SourceNode\SourceNodeEditor.cpp"> + <Filter>open-ephys\Source\Processors\SourceNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeDetector\SpikeDetector.cpp"> + <Filter>open-ephys\Source\Processors\SpikeDetector</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeDetector\SpikeDetectorEditor.cpp"> + <Filter>open-ephys\Source\Processors\SpikeDetector</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayCanvas.cpp"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayEditor.cpp"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayNode.cpp"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSortBoxes.cpp"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorter.cpp"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorterCanvas.cpp"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\SpikeSorter\SpikeSorterEditor.cpp"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Splitter\Splitter.cpp"> + <Filter>open-ephys\Source\Processors\Splitter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Splitter\SplitterEditor.cpp"> + <Filter>open-ephys\Source\Processors\Splitter</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Visualization\DataWindow.cpp"> + <Filter>open-ephys\Source\Processors\Visualization</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\Visualization\SpikeObject.cpp"> + <Filter>open-ephys\Source\Processors\Visualization</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\WiFiOutput\WiFiOutput.cpp"> + <Filter>open-ephys\Source\Processors\WiFiOutput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Processors\WiFiOutput\WiFiOutputEditor.cpp"> + <Filter>open-ephys\Source\Processors\WiFiOutput</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\EcubeDialogComponent.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\CustomArrowButton.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\GraphViewer.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\EditorViewportButtons.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\SignalChainManager.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\EditorViewport.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\ProcessorList.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\CustomLookAndFeel.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\InfoLabel.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\DataViewport.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\ControlPanel.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\UI\UIComponent.cpp"> + <Filter>open-ephys\Source\UI</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\MainWindow.cpp"> + <Filter>open-ephys\Source</Filter> + </ClCompile> + <ClCompile Include="..\..\Source\Main.cpp"> + <Filter>open-ephys\Source</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_AudioDataConverters.cpp"> + <Filter>Juce Modules\juce_audio_basics\buffers</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_AudioSampleBuffer.cpp"> + <Filter>Juce Modules\juce_audio_basics\buffers</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_FloatVectorOperations.cpp"> + <Filter>Juce Modules\juce_audio_basics\buffers</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiBuffer.cpp"> + <Filter>Juce Modules\juce_audio_basics\midi</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiFile.cpp"> + <Filter>Juce Modules\juce_audio_basics\midi</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiKeyboardState.cpp"> + <Filter>Juce Modules\juce_audio_basics\midi</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiMessage.cpp"> + <Filter>Juce Modules\juce_audio_basics\midi</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiMessageSequence.cpp"> + <Filter>Juce Modules\juce_audio_basics\midi</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_IIRFilter.cpp"> + <Filter>Juce Modules\juce_audio_basics\effects</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_LagrangeInterpolator.cpp"> + <Filter>Juce Modules\juce_audio_basics\effects</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_BufferingAudioSource.cpp"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ChannelRemappingAudioSource.cpp"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_IIRFilterAudioSource.cpp"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_MixerAudioSource.cpp"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ResamplingAudioSource.cpp"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ReverbAudioSource.cpp"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.cpp"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp"> + <Filter>Juce Modules\juce_audio_basics\synthesisers</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioDeviceManager.cpp"> + <Filter>Juce Modules\juce_audio_devices\audio_io</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioIODevice.cpp"> + <Filter>Juce Modules\juce_audio_devices\audio_io</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioIODeviceType.cpp"> + <Filter>Juce Modules\juce_audio_devices\audio_io</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.cpp"> + <Filter>Juce Modules\juce_audio_devices\midi_io</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\midi_io\juce_MidiOutput.cpp"> + <Filter>Juce Modules\juce_audio_devices\midi_io</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\sources\juce_AudioSourcePlayer.cpp"> + <Filter>Juce Modules\juce_audio_devices\sources</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\sources\juce_AudioTransportSource.cpp"> + <Filter>Juce Modules\juce_audio_devices\sources</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_cd\juce_AudioCDReader.cpp"> + <Filter>Juce Modules\juce_audio_devices\audio_cd</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_android_Audio.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_android_Midi.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_android_OpenSL.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_ios_Audio.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_linux_ALSA.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_linux_AudioCDReader.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_linux_JackAudio.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_linux_Midi.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_mac_AudioCDBurner.mm"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_mac_AudioCDReader.mm"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_mac_CoreAudio.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_mac_CoreMidi.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_ASIO.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_AudioCDBurner.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_AudioCDReader.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_DirectSound.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_Midi.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_win32_WASAPI.cpp"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormat.cpp"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatManager.cpp"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatReader.cpp"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatReaderSource.cpp"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatWriter.cpp"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioSubsectionReader.cpp"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_BufferingAudioFormatReader.cpp"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_AiffAudioFormat.cpp"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_CoreAudioFormat.cpp"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_FlacAudioFormat.cpp"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_LAMEEncoderAudioFormat.cpp"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_MP3AudioFormat.cpp"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_OggVorbisAudioFormat.cpp"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_QuickTimeAudioFormat.cpp"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_WavAudioFormat.cpp"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_WindowsMediaAudioFormat.cpp"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\sampler\juce_Sampler.cpp"> + <Filter>Juce Modules\juce_audio_formats\sampler</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessor.cpp"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessorEditor.cpp"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessorGraph.cpp"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_GenericAudioProcessorEditor.cpp"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_PluginDescription.cpp"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format\juce_AudioPluginFormat.cpp"> + <Filter>Juce Modules\juce_audio_processors\format</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format\juce_AudioPluginFormatManager.cpp"> + <Filter>Juce Modules\juce_audio_processors\format</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_AudioUnitPluginFormat.mm"> + <Filter>Juce Modules\juce_audio_processors\format_types</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_LADSPAPluginFormat.cpp"> + <Filter>Juce Modules\juce_audio_processors\format_types</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.cpp"> + <Filter>Juce Modules\juce_audio_processors\format_types</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.cpp"> + <Filter>Juce Modules\juce_audio_processors\format_types</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_KnownPluginList.cpp"> + <Filter>Juce Modules\juce_audio_processors\scanning</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_PluginDirectoryScanner.cpp"> + <Filter>Juce Modules\juce_audio_processors\scanning</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_PluginListComponent.cpp"> + <Filter>Juce Modules\juce_audio_processors\scanning</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioDeviceSelectorComponent.cpp"> + <Filter>Juce Modules\juce_audio_utils\gui</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioThumbnail.cpp"> + <Filter>Juce Modules\juce_audio_utils\gui</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioThumbnailCache.cpp"> + <Filter>Juce Modules\juce_audio_utils\gui</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_MidiKeyboardComponent.cpp"> + <Filter>Juce Modules\juce_audio_utils\gui</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\players\juce_AudioProcessorPlayer.cpp"> + <Filter>Juce Modules\juce_audio_utils\players</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharacterFunctions.cpp"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_Identifier.cpp"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_LocalisedStrings.cpp"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_String.cpp"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringArray.cpp"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringPairArray.cpp"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringPool.cpp"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_TextDiff.cpp"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_BigInteger.cpp"> + <Filter>Juce Modules\juce_core\maths</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_Expression.cpp"> + <Filter>Juce Modules\juce_core\maths</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_Random.cpp"> + <Filter>Juce Modules\juce_core\maths</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_MemoryBlock.cpp"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_AbstractFifo.cpp"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_DynamicObject.cpp"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_NamedValueSet.cpp"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_PropertySet.cpp"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_Variant.cpp"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ChildProcess.cpp"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_HighResolutionTimer.cpp"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ReadWriteLock.cpp"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_Thread.cpp"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ThreadPool.cpp"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_TimeSliceThread.cpp"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_PerformanceCounter.cpp"> + <Filter>Juce Modules\juce_core\time</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_RelativeTime.cpp"> + <Filter>Juce Modules\juce_core\time</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_Time.cpp"> + <Filter>Juce Modules\juce_core\time</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_DirectoryIterator.cpp"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_File.cpp"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileFilter.cpp"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileInputStream.cpp"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileOutputStream.cpp"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileSearchPath.cpp"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_TemporaryFile.cpp"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_WildcardFileFilter.cpp"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_IPAddress.cpp"> + <Filter>Juce Modules\juce_core\network</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_MACAddress.cpp"> + <Filter>Juce Modules\juce_core\network</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_NamedPipe.cpp"> + <Filter>Juce Modules\juce_core\network</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_Socket.cpp"> + <Filter>Juce Modules\juce_core\network</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_URL.cpp"> + <Filter>Juce Modules\juce_core\network</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_BufferedInputStream.cpp"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_FileInputSource.cpp"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_InputStream.cpp"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_MemoryInputStream.cpp"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_MemoryOutputStream.cpp"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_OutputStream.cpp"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_SubregionStream.cpp"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\logging\juce_FileLogger.cpp"> + <Filter>Juce Modules\juce_core\logging</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\logging\juce_Logger.cpp"> + <Filter>Juce Modules\juce_core\logging</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\system\juce_SystemStats.cpp"> + <Filter>Juce Modules\juce_core\system</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\xml\juce_XmlDocument.cpp"> + <Filter>Juce Modules\juce_core\xml</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\xml\juce_XmlElement.cpp"> + <Filter>Juce Modules\juce_core\xml</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\javascript\juce_Javascript.cpp"> + <Filter>Juce Modules\juce_core\javascript</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\javascript\juce_JSON.cpp"> + <Filter>Juce Modules\juce_core\javascript</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_GZIPCompressorOutputStream.cpp"> + <Filter>Juce Modules\juce_core\zip</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_GZIPDecompressorInputStream.cpp"> + <Filter>Juce Modules\juce_core\zip</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_ZipFile.cpp"> + <Filter>Juce Modules\juce_core\zip</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\unit_tests\juce_UnitTest.cpp"> + <Filter>Juce Modules\juce_core\unit_tests</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\misc\juce_Result.cpp"> + <Filter>Juce Modules\juce_core\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\misc\juce_Uuid.cpp"> + <Filter>Juce Modules\juce_core\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_Files.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_Misc.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_Network.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_SystemStats.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_Threads.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_linux_CommonFile.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_linux_Files.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_linux_Network.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_linux_SystemStats.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_linux_Threads.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_mac_Files.mm"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_mac_Network.mm"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_mac_Strings.mm"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_mac_SystemStats.mm"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_mac_Threads.mm"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_posix_NamedPipe.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_Files.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_Network.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_Registry.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_SystemStats.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_Threads.cpp"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_BlowFish.cpp"> + <Filter>Juce Modules\juce_cryptography\encryption</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_Primes.cpp"> + <Filter>Juce Modules\juce_cryptography\encryption</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_RSAKey.cpp"> + <Filter>Juce Modules\juce_cryptography\encryption</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\hashing\juce_MD5.cpp"> + <Filter>Juce Modules\juce_cryptography\hashing</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\hashing\juce_SHA256.cpp"> + <Filter>Juce Modules\juce_cryptography\hashing</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\values\juce_Value.cpp"> + <Filter>Juce Modules\juce_data_structures\values</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\values\juce_ValueTree.cpp"> + <Filter>Juce Modules\juce_data_structures\values</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\undomanager\juce_UndoManager.cpp"> + <Filter>Juce Modules\juce_data_structures\undomanager</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\app_properties\juce_ApplicationProperties.cpp"> + <Filter>Juce Modules\juce_data_structures\app_properties</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\app_properties\juce_PropertiesFile.cpp"> + <Filter>Juce Modules\juce_data_structures\app_properties</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_ApplicationBase.cpp"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_DeletedAtShutdown.cpp"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_MessageListener.cpp"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_MessageManager.cpp"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\timers\juce_MultiTimer.cpp"> + <Filter>Juce Modules\juce_events\timers</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\timers\juce_Timer.cpp"> + <Filter>Juce Modules\juce_events\timers</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ActionBroadcaster.cpp"> + <Filter>Juce Modules\juce_events\broadcasters</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_AsyncUpdater.cpp"> + <Filter>Juce Modules\juce_events\broadcasters</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ChangeBroadcaster.cpp"> + <Filter>Juce Modules\juce_events\broadcasters</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_ConnectedChildProcess.cpp"> + <Filter>Juce Modules\juce_events\interprocess</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_InterprocessConnection.cpp"> + <Filter>Juce Modules\juce_events\interprocess</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_InterprocessConnectionServer.cpp"> + <Filter>Juce Modules\juce_events\interprocess</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_android_Messaging.cpp"> + <Filter>Juce Modules\juce_events\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_ios_MessageManager.mm"> + <Filter>Juce Modules\juce_events\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_linux_Messaging.cpp"> + <Filter>Juce Modules\juce_events\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_mac_MessageManager.mm"> + <Filter>Juce Modules\juce_events\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_win32_Messaging.cpp"> + <Filter>Juce Modules\juce_events\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_Colour.cpp"> + <Filter>Juce Modules\juce_graphics\colour</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_ColourGradient.cpp"> + <Filter>Juce Modules\juce_graphics\colour</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_Colours.cpp"> + <Filter>Juce Modules\juce_graphics\colour</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_FillType.cpp"> + <Filter>Juce Modules\juce_graphics\colour</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_GraphicsContext.cpp"> + <Filter>Juce Modules\juce_graphics\contexts</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_LowLevelGraphicsPostScriptRenderer.cpp"> + <Filter>Juce Modules\juce_graphics\contexts</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_LowLevelGraphicsSoftwareRenderer.cpp"> + <Filter>Juce Modules\juce_graphics\contexts</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_Image.cpp"> + <Filter>Juce Modules\juce_graphics\images</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageCache.cpp"> + <Filter>Juce Modules\juce_graphics\images</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageConvolutionKernel.cpp"> + <Filter>Juce Modules\juce_graphics\images</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageFileFormat.cpp"> + <Filter>Juce Modules\juce_graphics\images</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\image_formats\juce_GIFLoader.cpp"> + <Filter>Juce Modules\juce_graphics\image_formats</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\image_formats\juce_JPEGLoader.cpp"> + <Filter>Juce Modules\juce_graphics\image_formats</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\image_formats\juce_PNGLoader.cpp"> + <Filter>Juce Modules\juce_graphics\image_formats</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_AffineTransform.cpp"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_EdgeTable.cpp"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_Path.cpp"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_PathIterator.cpp"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_PathStrokeType.cpp"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_RectangleList.cpp"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\placement\juce_Justification.cpp"> + <Filter>Juce Modules\juce_graphics\placement</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\placement\juce_RectanglePlacement.cpp"> + <Filter>Juce Modules\juce_graphics\placement</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_AttributedString.cpp"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_CustomTypeface.cpp"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_Font.cpp"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_GlyphArrangement.cpp"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_TextLayout.cpp"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_Typeface.cpp"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\effects\juce_DropShadowEffect.cpp"> + <Filter>Juce Modules\juce_graphics\effects</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\effects\juce_GlowEffect.cpp"> + <Filter>Juce Modules\juce_graphics\effects</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_android_Fonts.cpp"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_android_GraphicsContext.cpp"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_freetype_Fonts.cpp"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_linux_Fonts.cpp"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_mac_CoreGraphicsContext.mm"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_mac_Fonts.mm"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_win32_Direct2DGraphicsContext.cpp"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_win32_DirectWriteTypeface.cpp"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_win32_DirectWriteTypeLayout.cpp"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_win32_Fonts.cpp"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_Component.cpp"> + <Filter>Juce Modules\juce_gui_basics\components</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_ComponentListener.cpp"> + <Filter>Juce Modules\juce_gui_basics\components</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_Desktop.cpp"> + <Filter>Juce Modules\juce_gui_basics\components</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_ModalComponentManager.cpp"> + <Filter>Juce Modules\juce_gui_basics\components</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_ComponentDragger.cpp"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_DragAndDropContainer.cpp"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseCursor.cpp"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseEvent.cpp"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseInactivityDetector.cpp"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseInputSource.cpp"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseListener.cpp"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_CaretComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyboardFocusTraverser.cpp"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyListener.cpp"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyPress.cpp"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_ModifierKeys.cpp"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ComboBox.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ImageComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Label.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ListBox.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ProgressBar.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Slider.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TableHeaderComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TableListBox.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TextEditor.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Toolbar.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ToolbarItemComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ToolbarItemPalette.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TreeView.cpp"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_AlertWindow.cpp"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_CallOutBox.cpp"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ComponentPeer.cpp"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_DialogWindow.cpp"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_DocumentWindow.cpp"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ResizableWindow.cpp"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ThreadWithProgressWindow.cpp"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_TooltipWindow.cpp"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_TopLevelWindow.cpp"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_MenuBarComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\menus</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_MenuBarModel.cpp"> + <Filter>Juce Modules\juce_gui_basics\menus</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_PopupMenu.cpp"> + <Filter>Juce Modules\juce_gui_basics\menus</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentAnimator.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentBoundsConstrainer.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentBuilder.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_GroupComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableCornerComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableEdgeComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ScrollBar.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableLayoutManager.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableLayoutResizerBar.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableObjectResizer.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_TabbedButtonBar.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_TabbedComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_Viewport.cpp"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ArrowButton.cpp"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_Button.cpp"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_DrawableButton.cpp"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_HyperlinkButton.cpp"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ImageButton.cpp"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ShapeButton.cpp"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_TextButton.cpp"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ToggleButton.cpp"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ToolbarButton.cpp"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_MarkerList.cpp"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeCoordinate.cpp"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeCoordinatePositioner.cpp"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeParallelogram.cpp"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativePoint.cpp"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativePointPath.cpp"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeRectangle.cpp"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_Drawable.cpp"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableComposite.cpp"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableImage.cpp"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawablePath.cpp"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableRectangle.cpp"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableShape.cpp"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableText.cpp"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_SVGParser.cpp"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_BooleanPropertyComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_ButtonPropertyComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_ChoicePropertyComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_PropertyComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_PropertyPanel.cpp"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_SliderPropertyComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_TextPropertyComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel.cpp"> + <Filter>Juce Modules\juce_gui_basics\lookandfeel</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V1.cpp"> + <Filter>Juce Modules\juce_gui_basics\lookandfeel</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V2.cpp"> + <Filter>Juce Modules\juce_gui_basics\lookandfeel</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V3.cpp"> + <Filter>Juce Modules\juce_gui_basics\lookandfeel</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_DirectoryContentsDisplayComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_DirectoryContentsList.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileBrowserComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileChooser.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileChooserDialogBox.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileFilter.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileListComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FilenameComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileSearchPathListComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileTreeComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_ImagePreviewComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_WildcardFileFilter.cpp"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandInfo.cpp"> + <Filter>Juce Modules\juce_gui_basics\commands</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandManager.cpp"> + <Filter>Juce Modules\juce_gui_basics\commands</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandTarget.cpp"> + <Filter>Juce Modules\juce_gui_basics\commands</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_KeyPressMappingSet.cpp"> + <Filter>Juce Modules\juce_gui_basics\commands</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\misc\juce_BubbleComponent.cpp"> + <Filter>Juce Modules\juce_gui_basics\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\misc\juce_DropShadower.cpp"> + <Filter>Juce Modules\juce_gui_basics\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\application\juce_Application.cpp"> + <Filter>Juce Modules\juce_gui_basics\application</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_android_FileChooser.cpp"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_android_Windowing.cpp"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_ios_UIViewComponentPeer.mm"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_ios_Windowing.mm"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_linux_Clipboard.cpp"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_linux_FileChooser.cpp"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_linux_Windowing.cpp"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_mac_FileChooser.mm"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_mac_MainMenu.mm"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_mac_MouseCursor.mm"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_mac_NSViewComponentPeer.mm"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_mac_Windowing.mm"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_win32_DragAndDrop.cpp"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_win32_FileChooser.cpp"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_win32_Windowing.cpp"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CodeDocument.cpp"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CodeEditorComponent.cpp"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CPlusPlusCodeTokeniser.cpp"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_LuaCodeTokeniser.cpp"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_XMLCodeTokeniser.cpp"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\documents\juce_FileBasedDocument.cpp"> + <Filter>Juce Modules\juce_gui_extra\documents</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\lookandfeel\juce_OldSchoolLookAndFeel.cpp"> + <Filter>Juce Modules\juce_gui_extra\lookandfeel</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_BubbleMessageComponent.cpp"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_ColourSelector.cpp"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_KeyMappingEditorComponent.cpp"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_LiveConstantEditor.cpp"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_PreferencesPanel.cpp"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_RecentlyOpenedFilesList.cpp"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_SplashScreen.cpp"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.cpp"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_android_WebBrowserComponent.cpp"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_ios_UIViewComponent.mm"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_linux_SystemTrayIcon.cpp"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_linux_WebBrowserComponent.cpp"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_mac_AppleRemote.mm"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_mac_NSViewComponent.mm"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_mac_SystemTrayIcon.cpp"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_mac_WebBrowserComponent.mm"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_win32_ActiveXComponent.cpp"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_win32_SystemTrayIcon.cpp"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_win32_WebBrowserComponent.cpp"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLFrameBuffer.cpp"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLGraphicsContext.cpp"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLHelpers.cpp"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.cpp"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_android_CameraDevice.cpp"> + <Filter>Juce Modules\juce_video\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_mac_CameraDevice.mm"> + <Filter>Juce Modules\juce_video\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_mac_QuickTimeMovieComponent.mm"> + <Filter>Juce Modules\juce_video\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_win32_CameraDevice.cpp"> + <Filter>Juce Modules\juce_video\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_win32_DirectShowComponent.cpp"> + <Filter>Juce Modules\juce_video\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_win32_QuickTimeMovieComponent.cpp"> + <Filter>Juce Modules\juce_video\native</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\BinaryData.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_basics\juce_audio_basics.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\juce_audio_devices.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_formats\juce_audio_formats.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\juce_audio_processors.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_utils\juce_audio_utils.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\juce_core.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_cryptography\juce_cryptography.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_data_structures\juce_data_structures.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\juce_events.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\juce_graphics.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\juce_gui_basics.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\juce_gui_extra.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_opengl\juce_opengl.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + <ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\juce_video.cpp"> + <Filter>Juce Library Code</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\Source\AccessClass.h"> + <Filter>open-ephys\Source</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Network\PracticalSocket.h"> + <Filter>open-ephys\Source\Network</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Audio\AudioComponent.h"> + <Filter>open-ephys\Source\Audio</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutput.h"> + <Filter>open-ephys\Source\Processors\ArduinoOutput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\ArduinoOutput\ArduinoOutputEditor.h"> + <Filter>open-ephys\Source\Processors\ArduinoOutput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\AudioNode\AudioEditor.h"> + <Filter>open-ephys\Source\Processors\AudioNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\AudioNode\AudioNode.h"> + <Filter>open-ephys\Source\Processors\AudioNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\AudioResamplingNode\AudioResamplingNode.h"> + <Filter>open-ephys\Source\Processors\AudioResamplingNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Channel\Channel.h"> + <Filter>open-ephys\Source\Processors\Channel</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingEditor.h"> + <Filter>open-ephys\Source\Processors\ChannelMappingNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\ChannelMappingNode\ChannelMappingNode.h"> + <Filter>open-ephys\Source\Processors\ChannelMappingNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\EcubeEditor.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\RHD2000Editor.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\EcubeThread.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\okFrontPanelDLL.h"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000datablock.h"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000evalboard.h"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\rhythm-api\rhd2000registers.h"> + <Filter>open-ephys\Source\Processors\DataThreads\rhythm-api</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\RHD2000Thread.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\FileReaderThread.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\FPGAThread.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\DataBuffer.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\DataThreads\DataThread.h"> + <Filter>open-ephys\Source\Processors\DataThreads</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Bessel.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Biquad.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Butterworth.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Cascade.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\ChebyshevI.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\ChebyshevII.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Common.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Custom.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Design.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Dsp.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Elliptic.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Filter.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Layout.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Legendre.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\MathSupplement.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Params.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\PoleFilter.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\RBJ.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\RootFinder.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\SmoothedFilter.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\State.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Types.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Dsp\Utilities.h"> + <Filter>open-ephys\Source\Processors\Dsp</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Editors\ChannelSelector.h"> + <Filter>open-ephys\Source\Processors\Editors</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Editors\ElectrodeButtons.h"> + <Filter>open-ephys\Source\Processors\Editors</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Editors\GenericEditor.h"> + <Filter>open-ephys\Source\Processors\Editors</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Editors\ImageIcon.h"> + <Filter>open-ephys\Source\Processors\Editors</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Editors\VisualizerEditor.h"> + <Filter>open-ephys\Source\Processors\Editors</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\EventDetector\EventDetector.h"> + <Filter>open-ephys\Source\Processors\EventDetector</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\EventNode\EventNode.h"> + <Filter>open-ephys\Source\Processors\EventNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\EventNode\EventNodeEditor.h"> + <Filter>open-ephys\Source\Processors\EventNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\FileReader\FileReader.h"> + <Filter>open-ephys\Source\Processors\FileReader</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\FileReader\FileReaderEditor.h"> + <Filter>open-ephys\Source\Processors\FileReader</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\FilterNode\FilterEditor.h"> + <Filter>open-ephys\Source\Processors\FilterNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\FilterNode\FilterNode.h"> + <Filter>open-ephys\Source\Processors\FilterNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\FPGAOutput\FPGAOutput.h"> + <Filter>open-ephys\Source\Processors\FPGAOutput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\FPGAOutput\FPGAOutputEditor.h"> + <Filter>open-ephys\Source\Processors\FPGAOutput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\GenericProcessor\GenericProcessor.h"> + <Filter>open-ephys\Source\Processors\GenericProcessor</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayCanvas.h"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayEditor.h"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\LfpDisplayNode\LfpDisplayNode.h"> + <Filter>open-ephys\Source\Processors\LfpDisplayNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageCanvas.h"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageEditor.h"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\LfpTriggeredAverageNode\LfpTriggeredAverageNode.h"> + <Filter>open-ephys\Source\Processors\LfpTriggeredAverageNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Merger\Merger.h"> + <Filter>open-ephys\Source\Processors\Merger</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Merger\MergerEditor.h"> + <Filter>open-ephys\Source\Processors\Merger</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\MessageCenter\MessageCenter.h"> + <Filter>open-ephys\Source\Processors\MessageCenter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\MessageCenter\MessageCenterEditor.h"> + <Filter>open-ephys\Source\Processors\MessageCenter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Parameter\ParameterEditor.h"> + <Filter>open-ephys\Source\Processors\Parameter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Parameter\Parameter.h"> + <Filter>open-ephys\Source\Processors\Parameter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\PhaseDetector\PhaseDetector.h"> + <Filter>open-ephys\Source\Processors\PhaseDetector</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\PhaseDetector\PhaseDetectorEditor.h"> + <Filter>open-ephys\Source\Processors\PhaseDetector</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\ProcessorGraph\ProcessorGraph.h"> + <Filter>open-ephys\Source\Processors\ProcessorGraph</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutput.h"> + <Filter>open-ephys\Source\Processors\PulsePalOutput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\PulsePalOutput\PulsePalOutputEditor.h"> + <Filter>open-ephys\Source\Processors\PulsePalOutput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\RecordControl\RecordControl.h"> + <Filter>open-ephys\Source\Processors\RecordControl</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\RecordControl\RecordControlEditor.h"> + <Filter>open-ephys\Source\Processors\RecordControl</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\RecordNode\EngineConfigWindow.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\RecordNode\HDF5FileFormat.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\RecordNode\HDF5Recording.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\RecordNode\OriginalRecording.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\RecordNode\RecordEngine.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\RecordNode\RecordNode.h"> + <Filter>open-ephys\Source\Processors\RecordNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\ReferenceNode\ReferenceNode.h"> + <Filter>open-ephys\Source\Processors\ReferenceNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\ReferenceNode\ReferenceNodeEditor.h"> + <Filter>open-ephys\Source\Processors\ReferenceNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\ResamplingNode\ResamplingNode.h"> + <Filter>open-ephys\Source\Processors\ResamplingNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\ResamplingNode\ResamplingNodeEditor.h"> + <Filter>open-ephys\Source\Processors\ResamplingNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Serial\PulsePal.h"> + <Filter>open-ephys\Source\Processors\Serial</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Serial\ofArduino.h"> + <Filter>open-ephys\Source\Processors\Serial</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Serial\ofConstants.h"> + <Filter>open-ephys\Source\Processors\Serial</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Serial\ofSerial.h"> + <Filter>open-ephys\Source\Processors\Serial</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SerialInput\SerialInput.h"> + <Filter>open-ephys\Source\Processors\SerialInput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SerialInput\SerialInputEditor.h"> + <Filter>open-ephys\Source\Processors\SerialInput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SignalGenerator\SignalGenerator.h"> + <Filter>open-ephys\Source\Processors\SignalGenerator</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SignalGenerator\SignalGeneratorEditor.h"> + <Filter>open-ephys\Source\Processors\SignalGenerator</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SourceNode\SourceNode.h"> + <Filter>open-ephys\Source\Processors\SourceNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SourceNode\SourceNodeEditor.h"> + <Filter>open-ephys\Source\Processors\SourceNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SpikeDetector\SpikeDetector.h"> + <Filter>open-ephys\Source\Processors\SpikeDetector</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SpikeDetector\SpikeDetectorEditor.h"> + <Filter>open-ephys\Source\Processors\SpikeDetector</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayCanvas.h"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayEditor.h"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode\SpikeDisplayNode.h"> + <Filter>open-ephys\Source\Processors\SpikeDisplayNode</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSortBoxes.h"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorter.h"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorterCanvas.h"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\SpikeSorter\SpikeSorterEditor.h"> + <Filter>open-ephys\Source\Processors\SpikeSorter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Splitter\Splitter.h"> + <Filter>open-ephys\Source\Processors\Splitter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Splitter\SplitterEditor.h"> + <Filter>open-ephys\Source\Processors\Splitter</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Visualization\DataWindow.h"> + <Filter>open-ephys\Source\Processors\Visualization</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Visualization\SpikeObject.h"> + <Filter>open-ephys\Source\Processors\Visualization</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\Visualization\Visualizer.h"> + <Filter>open-ephys\Source\Processors\Visualization</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\WiFiOutput\WiFiOutput.h"> + <Filter>open-ephys\Source\Processors\WiFiOutput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\Processors\WiFiOutput\WiFiOutputEditor.h"> + <Filter>open-ephys\Source\Processors\WiFiOutput</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\EcubeDialogComponent.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\CustomArrowButton.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\GraphViewer.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\EditorViewportButtons.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\SignalChainManager.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\EditorViewport.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\ProcessorList.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\CustomLookAndFeel.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\InfoLabel.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\DataViewport.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\ControlPanel.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\UI\UIComponent.h"> + <Filter>open-ephys\Source\UI</Filter> + </ClInclude> + <ClInclude Include="..\..\Source\MainWindow.h"> + <Filter>open-ephys\Source</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_AudioDataConverters.h"> + <Filter>Juce Modules\juce_audio_basics\buffers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_AudioSampleBuffer.h"> + <Filter>Juce Modules\juce_audio_basics\buffers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\buffers\juce_FloatVectorOperations.h"> + <Filter>Juce Modules\juce_audio_basics\buffers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiBuffer.h"> + <Filter>Juce Modules\juce_audio_basics\midi</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiFile.h"> + <Filter>Juce Modules\juce_audio_basics\midi</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiKeyboardState.h"> + <Filter>Juce Modules\juce_audio_basics\midi</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiMessage.h"> + <Filter>Juce Modules\juce_audio_basics\midi</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\midi\juce_MidiMessageSequence.h"> + <Filter>Juce Modules\juce_audio_basics\midi</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_Decibels.h"> + <Filter>Juce Modules\juce_audio_basics\effects</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_IIRFilter.h"> + <Filter>Juce Modules\juce_audio_basics\effects</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_LagrangeInterpolator.h"> + <Filter>Juce Modules\juce_audio_basics\effects</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\effects\juce_Reverb.h"> + <Filter>Juce Modules\juce_audio_basics\effects</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_AudioSource.h"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_BufferingAudioSource.h"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ChannelRemappingAudioSource.h"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_IIRFilterAudioSource.h"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_MixerAudioSource.h"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_PositionableAudioSource.h"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ResamplingAudioSource.h"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ReverbAudioSource.h"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"> + <Filter>Juce Modules\juce_audio_basics\sources</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"> + <Filter>Juce Modules\juce_audio_basics\synthesisers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_basics\juce_audio_basics.h"> + <Filter>Juce Modules\juce_audio_basics</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioDeviceManager.h"> + <Filter>Juce Modules\juce_audio_devices\audio_io</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioIODevice.h"> + <Filter>Juce Modules\juce_audio_devices\audio_io</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_AudioIODeviceType.h"> + <Filter>Juce Modules\juce_audio_devices\audio_io</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_io\juce_SystemAudioVolume.h"> + <Filter>Juce Modules\juce_audio_devices\audio_io</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\midi_io\juce_MidiInput.h"> + <Filter>Juce Modules\juce_audio_devices\midi_io</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\midi_io\juce_MidiMessageCollector.h"> + <Filter>Juce Modules\juce_audio_devices\midi_io</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\midi_io\juce_MidiOutput.h"> + <Filter>Juce Modules\juce_audio_devices\midi_io</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\sources\juce_AudioSourcePlayer.h"> + <Filter>Juce Modules\juce_audio_devices\sources</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\sources\juce_AudioTransportSource.h"> + <Filter>Juce Modules\juce_audio_devices\sources</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_cd\juce_AudioCDBurner.h"> + <Filter>Juce Modules\juce_audio_devices\audio_cd</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\audio_cd\juce_AudioCDReader.h"> + <Filter>Juce Modules\juce_audio_devices\audio_cd</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_MidiDataConcatenator.h"> + <Filter>Juce Modules\juce_audio_devices\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_devices\juce_audio_devices.h"> + <Filter>Juce Modules\juce_audio_devices</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormat.h"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatManager.h"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatReader.h"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatReaderSource.h"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioFormatWriter.h"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_AudioSubsectionReader.h"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_BufferingAudioFormatReader.h"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\format\juce_MemoryMappedAudioFormatReader.h"> + <Filter>Juce Modules\juce_audio_formats\format</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_AiffAudioFormat.h"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_CoreAudioFormat.h"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_FlacAudioFormat.h"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_LAMEEncoderAudioFormat.h"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_MP3AudioFormat.h"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_OggVorbisAudioFormat.h"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_QuickTimeAudioFormat.h"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_WavAudioFormat.h"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\codecs\juce_WindowsMediaAudioFormat.h"> + <Filter>Juce Modules\juce_audio_formats\codecs</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\sampler\juce_Sampler.h"> + <Filter>Juce Modules\juce_audio_formats\sampler</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_formats\juce_audio_formats.h"> + <Filter>Juce Modules\juce_audio_formats</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioPlayHead.h"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioPluginInstance.h"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessor.h"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessorEditor.h"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessorGraph.h"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_AudioProcessorListener.h"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_GenericAudioProcessorEditor.h"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\processors\juce_PluginDescription.h"> + <Filter>Juce Modules\juce_audio_processors\processors</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format\juce_AudioPluginFormat.h"> + <Filter>Juce Modules\juce_audio_processors\format</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format\juce_AudioPluginFormatManager.h"> + <Filter>Juce Modules\juce_audio_processors\format</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_AudioUnitPluginFormat.h"> + <Filter>Juce Modules\juce_audio_processors\format_types</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_LADSPAPluginFormat.h"> + <Filter>Juce Modules\juce_audio_processors\format_types</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VST3Common.h"> + <Filter>Juce Modules\juce_audio_processors\format_types</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VST3Headers.h"> + <Filter>Juce Modules\juce_audio_processors\format_types</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"> + <Filter>Juce Modules\juce_audio_processors\format_types</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"> + <Filter>Juce Modules\juce_audio_processors\format_types</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"> + <Filter>Juce Modules\juce_audio_processors\format_types</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_KnownPluginList.h"> + <Filter>Juce Modules\juce_audio_processors\scanning</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_PluginDirectoryScanner.h"> + <Filter>Juce Modules\juce_audio_processors\scanning</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\scanning\juce_PluginListComponent.h"> + <Filter>Juce Modules\juce_audio_processors\scanning</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_processors\juce_audio_processors.h"> + <Filter>Juce Modules\juce_audio_processors</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioDeviceSelectorComponent.h"> + <Filter>Juce Modules\juce_audio_utils\gui</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioThumbnail.h"> + <Filter>Juce Modules\juce_audio_utils\gui</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioThumbnailBase.h"> + <Filter>Juce Modules\juce_audio_utils\gui</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_AudioThumbnailCache.h"> + <Filter>Juce Modules\juce_audio_utils\gui</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\gui\juce_MidiKeyboardComponent.h"> + <Filter>Juce Modules\juce_audio_utils\gui</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\players\juce_AudioProcessorPlayer.h"> + <Filter>Juce Modules\juce_audio_utils\players</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_audio_utils\juce_audio_utils.h"> + <Filter>Juce Modules\juce_audio_utils</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharacterFunctions.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharPointer_ASCII.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharPointer_UTF16.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharPointer_UTF32.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_CharPointer_UTF8.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_Identifier.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_LocalisedStrings.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_NewLine.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_String.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringArray.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringPairArray.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringPool.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_StringRef.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\text\juce_TextDiff.h"> + <Filter>Juce Modules\juce_core\text</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_BigInteger.h"> + <Filter>Juce Modules\juce_core\maths</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_Expression.h"> + <Filter>Juce Modules\juce_core\maths</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_MathsFunctions.h"> + <Filter>Juce Modules\juce_core\maths</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_Random.h"> + <Filter>Juce Modules\juce_core\maths</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\maths\juce_Range.h"> + <Filter>Juce Modules\juce_core\maths</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_Atomic.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_ByteOrder.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_ContainerDeletePolicy.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_HeapBlock.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_LeakedObjectDetector.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_Memory.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_MemoryBlock.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_OptionalScopedPointer.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_ReferenceCountedObject.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_ScopedPointer.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_SharedResourcePointer.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_Singleton.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\memory\juce_WeakReference.h"> + <Filter>Juce Modules\juce_core\memory</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_AbstractFifo.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_Array.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_ArrayAllocationBase.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_DynamicObject.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_ElementComparator.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_HashMap.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_LinkedListPointer.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_NamedValueSet.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_OwnedArray.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_PropertySet.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_ReferenceCountedArray.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_ScopedValueSetter.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_SortedSet.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_SparseSet.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\containers\juce_Variant.h"> + <Filter>Juce Modules\juce_core\containers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ChildProcess.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_CriticalSection.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_DynamicLibrary.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_HighResolutionTimer.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_InterProcessLock.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_Process.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ReadWriteLock.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ScopedLock.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ScopedReadLock.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ScopedWriteLock.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_SpinLock.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_Thread.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ThreadLocalValue.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_ThreadPool.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_TimeSliceThread.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\threads\juce_WaitableEvent.h"> + <Filter>Juce Modules\juce_core\threads</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_PerformanceCounter.h"> + <Filter>Juce Modules\juce_core\time</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_RelativeTime.h"> + <Filter>Juce Modules\juce_core\time</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\time\juce_Time.h"> + <Filter>Juce Modules\juce_core\time</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_DirectoryIterator.h"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_File.h"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileFilter.h"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileInputStream.h"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileOutputStream.h"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_FileSearchPath.h"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_MemoryMappedFile.h"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_TemporaryFile.h"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\files\juce_WildcardFileFilter.h"> + <Filter>Juce Modules\juce_core\files</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_IPAddress.h"> + <Filter>Juce Modules\juce_core\network</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_MACAddress.h"> + <Filter>Juce Modules\juce_core\network</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_NamedPipe.h"> + <Filter>Juce Modules\juce_core\network</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_Socket.h"> + <Filter>Juce Modules\juce_core\network</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\network\juce_URL.h"> + <Filter>Juce Modules\juce_core\network</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_BufferedInputStream.h"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_FileInputSource.h"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_InputSource.h"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_InputStream.h"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_MemoryInputStream.h"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_MemoryOutputStream.h"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_OutputStream.h"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\streams\juce_SubregionStream.h"> + <Filter>Juce Modules\juce_core\streams</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\logging\juce_FileLogger.h"> + <Filter>Juce Modules\juce_core\logging</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\logging\juce_Logger.h"> + <Filter>Juce Modules\juce_core\logging</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\system\juce_PlatformDefs.h"> + <Filter>Juce Modules\juce_core\system</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\system\juce_StandardHeader.h"> + <Filter>Juce Modules\juce_core\system</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\system\juce_SystemStats.h"> + <Filter>Juce Modules\juce_core\system</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\system\juce_TargetPlatform.h"> + <Filter>Juce Modules\juce_core\system</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\xml\juce_XmlDocument.h"> + <Filter>Juce Modules\juce_core\xml</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\xml\juce_XmlElement.h"> + <Filter>Juce Modules\juce_core\xml</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\javascript\juce_Javascript.h"> + <Filter>Juce Modules\juce_core\javascript</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\javascript\juce_JSON.h"> + <Filter>Juce Modules\juce_core\javascript</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_GZIPCompressorOutputStream.h"> + <Filter>Juce Modules\juce_core\zip</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_GZIPDecompressorInputStream.h"> + <Filter>Juce Modules\juce_core\zip</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\zip\juce_ZipFile.h"> + <Filter>Juce Modules\juce_core\zip</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\unit_tests\juce_UnitTest.h"> + <Filter>Juce Modules\juce_core\unit_tests</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\misc\juce_Result.h"> + <Filter>Juce Modules\juce_core\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\misc\juce_Uuid.h"> + <Filter>Juce Modules\juce_core\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\misc\juce_WindowsRegistry.h"> + <Filter>Juce Modules\juce_core\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_android_JNIHelpers.h"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_BasicNativeHeaders.h"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_osx_ObjCHelpers.h"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_posix_SharedCode.h"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_win32_ComSmartPtr.h"> + <Filter>Juce Modules\juce_core\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_core\juce_core.h"> + <Filter>Juce Modules\juce_core</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_BlowFish.h"> + <Filter>Juce Modules\juce_cryptography\encryption</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_Primes.h"> + <Filter>Juce Modules\juce_cryptography\encryption</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\encryption\juce_RSAKey.h"> + <Filter>Juce Modules\juce_cryptography\encryption</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\hashing\juce_MD5.h"> + <Filter>Juce Modules\juce_cryptography\hashing</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\hashing\juce_SHA256.h"> + <Filter>Juce Modules\juce_cryptography\hashing</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_cryptography\juce_cryptography.h"> + <Filter>Juce Modules\juce_cryptography</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\values\juce_Value.h"> + <Filter>Juce Modules\juce_data_structures\values</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\values\juce_ValueTree.h"> + <Filter>Juce Modules\juce_data_structures\values</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\undomanager\juce_UndoableAction.h"> + <Filter>Juce Modules\juce_data_structures\undomanager</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\undomanager\juce_UndoManager.h"> + <Filter>Juce Modules\juce_data_structures\undomanager</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\app_properties\juce_ApplicationProperties.h"> + <Filter>Juce Modules\juce_data_structures\app_properties</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\app_properties\juce_PropertiesFile.h"> + <Filter>Juce Modules\juce_data_structures\app_properties</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_data_structures\juce_data_structures.h"> + <Filter>Juce Modules\juce_data_structures</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_ApplicationBase.h"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_CallbackMessage.h"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_DeletedAtShutdown.h"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_Initialisation.h"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_Message.h"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_MessageListener.h"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_MessageManager.h"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\messages\juce_NotificationType.h"> + <Filter>Juce Modules\juce_events\messages</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\timers\juce_MultiTimer.h"> + <Filter>Juce Modules\juce_events\timers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\timers\juce_Timer.h"> + <Filter>Juce Modules\juce_events\timers</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"> + <Filter>Juce Modules\juce_events\broadcasters</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ActionListener.h"> + <Filter>Juce Modules\juce_events\broadcasters</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_AsyncUpdater.h"> + <Filter>Juce Modules\juce_events\broadcasters</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ChangeBroadcaster.h"> + <Filter>Juce Modules\juce_events\broadcasters</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ChangeListener.h"> + <Filter>Juce Modules\juce_events\broadcasters</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\broadcasters\juce_ListenerList.h"> + <Filter>Juce Modules\juce_events\broadcasters</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_ConnectedChildProcess.h"> + <Filter>Juce Modules\juce_events\interprocess</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_InterprocessConnection.h"> + <Filter>Juce Modules\juce_events\interprocess</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\interprocess\juce_InterprocessConnectionServer.h"> + <Filter>Juce Modules\juce_events\interprocess</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_osx_MessageQueue.h"> + <Filter>Juce Modules\juce_events\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_ScopedXLock.h"> + <Filter>Juce Modules\juce_events\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_win32_HiddenMessageWindow.h"> + <Filter>Juce Modules\juce_events\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_events\juce_events.h"> + <Filter>Juce Modules\juce_events</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_Colour.h"> + <Filter>Juce Modules\juce_graphics\colour</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_ColourGradient.h"> + <Filter>Juce Modules\juce_graphics\colour</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_Colours.h"> + <Filter>Juce Modules\juce_graphics\colour</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_FillType.h"> + <Filter>Juce Modules\juce_graphics\colour</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\colour\juce_PixelFormats.h"> + <Filter>Juce Modules\juce_graphics\colour</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_GraphicsContext.h"> + <Filter>Juce Modules\juce_graphics\contexts</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_LowLevelGraphicsContext.h"> + <Filter>Juce Modules\juce_graphics\contexts</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_LowLevelGraphicsPostScriptRenderer.h"> + <Filter>Juce Modules\juce_graphics\contexts</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\contexts\juce_LowLevelGraphicsSoftwareRenderer.h"> + <Filter>Juce Modules\juce_graphics\contexts</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_Image.h"> + <Filter>Juce Modules\juce_graphics\images</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageCache.h"> + <Filter>Juce Modules\juce_graphics\images</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageConvolutionKernel.h"> + <Filter>Juce Modules\juce_graphics\images</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\images\juce_ImageFileFormat.h"> + <Filter>Juce Modules\juce_graphics\images</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_AffineTransform.h"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_BorderSize.h"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_EdgeTable.h"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_Line.h"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_Path.h"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_PathIterator.h"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_PathStrokeType.h"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_Point.h"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_Rectangle.h"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\geometry\juce_RectangleList.h"> + <Filter>Juce Modules\juce_graphics\geometry</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\placement\juce_Justification.h"> + <Filter>Juce Modules\juce_graphics\placement</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\placement\juce_RectanglePlacement.h"> + <Filter>Juce Modules\juce_graphics\placement</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_AttributedString.h"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_CustomTypeface.h"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_Font.h"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_GlyphArrangement.h"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_TextLayout.h"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\fonts\juce_Typeface.h"> + <Filter>Juce Modules\juce_graphics\fonts</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\effects\juce_DropShadowEffect.h"> + <Filter>Juce Modules\juce_graphics\effects</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\effects\juce_GlowEffect.h"> + <Filter>Juce Modules\juce_graphics\effects</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\effects\juce_ImageEffectFilter.h"> + <Filter>Juce Modules\juce_graphics\effects</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_mac_CoreGraphicsContext.h"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_mac_CoreGraphicsHelpers.h"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_RenderingHelpers.h"> + <Filter>Juce Modules\juce_graphics\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_graphics\juce_graphics.h"> + <Filter>Juce Modules\juce_graphics</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_CachedComponentImage.h"> + <Filter>Juce Modules\juce_gui_basics\components</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_Component.h"> + <Filter>Juce Modules\juce_gui_basics\components</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_ComponentListener.h"> + <Filter>Juce Modules\juce_gui_basics\components</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_Desktop.h"> + <Filter>Juce Modules\juce_gui_basics\components</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\components\juce_ModalComponentManager.h"> + <Filter>Juce Modules\juce_gui_basics\components</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_ComponentDragger.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_DragAndDropContainer.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_DragAndDropTarget.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_FileDragAndDropTarget.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_LassoComponent.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseCursor.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseEvent.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseInactivityDetector.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseInputSource.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_MouseListener.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_SelectedItemSet.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_TextDragAndDropTarget.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\mouse\juce_TooltipClient.h"> + <Filter>Juce Modules\juce_gui_basics\mouse</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_CaretComponent.h"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyboardFocusTraverser.h"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyListener.h"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_KeyPress.h"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_ModifierKeys.h"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_SystemClipboard.h"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_TextEditorKeyMapper.h"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\keyboard\juce_TextInputTarget.h"> + <Filter>Juce Modules\juce_gui_basics\keyboard</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ComboBox.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ImageComponent.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Label.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ListBox.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ProgressBar.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Slider.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TableHeaderComponent.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TableListBox.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TextEditor.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_Toolbar.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ToolbarItemComponent.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ToolbarItemFactory.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_ToolbarItemPalette.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\widgets\juce_TreeView.h"> + <Filter>Juce Modules\juce_gui_basics\widgets</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_AlertWindow.h"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_CallOutBox.h"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ComponentPeer.h"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_DialogWindow.h"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_DocumentWindow.h"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_NativeMessageBox.h"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ResizableWindow.h"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_ThreadWithProgressWindow.h"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_TooltipWindow.h"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\windows\juce_TopLevelWindow.h"> + <Filter>Juce Modules\juce_gui_basics\windows</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_MenuBarComponent.h"> + <Filter>Juce Modules\juce_gui_basics\menus</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_MenuBarModel.h"> + <Filter>Juce Modules\juce_gui_basics\menus</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\menus\juce_PopupMenu.h"> + <Filter>Juce Modules\juce_gui_basics\menus</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_AnimatedPosition.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_AnimatedPositionBehaviours.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentAnimator.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentBoundsConstrainer.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_GroupComponent.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableCornerComponent.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ResizableEdgeComponent.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_ScrollBar.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableLayoutManager.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableLayoutResizerBar.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_StretchableObjectResizer.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_TabbedButtonBar.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_TabbedComponent.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\layout\juce_Viewport.h"> + <Filter>Juce Modules\juce_gui_basics\layout</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ArrowButton.h"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_Button.h"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_DrawableButton.h"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_HyperlinkButton.h"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ImageButton.h"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ShapeButton.h"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_TextButton.h"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ToggleButton.h"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\buttons\juce_ToolbarButton.h"> + <Filter>Juce Modules\juce_gui_basics\buttons</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_MarkerList.h"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeCoordinate.h"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeCoordinatePositioner.h"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeParallelogram.h"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativePoint.h"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativePointPath.h"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\positioning\juce_RelativeRectangle.h"> + <Filter>Juce Modules\juce_gui_basics\positioning</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_Drawable.h"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableComposite.h"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableImage.h"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawablePath.h"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableRectangle.h"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableShape.h"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\drawables\juce_DrawableText.h"> + <Filter>Juce Modules\juce_gui_basics\drawables</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_BooleanPropertyComponent.h"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_ButtonPropertyComponent.h"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_ChoicePropertyComponent.h"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_PropertyComponent.h"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_PropertyPanel.h"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_SliderPropertyComponent.h"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\properties\juce_TextPropertyComponent.h"> + <Filter>Juce Modules\juce_gui_basics\properties</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel.h"> + <Filter>Juce Modules\juce_gui_basics\lookandfeel</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V1.h"> + <Filter>Juce Modules\juce_gui_basics\lookandfeel</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V2.h"> + <Filter>Juce Modules\juce_gui_basics\lookandfeel</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\lookandfeel\juce_LookAndFeel_V3.h"> + <Filter>Juce Modules\juce_gui_basics\lookandfeel</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_DirectoryContentsDisplayComponent.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_DirectoryContentsList.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileBrowserComponent.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileBrowserListener.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileChooser.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileChooserDialogBox.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileFilter.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileListComponent.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FilenameComponent.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FilePreviewComponent.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileSearchPathListComponent.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_FileTreeComponent.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_ImagePreviewComponent.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\filebrowser\juce_WildcardFileFilter.h"> + <Filter>Juce Modules\juce_gui_basics\filebrowser</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandID.h"> + <Filter>Juce Modules\juce_gui_basics\commands</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandInfo.h"> + <Filter>Juce Modules\juce_gui_basics\commands</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandManager.h"> + <Filter>Juce Modules\juce_gui_basics\commands</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_ApplicationCommandTarget.h"> + <Filter>Juce Modules\juce_gui_basics\commands</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\commands\juce_KeyPressMappingSet.h"> + <Filter>Juce Modules\juce_gui_basics\commands</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\misc\juce_BubbleComponent.h"> + <Filter>Juce Modules\juce_gui_basics\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\misc\juce_DropShadower.h"> + <Filter>Juce Modules\juce_gui_basics\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\application\juce_Application.h"> + <Filter>Juce Modules\juce_gui_basics\application</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\application\juce_Initialisation.h"> + <Filter>Juce Modules\juce_gui_basics\application</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_MultiTouchMapper.h"> + <Filter>Juce Modules\juce_gui_basics\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_basics\juce_gui_basics.h"> + <Filter>Juce Modules\juce_gui_basics</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CodeDocument.h"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CodeEditorComponent.h"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CodeTokeniser.h"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CPlusPlusCodeTokeniser.h"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_CPlusPlusCodeTokeniserFunctions.h"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_LuaCodeTokeniser.h"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\code_editor\juce_XMLCodeTokeniser.h"> + <Filter>Juce Modules\juce_gui_extra\code_editor</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\documents\juce_FileBasedDocument.h"> + <Filter>Juce Modules\juce_gui_extra\documents</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\embedding\juce_ActiveXControlComponent.h"> + <Filter>Juce Modules\juce_gui_extra\embedding</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\embedding\juce_NSViewComponent.h"> + <Filter>Juce Modules\juce_gui_extra\embedding</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\embedding\juce_UIViewComponent.h"> + <Filter>Juce Modules\juce_gui_extra\embedding</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\lookandfeel\juce_OldSchoolLookAndFeel.h"> + <Filter>Juce Modules\juce_gui_extra\lookandfeel</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_AppleRemote.h"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_BubbleMessageComponent.h"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_ColourSelector.h"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_KeyMappingEditorComponent.h"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_LiveConstantEditor.h"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_PreferencesPanel.h"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_RecentlyOpenedFilesList.h"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_SplashScreen.h"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> + <Filter>Juce Modules\juce_gui_extra\misc</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"> + <Filter>Juce Modules\juce_gui_extra\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_gui_extra\juce_gui_extra.h"> + <Filter>Juce Modules\juce_gui_extra</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_Matrix3D.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLContext.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLFrameBuffer.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLGraphicsContext.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLHelpers.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLImage.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLRenderer.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_OpenGLTexture.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_Quaternion.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\opengl\juce_Vector3D.h"> + <Filter>Juce Modules\juce_opengl\opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_MissingGLDefinitions.h"> + <Filter>Juce Modules\juce_opengl\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGL_android.h"> + <Filter>Juce Modules\juce_opengl\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGL_ios.h"> + <Filter>Juce Modules\juce_opengl\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGL_linux.h"> + <Filter>Juce Modules\juce_opengl\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGL_osx.h"> + <Filter>Juce Modules\juce_opengl\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGL_win32.h"> + <Filter>Juce Modules\juce_opengl\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\native\juce_OpenGLExtensions.h"> + <Filter>Juce Modules\juce_opengl\native</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_opengl\juce_opengl.h"> + <Filter>Juce Modules\juce_opengl</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_video\playback\juce_DirectShowComponent.h"> + <Filter>Juce Modules\juce_video\playback</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_video\playback\juce_QuickTimeMovieComponent.h"> + <Filter>Juce Modules\juce_video\playback</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_video\capture\juce_CameraDevice.h"> + <Filter>Juce Modules\juce_video\capture</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\modules\juce_video\juce_video.h"> + <Filter>Juce Modules\juce_video</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\AppConfig.h"> + <Filter>Juce Library Code</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"> + <Filter>Juce Library Code</Filter> + </ClInclude> + <ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"> + <Filter>Juce Library Code</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <None Include="..\..\Resources\Fonts\cpmono-black-serialized"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\cpmono-bold-serialized"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\cpmono-extralight-serialized"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\cpmono-light-serialized"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\cpmono-plain-serialized"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\BebasNeue.otf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\cpmono_bold.otf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\cpmono_extra_light.otf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\cpmono_light.otf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\cpmono_plain.otf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\miso-bold.ttf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\miso-light.ttf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\miso-regular.ttf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\miso-serialized"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\nordic.ttf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\ostrich.ttf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\silkscreen-serialized"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\silkscreen.ttf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Fonts\unibody-8.otf"> + <Filter>open-ephys\Resources\Fonts</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\ArduinoIcon.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\OpenEphysBoardLogoBlack.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\OpenEphysBoardLogoGray.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons-01.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons-02.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons-03.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons-04.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons-05.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_neutral-01.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_neutral-02.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_neutral-03.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_neutral-04.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_neutral-05.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected-01.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected-02.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected-03.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected-04.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected-05.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected_over-01.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected_over-02.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected_over-03.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected_over-04.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\RadioButtons_selected_over-05.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\noise_wave.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\saw_wave.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\sine_wave.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\square_wave.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\triangle_wave.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\wifi.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\SourceDrop.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\DefaultDataSource.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\FileReaderIcon.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Icons\IntanIcon.png"> + <Filter>open-ephys\Resources\Images\Icons</Filter> + </None> + <None Include="..\..\Resources\Images\Buttons\muteoff.png"> + <Filter>open-ephys\Resources\Images\Buttons</Filter> + </None> + <None Include="..\..\Resources\Images\Buttons\muteon.png"> + <Filter>open-ephys\Resources\Images\Buttons</Filter> + </None> + <None Include="..\..\Resources\Images\Buttons\MergerA-01.png"> + <Filter>open-ephys\Resources\Images\Buttons</Filter> + </None> + <None Include="..\..\Resources\Images\Buttons\MergerA-02.png"> + <Filter>open-ephys\Resources\Images\Buttons</Filter> + </None> + <None Include="..\..\Resources\Images\Buttons\MergerB-01.png"> + <Filter>open-ephys\Resources\Images\Buttons</Filter> + </None> + <None Include="..\..\Resources\Images\Buttons\MergerB-02.png"> + <Filter>open-ephys\Resources\Images\Buttons</Filter> + </None> + <None Include="..\..\Resources\Images\Buttons\PipelineA-01.png"> + <Filter>open-ephys\Resources\Images\Buttons</Filter> + </None> + <None Include="..\..\Resources\Images\Buttons\PipelineA-02.png"> + <Filter>open-ephys\Resources\Images\Buttons</Filter> + </None> + <None Include="..\..\Resources\Images\Buttons\PipelineB-01.png"> + <Filter>open-ephys\Resources\Images\Buttons</Filter> + </None> + <None Include="..\..\Resources\Images\Buttons\PipelineB-02.png"> + <Filter>open-ephys\Resources\Images\Buttons</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_audio_basics\juce_module_info"> + <Filter>Juce Modules\juce_audio_basics</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_audio_devices\juce_module_info"> + <Filter>Juce Modules\juce_audio_devices</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_audio_formats\juce_module_info"> + <Filter>Juce Modules\juce_audio_formats</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_audio_processors\juce_module_info"> + <Filter>Juce Modules\juce_audio_processors</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_audio_utils\juce_module_info"> + <Filter>Juce Modules\juce_audio_utils</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_core\juce_module_info"> + <Filter>Juce Modules\juce_core</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_cryptography\juce_module_info"> + <Filter>Juce Modules\juce_cryptography</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_data_structures\juce_module_info"> + <Filter>Juce Modules\juce_data_structures</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_events\juce_module_info"> + <Filter>Juce Modules\juce_events</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_graphics\juce_module_info"> + <Filter>Juce Modules\juce_graphics</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_gui_basics\juce_module_info"> + <Filter>Juce Modules\juce_gui_basics</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_gui_extra\juce_module_info"> + <Filter>Juce Modules\juce_gui_extra</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_opengl\juce_module_info"> + <Filter>Juce Modules\juce_opengl</Filter> + </None> + <None Include="..\..\JuceLibraryCode\modules\juce_video\juce_module_info"> + <Filter>Juce Modules\juce_video</Filter> + </None> + </ItemGroup> + <ItemGroup> + <ResourceCompile Include=".\resources.rc"> + <Filter>Juce Library Code</Filter> + </ResourceCompile> + </ItemGroup> +</Project> diff --git a/Builds/VisualStudio2013/resources.rc b/Builds/VisualStudio2013/resources.rc new file mode 100644 index 0000000000000000000000000000000000000000..37719a97bd794d32c5c0f172efaaf280f7267255 --- /dev/null +++ b/Builds/VisualStudio2013/resources.rc @@ -0,0 +1,30 @@ +#ifdef JUCE_USER_DEFINED_RC_FILE + #include JUCE_USER_DEFINED_RC_FILE +#else + +#undef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#include <windows.h> + +VS_VERSION_INFO VERSIONINFO +FILEVERSION 0,3,2,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", "Open Ephys\0" + VALUE "FileDescription", "open-ephys\0" + VALUE "FileVersion", "0.3.2\0" + VALUE "ProductName", "open-ephys\0" + VALUE "ProductVersion", "0.3.2\0" + END + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 65001 + END +END + +#endif diff --git a/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj b/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj index 97e0433bd3208a21dfef4e9cba0dd5ab7fa72d6a..6eb450a8d3e143cfba18139b783ad3d35eb6e67a 100644 --- a/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj +++ b/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj @@ -6,1937 +6,2586 @@ objectVersion = 46; objects = { - 1E76E36772355E2A43CF4961 = {isa = PBXBuildFile; fileRef = D00F311BFC3C2625C457CB9B; }; - 241F29FCBB7A17BB44A0B10C = {isa = PBXBuildFile; fileRef = D1F9B0E9F5D54FE48BEB46EA; }; - 49C22786B54C5DC94E4654B8 = {isa = PBXBuildFile; fileRef = E96597BBC6A98255B51B94DC; }; - 11D42F7EC6E6539D79A7F4B1 = {isa = PBXBuildFile; fileRef = E5D6C36496F5BC84D7213BE8; }; - B980464FA2761CCD64B1FAD6 = {isa = PBXBuildFile; fileRef = CF6C8BD0DA3D8CD4E99EBADA; }; - 2610F357881240ACBF612F48 = {isa = PBXBuildFile; fileRef = 6678E9B3EEACAD47F438B264; }; - 1321E6C1C6170B6C898AD09D = {isa = PBXBuildFile; fileRef = 951128CA33CCDEF570436B1C; }; - 357A6AA6960EF95D92929BEE = {isa = PBXBuildFile; fileRef = 441CFEA771BAA50E187342E9; }; - 954A036F5DDB375DB23FFB3E = {isa = PBXBuildFile; fileRef = 0400CB0E056A1D840304D2DE; }; - 3EB3D569250C4BA4CA9AF578 = {isa = PBXBuildFile; fileRef = C7608A3967D9AB9481848F2B; }; - 95B44E6C74B1DED31DBE37EB = {isa = PBXBuildFile; fileRef = 8C52A3DDA62A746AA7A68535; }; - AA9D0B8E23F3D87A23DE9F8A = {isa = PBXBuildFile; fileRef = 9069981E414A631B036CC9AC; }; - 244BA1BDA5FAA465EA3F9C6D = {isa = PBXBuildFile; fileRef = 2247EE920DF0610CAF9F4513; }; - 3FCA61C401007B243E2E9035 = {isa = PBXBuildFile; fileRef = F797071D88542C813CF7222A; }; - 5BC89E7905397ABECD25ACCD = {isa = PBXBuildFile; fileRef = F1163B7856FDABA413A88D90; }; - FBE57B26FE59319AA2E8B59D = {isa = PBXBuildFile; fileRef = 69A5D13490A62DAE9A7D5A22; }; - 30B921C38DCEE787B294B746 = {isa = PBXBuildFile; fileRef = BAC43B20E14A340CCF14119C; }; - 676D2E1E750E61AA2FAA335E = {isa = PBXBuildFile; fileRef = 86E468DE6556BB2AD76A3D80; }; - 8012E6487639A7368E4C4470 = {isa = PBXBuildFile; fileRef = E70CA21960A64CCB835725FF; }; - 1F37544891EC8DBB5E500C1C = {isa = PBXBuildFile; fileRef = F71AF6D2DF3E652F8B51EBAB; }; - 110221CD5578153B528AD2BE = {isa = PBXBuildFile; fileRef = D10D51A0A2D63F38B4D86A60; }; - CD4F7B119CE718BCE78D61F4 = {isa = PBXBuildFile; fileRef = 9B9CAD20E1243B4351B4C8D8; }; - 78CB463DD98A55313A543859 = {isa = PBXBuildFile; fileRef = 1729AEDC34001C31B8CC357C; }; - 1499DF2E85B05AC1BF423773 = {isa = PBXBuildFile; fileRef = CF21D9DB3AEC0A4DCAB36A99; }; - 123810DAF8AF758928916ECE = {isa = PBXBuildFile; fileRef = 47DD50A5A9091F9900E0EAD9; }; - C9F11BA62D6D092A300363F7 = {isa = PBXBuildFile; fileRef = 0F249640243FBD5717F6ADD9; }; - F6635694A01FFBF5EF0968DB = {isa = PBXBuildFile; fileRef = 631983AA62673015F8D7453B; }; - FCE6F604C00039A32649CB69 = {isa = PBXBuildFile; fileRef = 2E680E2C65684A4272AE079A; }; - 9BF773500BA51A8B5C6C7348 = {isa = PBXBuildFile; fileRef = 65C498761CE166072A202AA0; }; - 57B1F32A372143B4D3B1C517 = {isa = PBXBuildFile; fileRef = 3E03B7C7A19E63A724EB79F4; }; - 3DC282564876B1FC88AAA9B3 = {isa = PBXBuildFile; fileRef = 662C76394C5D1B56766FAFD9; }; - C49E1D32A9DCE3D59BC48B1D = {isa = PBXBuildFile; fileRef = 93B419190CCE92ACAB1ED25B; }; - E1268E019B434F6B5E9317DC = {isa = PBXBuildFile; fileRef = 1C216FE9B7A5209C5CCF2517; }; - CE91112DADB97C573C3C674D = {isa = PBXBuildFile; fileRef = 0169ACAA0FAE70CCEEE4F650; }; - A70F0274076C0D44ED71C980 = {isa = PBXBuildFile; fileRef = EF30A74B566A461A171BBF83; }; - BD1E0CBE74DDD2F303978E1F = {isa = PBXBuildFile; fileRef = 4E191CDCE7565DB726CF7065; }; - 8C1CC0E7A772D66635BA482F = {isa = PBXBuildFile; fileRef = 98F42686D9DAC974F2514217; }; - A69BF71FA90E5A66B6EB2E0F = {isa = PBXBuildFile; fileRef = 9C7FA58D223674C4C2AC6595; }; - D68DE111AFBD82F0D44A3B69 = {isa = PBXBuildFile; fileRef = B15E33E7342F6EB4F95C9B1D; }; - EC6A34EC9A9D454BF26AAD32 = {isa = PBXBuildFile; fileRef = 16203C6791259C9718A04C3A; }; - 8AD28823205783E6F676F254 = {isa = PBXBuildFile; fileRef = DF725A596B7BCD7520CC0A9F; }; - 34716A3539FD288C09CBA38A = {isa = PBXBuildFile; fileRef = 921752D9B004A15973DDF56F; }; - 45A53AF13B0D663050632E8C = {isa = PBXBuildFile; fileRef = 9EF583A6201DBC813C2F63C4; }; - C2A85091A28C907A4E1E1687 = {isa = PBXBuildFile; fileRef = 133F1E428260C5ADDF496DF9; }; - 83431B7234A78ECFB3C15F63 = {isa = PBXBuildFile; fileRef = 78D0DBC4798FF040FDB90F6D; }; - 209FCCC2155A1FCB7E11E20D = {isa = PBXBuildFile; fileRef = 269A454F1FF081DA67FFD578; }; - C93569F47B4AC1A8E37992ED = {isa = PBXBuildFile; fileRef = 9D7689451732AF8333402B3A; }; - 1B988E139004D8E2850EB656 = {isa = PBXBuildFile; fileRef = C187718F7B9EBA88584B43F3; }; - 6FC19EBA7A51423C3D22F77B = {isa = PBXBuildFile; fileRef = B483D960309FAFC193F9CDA2; }; - 3C5267E06A897B0DC0F7EA50 = {isa = PBXBuildFile; fileRef = 472F9A90F685220D730EBF6C; }; - F70594FF1FFED9AC12F43709 = {isa = PBXBuildFile; fileRef = B72DAC469A62BD52C86102E7; }; - 01D45DD829D8848733090B67 = {isa = PBXBuildFile; fileRef = 2D5E55D7E0BC08AAF7B6E150; }; - 4028CA96EA50175DD6B8D976 = {isa = PBXBuildFile; fileRef = 2C53E412EF7FC1036E4B11AC; }; - F743B7B2709E72250982F2FB = {isa = PBXBuildFile; fileRef = BB72D9AA25D5D5B090F16513; }; - 45576193A53DE94F5BF4C3D4 = {isa = PBXBuildFile; fileRef = 9993F2BAA90AA22D16B7F40B; }; - BF57EEE3415D6F8F03206846 = {isa = PBXBuildFile; fileRef = 20EABC08F7EFE741D7C3B622; }; - 20102F921FAA2A92CED056C0 = {isa = PBXBuildFile; fileRef = DDF2C578191FFE07300541E8; }; - 0075C5208947159AF2802F3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_AudioPluginEditorTemplate.cpp"; path = "../../Source/BinaryData/jucer_AudioPluginEditorTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; - 008C8B2C2328CFBB9375397D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComboBoxHandler.h"; path = "../../Source/ComponentEditor/components/jucer_ComboBoxHandler.h"; sourceTree = "SOURCE_ROOT"; }; - 00CBA904DE3B8686A6F569CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colours.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/colour/juce_Colours.h"; sourceTree = "SOURCE_ROOT"; }; - 00E86D533C0149A56F21D804 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../JuceLibraryCode/modules/juce_core/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; - 00F860FEF209ABF0E800FA09 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentPeer.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ComponentPeer.h"; sourceTree = "SOURCE_ROOT"; }; - 0153A6801552D0B4C21BE911 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LinkedListPointer.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_LinkedListPointer.h"; sourceTree = "SOURCE_ROOT"; }; - 0169ACAA0FAE70CCEEE4F650 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_PaintElementPath.cpp"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementPath.cpp"; sourceTree = "SOURCE_ROOT"; }; - 02CA8C3BE552E240C77A3722 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourSelector.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_ColourSelector.cpp"; sourceTree = "SOURCE_ROOT"; }; - 0329C05B4EE23CBB5578BF02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Primes.h"; path = "../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_Primes.h"; sourceTree = "SOURCE_ROOT"; }; - 03D3053EDE47FED1919C6674 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_AudioPluginFilterTemplate.h"; path = "../../Source/BinaryData/jucer_AudioPluginFilterTemplate.h"; sourceTree = "SOURCE_ROOT"; }; - 0400CB0E056A1D840304D2DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_CommandLine.cpp"; path = "../../Source/Application/jucer_CommandLine.cpp"; sourceTree = "SOURCE_ROOT"; }; - 043FC175E80305E3D95ECAF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NotificationType.h"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_NotificationType.h"; sourceTree = "SOURCE_ROOT"; }; - 04A2C05B7935B8D335B5FD39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 04C1267B2BD11A6ECCCA654C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentBooleanProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_ComponentBooleanProperty.h"; sourceTree = "SOURCE_ROOT"; }; - 05076CDF1511A5F8A8E18F1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_Make.h"; path = "../../Source/Project Saving/jucer_ProjectExport_Make.h"; sourceTree = "SOURCE_ROOT"; }; - 056E44027E3F3AFAB32FBC44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LocalisedStrings.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_LocalisedStrings.h"; sourceTree = "SOURCE_ROOT"; }; - 06BB2D547BF07A31E8D46977 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathIterator.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathIterator.h"; sourceTree = "SOURCE_ROOT"; }; - 0737A6A737019EFC6BC4CED0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedButtonBar.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedButtonBar.h"; sourceTree = "SOURCE_ROOT"; }; - 084171D9475B3491A4EFAB5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Result.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/misc/juce_Result.cpp"; sourceTree = "SOURCE_ROOT"; }; - 084C0070BC67BC893B967EF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ToggleButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_ToggleButtonHandler.h"; sourceTree = "SOURCE_ROOT"; }; - 08AF500230E8F8644B3682F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MainMenu.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_MainMenu.mm"; sourceTree = "SOURCE_ROOT"; }; - 09261261800229B6438A9A5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChoicePropertyComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 09BB016660D64FDCD2A9866F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; - 09F93EBC7C2C877F3446A0C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyListener.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyListener.h"; sourceTree = "SOURCE_ROOT"; }; - 0A6652042F8E043F43239E75 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ScrollBar.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ScrollBar.cpp"; sourceTree = "SOURCE_ROOT"; }; - 0A8D062EF44529B793CC5098 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; }; - 0ACD709DE0EBA4A3D73325FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 0AE2B4F22C863455A366D251 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V3.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp"; sourceTree = "SOURCE_ROOT"; }; - 0B9187D02C50D0A3C4516DC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_SystemTrayIcon.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; - 0CF3C0EC356169F25B0BAA9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AlertWindow.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_AlertWindow.h"; sourceTree = "SOURCE_ROOT"; }; - 0E06FB23B05CE46487F509C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyPanel.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; - 0E24C59E408559F9DF1DC31A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniserFunctions.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h"; sourceTree = "SOURCE_ROOT"; }; - 0F249640243FBD5717F6ADD9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_MiscUtilities.cpp"; path = "../../Source/Utility/jucer_MiscUtilities.cpp"; sourceTree = "SOURCE_ROOT"; }; - 0F4EFF11F984ED5E2A2045A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_FileChooser.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; - 0F9DBA4AB2BD63773528D805 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBrowserComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 0FAD42641F0AAC0B7E906D18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsDisplayComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 0FB3551C6845EF0E9312F850 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModifierKeys.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_ModifierKeys.h"; sourceTree = "SOURCE_ROOT"; }; - 0FD7364EC64E25AE854E9A9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlyphArrangement.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_GlyphArrangement.cpp"; sourceTree = "SOURCE_ROOT"; }; - 0FF1C6905150EAAB1AE081A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_ButtonHandler.h"; sourceTree = "SOURCE_ROOT"; }; - 101572E83E487C91969D671C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; }; - 104463B9110789FCDA7BD4FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; }; - 10AC5E5349AFAF11362E4199 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PlatformDefs.h"; path = "../../../JuceLibraryCode/modules/juce_core/system/juce_PlatformDefs.h"; sourceTree = "SOURCE_ROOT"; }; - 10F328BCD86EF125C5DDA33D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; - 1125D1B2AE54AEF2EB3D51C0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JucerDocumentEditor.h"; path = "../../Source/ComponentEditor/ui/jucer_JucerDocumentEditor.h"; sourceTree = "SOURCE_ROOT"; }; - 114845541FC5BE3453B6BD4C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlDocument.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/xml/juce_XmlDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; - 1233E258E4C1FD4AAA7A6D1A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnectionServer.h"; path = "../../../JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnectionServer.h"; sourceTree = "SOURCE_ROOT"; }; - 1270CC27AD4D0805DD4BA465 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooserDialogBox.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h"; sourceTree = "SOURCE_ROOT"; }; - 12875173A50B701B72E68F90 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileLogger.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/logging/juce_FileLogger.cpp"; sourceTree = "SOURCE_ROOT"; }; - 12ABAFDD4C4BCA2B8313F1CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationProperties.h"; path = "../../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_ApplicationProperties.h"; sourceTree = "SOURCE_ROOT"; }; - 12D78FB671BC817D433079B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h"; sourceTree = "SOURCE_ROOT"; }; - 1320D638B7BACCADEDA5ABD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; }; - 133F1E428260C5ADDF496DF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentLayout.cpp"; path = "../../Source/ComponentEditor/jucer_ComponentLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; - 136A3229F6535E2FBB9993E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageEffectFilter.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/effects/juce_ImageEffectFilter.h"; sourceTree = "SOURCE_ROOT"; }; - 13E76507D88192A1B9554073 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BigInteger.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/maths/juce_BigInteger.cpp"; sourceTree = "SOURCE_ROOT"; }; - 140ABB31EF22CAE40D874BB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Range.h"; path = "../../../JuceLibraryCode/modules/juce_core/maths/juce_Range.h"; sourceTree = "SOURCE_ROOT"; }; - 149020249A77110311411E15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; }; - 14BE817BFCB5B1CF2799C860 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputStream.h"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_InputStream.h"; sourceTree = "SOURCE_ROOT"; }; - 159A5AC2CAF01A7A17ECA0A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedArray.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_ReferenceCountedArray.h"; sourceTree = "SOURCE_ROOT"; }; - 1602D140D6F478765ACEA660 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UndoManager.cpp"; path = "../../../JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoManager.cpp"; sourceTree = "SOURCE_ROOT"; }; - 16203C6791259C9718A04C3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_PaintRoutinePanel.cpp"; path = "../../Source/ComponentEditor/ui/jucer_PaintRoutinePanel.cpp"; sourceTree = "SOURCE_ROOT"; }; - 16413B69F7D1E2862AFBE61F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BigInteger.h"; path = "../../../JuceLibraryCode/modules/juce_core/maths/juce_BigInteger.h"; sourceTree = "SOURCE_ROOT"; }; - 16C7EFDF9ED765D02DA12C55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; }; - 16E61715753895412F61F93B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScrollBar.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ScrollBar.h"; sourceTree = "SOURCE_ROOT"; }; - 17173DDA0532B81C71D95B05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDragAndDropTarget.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; - 1729AEDC34001C31B8CC357C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_FileHelpers.cpp"; path = "../../Source/Utility/jucer_FileHelpers.cpp"; sourceTree = "SOURCE_ROOT"; }; - 174CE62B43D97B83AF1D3338 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; - 1848EB565B679F72C560EBAD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPath.h"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_FileSearchPath.h"; sourceTree = "SOURCE_ROOT"; }; - 188D03A4247F4BC0539F5C49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_Colours.h"; path = "../../Source/Utility/jucer_Colours.h"; sourceTree = "SOURCE_ROOT"; }; - 189BC87D79A9670E686ACE00 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActiveXControlComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 18AAAE2846B4512094CF9E64 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinate.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp"; sourceTree = "SOURCE_ROOT"; }; - 18D9EBA1DAE45EEF81FD5C8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_MainConsoleAppTemplate.cpp"; path = "../../Source/BinaryData/jucer_MainConsoleAppTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; - 1908920B3166E7B7A7A095BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PixelFormats.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h"; sourceTree = "SOURCE_ROOT"; }; - 1958777C37415EC581CD4B74 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Expression.h"; path = "../../../JuceLibraryCode/modules/juce_core/maths/juce_Expression.h"; sourceTree = "SOURCE_ROOT"; }; - 199E3F67A1E48F7D95AC6E1E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoableAction.h"; path = "../../../JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoableAction.h"; sourceTree = "SOURCE_ROOT"; }; - 1AF7EFBE4961C7B6C834BF54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PresetIDs.h"; path = "../../Source/Utility/jucer_PresetIDs.h"; sourceTree = "SOURCE_ROOT"; }; - 1B4284167C1A10170537305A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModifierKeys.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp"; sourceTree = "SOURCE_ROOT"; }; - 1BE0A264A6AA494EF75B582B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_File.h"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_File.h"; sourceTree = "SOURCE_ROOT"; }; - 1C216FE9B7A5209C5CCF2517 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_PaintElement.cpp"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElement.cpp"; sourceTree = "SOURCE_ROOT"; }; - 1C94985541E125A49C70C07C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadPool.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_ThreadPool.h"; sourceTree = "SOURCE_ROOT"; }; - 1D3D6A19A60F0B03DE2F1C14 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementPath.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementPath.h"; sourceTree = "SOURCE_ROOT"; }; - 1DC3F7820AA6D950B2C6D628 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemStats.h"; path = "../../../JuceLibraryCode/modules/juce_core/system/juce_SystemStats.h"; sourceTree = "SOURCE_ROOT"; }; - 1F04ABB8C6FA1598902FE33A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; }; - 1F421199C40092BFEE0658C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_RelativePath.h"; path = "../../Source/Utility/jucer_RelativePath.h"; sourceTree = "SOURCE_ROOT"; }; - 1F869D818F79BE6EEE2305FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicObject.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_DynamicObject.h"; sourceTree = "SOURCE_ROOT"; }; - 1F86FB8B8336D44337AE7119 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BlowFish.h"; path = "../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_BlowFish.h"; sourceTree = "SOURCE_ROOT"; }; - 1F9BBDFA52513AD34D906D2A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_HyperlinkButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_HyperlinkButtonHandler.h"; sourceTree = "SOURCE_ROOT"; }; - 1FA92F8F2B26C6CEC8B1D737 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ButtonDocument.h"; path = "../../Source/ComponentEditor/documents/jucer_ButtonDocument.h"; sourceTree = "SOURCE_ROOT"; }; - 1FDBC89D596C6E959E7A8825 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedValueSet.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_NamedValueSet.cpp"; sourceTree = "SOURCE_ROOT"; }; - 1FEE53F170737A23D412C425 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SVGParser.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_SVGParser.cpp"; sourceTree = "SOURCE_ROOT"; }; - 20D0FBDE77A58A302859A206 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RSAKey.cpp"; path = "../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_RSAKey.cpp"; sourceTree = "SOURCE_ROOT"; }; - 20EABC08F7EFE741D7C3B622 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_basics.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; }; - 2101B4CC3E5BDC7BD806678B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_events.h"; path = "../../../JuceLibraryCode/modules/juce_events/juce_events.h"; sourceTree = "SOURCE_ROOT"; }; - 21822729E1EF7CC3D3528BFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeLayout.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; - 223C4209F18A221EB183A056 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_AppearanceSettings.h"; path = "../../Source/Application/jucer_AppearanceSettings.h"; sourceTree = "SOURCE_ROOT"; }; - 2247EE920DF0610CAF9F4513 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_OpenDocumentManager.cpp"; path = "../../Source/Application/jucer_OpenDocumentManager.cpp"; sourceTree = "SOURCE_ROOT"; }; - 2249F79A9B7FFE48DACC14CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BooleanPropertyComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 22B29C61E4EB0C2FC4E54378 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BlowFish.cpp"; path = "../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_BlowFish.cpp"; sourceTree = "SOURCE_ROOT"; }; - 22C0EC04F7C30AAE16E632A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToggleButton.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.cpp"; sourceTree = "SOURCE_ROOT"; }; - 231F4AC6660B650E08EF1E54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedValueSet.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_NamedValueSet.h"; sourceTree = "SOURCE_ROOT"; }; - 237496FB515C526B510BB0C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; - 23A8DE16C0CDB8EED18B008B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_CommandIDs.h"; path = "../../Source/Application/jucer_CommandIDs.h"; sourceTree = "SOURCE_ROOT"; }; - 23D5A9D86894973926E3EFB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V2.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp"; sourceTree = "SOURCE_ROOT"; }; - 240283D05A8E1886987E07F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ArrowButton.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.cpp"; sourceTree = "SOURCE_ROOT"; }; - 2412E1E63124369CE418894D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V1.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h"; sourceTree = "SOURCE_ROOT"; }; - 241A48F1D188BF19314065C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Justification.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/placement/juce_Justification.h"; sourceTree = "SOURCE_ROOT"; }; - 24319DEF365C8368FD3AA4EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Logger.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/logging/juce_Logger.cpp"; sourceTree = "SOURCE_ROOT"; }; - 24B8D9E228BF396D1B8C705E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemTrayIconComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 24C34D0578AE6C7A3EA18781 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_InlineComponentTemplate.h"; path = "../../Source/BinaryData/jucer_InlineComponentTemplate.h"; sourceTree = "SOURCE_ROOT"; }; - 24D73A13CD0F89E299E11B0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SHA256.cpp"; path = "../../../JuceLibraryCode/modules/juce_cryptography/hashing/juce_SHA256.cpp"; sourceTree = "SOURCE_ROOT"; }; - 257104EA81085B98E8AFCFB3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ByteOrder.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_ByteOrder.h"; sourceTree = "SOURCE_ROOT"; }; - 258C17078206C550B08DD0F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OldSchoolLookAndFeel.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.h"; sourceTree = "SOURCE_ROOT"; }; - 263D9041F9B7D6A79DC38CD6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentLayoutEditor.h"; path = "../../Source/ComponentEditor/ui/jucer_ComponentLayoutEditor.h"; sourceTree = "SOURCE_ROOT"; }; - 269A454F1FF081DA67FFD578 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_JucerDocument.cpp"; path = "../../Source/ComponentEditor/jucer_JucerDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; - 26B7487E9A0CB5C6CA5ACE58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; }; - 27A2B025813B7E54E0862642 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementUndoableAction.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementUndoableAction.h"; sourceTree = "SOURCE_ROOT"; }; - 27C16EA8D243AC7934DF11B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserListener.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h"; sourceTree = "SOURCE_ROOT"; }; - 27E909E8C27DFBF0F184DCBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Clipboard.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_Clipboard.cpp"; sourceTree = "SOURCE_ROOT"; }; - 27F7865BD6FE03B970B8DBFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; }; - 2802BE05CAC2BE78EFD5A239 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImagePreviewComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 2875464712C12E9BFCCEE57D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooser.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooser.h"; sourceTree = "SOURCE_ROOT"; }; - 28A5DF3CEA69B587C9CA7C4A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsPostScriptRenderer.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; - 28C9E13B1A70FDC728770C6E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; }; - 28E80FBE60ED3FE73CCAB834 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XMLCodeTokeniser.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; - 28E9116333CAD9E8164008A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Singleton.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_Singleton.h"; sourceTree = "SOURCE_ROOT"; }; - 295A9B126C98FE15F5A8B81E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FilePropertyComponent.h"; path = "../../Source/ComponentEditor/properties/jucer_FilePropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 29C79CFD0760D5BEF0C11D4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 29CA2D82E54BA471A7F0D4A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyMappingEditorComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 29FD4A27890434E137DBC3B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; }; - 2A631496A56813D0EB2D0E5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; }; - 2A7B44B9D6C81585064098C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; }; - 2AB28295C237EC79481F5F9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionListener.h"; path = "../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionListener.h"; sourceTree = "SOURCE_ROOT"; }; - 2C0D1EB0AE7676CE3458764C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPositionBehaviours.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h"; sourceTree = "SOURCE_ROOT"; }; - 2C53E412EF7FC1036E4B11AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../JuceLibraryCode/modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; - 2C5E67AA30FCCE2E09C8CB6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; }; - 2C9ED03E1C345D9A81BEB361 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../JuceLibraryCode/modules/juce_cryptography/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; - 2CB1AA089385D7399AC615CE = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../JuceLibraryCode/modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; - 2CD34A70B4032C0426F7AA10 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_MainWindow.h"; path = "../../Source/Application/jucer_MainWindow.h"; sourceTree = "SOURCE_ROOT"; }; - 2CF191F1A61F2C167FF2DADA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; - 2D035221BF4D4B8C56FA3653 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableListBox.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; - 2D5E55D7E0BC08AAF7B6E150 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../JuceLibraryCode/modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; - 2D6B77C09B5AF1BBD821D224 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Identifier.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_Identifier.h"; sourceTree = "SOURCE_ROOT"; }; - 2D6B797AC8B1B5E7C8E7D1E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 2D9E9803A9DF82BBA42294E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectangleList.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_RectangleList.h"; sourceTree = "SOURCE_ROOT"; }; - 2DE3560E8DB420766D385023 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarButton.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp"; sourceTree = "SOURCE_ROOT"; }; - 2E183952277F99D860EEB3F3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarModel.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarModel.cpp"; sourceTree = "SOURCE_ROOT"; }; - 2E680E2C65684A4272AE079A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_SourceCodeEditor.cpp"; path = "../../Source/Code Editor/jucer_SourceCodeEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; - 2EEB1C074162F363C6599282 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_CommandLine.h"; path = "../../Source/Application/jucer_CommandLine.h"; sourceTree = "SOURCE_ROOT"; }; - 2F365E601995A1B068BAC1C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 2F9762C3866D161E38B4FD00 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyPanel.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyPanel.h"; sourceTree = "SOURCE_ROOT"; }; - 2FAD2E774B5F20B781D5AEB2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; }; - 2FD9D5944388186AAA32FEE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colour.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/colour/juce_Colour.cpp"; sourceTree = "SOURCE_ROOT"; }; - 2FF61C42E37986022C189531 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPress.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyPress.cpp"; sourceTree = "SOURCE_ROOT"; }; - 301592EBAC0FFF6F5B268E99 = {isa = PBXFileReference; lastKnownFileType = image.png; name = "background_tile.png"; path = "../../Source/BinaryData/background_tile.png"; sourceTree = "SOURCE_ROOT"; }; - 3131C94D973A735EA68C1C77 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilenameComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 318467BF5A24F08E30FB78DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TargetPlatform.h"; path = "../../../JuceLibraryCode/modules/juce_core/system/juce_TargetPlatform.h"; sourceTree = "SOURCE_ROOT"; }; - 32184C99C6A9A997E6534029 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; }; - 323BA212B37224C61A9C1740 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; }; - 333B1D00E46AF5A642C1DCDE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Uuid.h"; path = "../../../JuceLibraryCode/modules/juce_core/misc/juce_Uuid.h"; sourceTree = "SOURCE_ROOT"; }; - 334E3DFFA297DD18AD57F40F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsList.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp"; sourceTree = "SOURCE_ROOT"; }; - 33644BFBB02CBC8EFB61C5D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Button.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_Button.cpp"; sourceTree = "SOURCE_ROOT"; }; - 33B2073D379E18BC2919FA07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 33E0A6C9F0AE53BEC8778775 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; - 34705FA6042CBE98AAF77B61 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsRegistry.h"; path = "../../../JuceLibraryCode/modules/juce_core/misc/juce_WindowsRegistry.h"; sourceTree = "SOURCE_ROOT"; }; - 34D4199F01C019ED54544C1E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedReadLock.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_ScopedReadLock.h"; sourceTree = "SOURCE_ROOT"; }; - 3514E78B58A08F4C98F54C5A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentLayoutPanel.h"; path = "../../Source/ComponentEditor/ui/jucer_ComponentLayoutPanel.h"; sourceTree = "SOURCE_ROOT"; }; - 35CB48D497F35BF3F6998F5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExporter.h"; path = "../../Source/Project Saving/jucer_ProjectExporter.h"; sourceTree = "SOURCE_ROOT"; }; - 35E6EE1E98DD7050DDFECD9B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ContentCompTemplate.h"; path = "../../Source/BinaryData/jucer_ContentCompTemplate.h"; sourceTree = "SOURCE_ROOT"; }; - 364D1A9B113320407A7E57B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; }; - 36E341F289B15DB1B7FA7528 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileOutputStream.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_FileOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; - 36F06F123E9717834A627F8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImagePreviewComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 3706C20941A79E5A8DE08DE4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Desktop.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_Desktop.cpp"; sourceTree = "SOURCE_ROOT"; }; - 375AFDF06A908D89DEC5205F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectTree_Base.h"; path = "../../Source/Project/jucer_ProjectTree_Base.h"; sourceTree = "SOURCE_ROOT"; }; - 37AD2C828C069B17DB0C70EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; - 37C65F13D7CF8A718D1569AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPCompressorOutputStream.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; - 3832E22BBFD9A9A1E9EEED6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; - 385426A4A6D3BFC4B2FD310C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; }; - 393E7A4E9BEC14AFC441E73F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MarkerList.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_MarkerList.h"; sourceTree = "SOURCE_ROOT"; }; - 39698748BDD86977C4474DE4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WildcardFileFilter.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; - 3970C8444A2A081455299CE8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Javascript.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.cpp"; sourceTree = "SOURCE_ROOT"; }; - 39D907284C634E6A9FC45E3E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; - 3A3CD53AEB64CF57B6CADB59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentAnimator.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentAnimator.h"; sourceTree = "SOURCE_ROOT"; }; - 3A5B5DC92BE6D22CA15B9671 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_SnapGridPainter.h"; path = "../../Source/ComponentEditor/ui/jucer_SnapGridPainter.h"; sourceTree = "SOURCE_ROOT"; }; - 3A9ACE7B66413BF99882ECC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; }; - 3AC808D92D13832338534F7F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeRectangle.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; - 3B059A5FF36DA71C1433CA60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; }; - 3CF3F730EA232DA860D1B79D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileFilter.h"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_FileFilter.h"; sourceTree = "SOURCE_ROOT"; }; - 3D577E9A14625124F5933387 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; - 3E03B7C7A19E63A724EB79F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ButtonDocument.cpp"; path = "../../Source/ComponentEditor/documents/jucer_ButtonDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; - 3ED948823F776108CD873C68 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryIterator.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_DirectoryIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; - 3EFC8EEA0D7714261BB90A41 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComboBox.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ComboBox.h"; sourceTree = "SOURCE_ROOT"; }; - 3F00C034B140193B3754969B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ImageResourceProperty.h"; path = "../../Source/ComponentEditor/paintelements/jucer_ImageResourceProperty.h"; sourceTree = "SOURCE_ROOT"; }; - 3F8D9C9557E45D151F339F5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PreferencesPanel.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_PreferencesPanel.h"; sourceTree = "SOURCE_ROOT"; }; - 3F9D0CEF873510CCD254A9C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XMLCodeTokeniser.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; - 3F9D4C7F6E5779D4E4AE655D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentLayout.h"; path = "../../Source/ComponentEditor/jucer_ComponentLayout.h"; sourceTree = "SOURCE_ROOT"; }; - 3FB2A9225024422947E6E654 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageConvolutionKernel.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageConvolutionKernel.h"; sourceTree = "SOURCE_ROOT"; }; - 3FDA82F89379E99C9E3B5C64 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; }; - 400E4C67ABCDDB1D49EBB85E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TabbedComponentHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TabbedComponentHandler.h"; sourceTree = "SOURCE_ROOT"; }; - 405388248E6EF4212019AC65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MarkerList.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_MarkerList.cpp"; sourceTree = "SOURCE_ROOT"; }; - 4064AE577A11F735B2CE87F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; }; - 40B4AB02D26ED520104B9363 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Registry.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_win32_Registry.cpp"; sourceTree = "SOURCE_ROOT"; }; - 40B9BA6D711F58DEB6E871BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_SystemStats.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_android_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; - 4108E23948D43A46FB88B23E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinatePositioner.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp"; sourceTree = "SOURCE_ROOT"; }; - 41105E536155E394E54BDD35 = {isa = PBXFileReference; lastKnownFileType = file.xml; name = "colourscheme_dark.xml"; path = "../../Source/BinaryData/colourscheme_dark.xml"; sourceTree = "SOURCE_ROOT"; }; - 419A5389244CCE7390877F1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; - 41CA95403E264AA7457A61F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementRoundedRectangle.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementRoundedRectangle.h"; sourceTree = "SOURCE_ROOT"; }; - 421BFE95D4EE1C5D12BBB848 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LuaCodeTokeniser.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; - 4301D29792107D6471F29FDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputSource.h"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_FileInputSource.h"; sourceTree = "SOURCE_ROOT"; }; - 439A60BB029251ED3752A69A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ContainerDeletePolicy.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_ContainerDeletePolicy.h"; sourceTree = "SOURCE_ROOT"; }; - 43ACFC660A375B2DEDFE2274 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; - 43B30439D7A63B0D2CF12AC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextPropertyComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_TextPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 43BFDF9214946C6B76CA666D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DeletedAtShutdown.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_DeletedAtShutdown.cpp"; sourceTree = "SOURCE_ROOT"; }; - 43E13FBEEA6CF191A0D501E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageFileFormat.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageFileFormat.h"; sourceTree = "SOURCE_ROOT"; }; - 441CFEA771BAA50E187342E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_AppearanceSettings.cpp"; path = "../../Source/Application/jucer_AppearanceSettings.cpp"; sourceTree = "SOURCE_ROOT"; }; - 4467B3824742815D1355DB81 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UnitTest.h"; path = "../../../JuceLibraryCode/modules/juce_core/unit_tests/juce_UnitTest.h"; sourceTree = "SOURCE_ROOT"; }; - 44F454FF28C39CC641FF410B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; }; - 45AE1D139D938D43891501E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; }; - 46392AD7FE5D6BFED1BE827C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadowEffect.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/effects/juce_DropShadowEffect.h"; sourceTree = "SOURCE_ROOT"; }; - 46515892E00E0D91D920B90C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPath.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_FileSearchPath.cpp"; sourceTree = "SOURCE_ROOT"; }; - 4653C504CADC3A365DCD59D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Expression.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/maths/juce_Expression.cpp"; sourceTree = "SOURCE_ROOT"; }; - 46F449C23355573E967D351F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; }; - 472F9A90F685220D730EBF6C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = "SOURCE_ROOT"; }; - 4760F25A96CAB18E75573C0B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../JuceLibraryCode/modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; }; - 479E55D2A68FC2E14FF2E39A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RenderingHelpers.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h"; sourceTree = "SOURCE_ROOT"; }; - 47B49049B85EED74D29C9906 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectTree_File.h"; path = "../../Source/Project/jucer_ProjectTree_File.h"; sourceTree = "SOURCE_ROOT"; }; - 47DD50A5A9091F9900E0EAD9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_JucerTreeViewBase.cpp"; path = "../../Source/Utility/jucer_JucerTreeViewBase.cpp"; sourceTree = "SOURCE_ROOT"; }; - 482C35BB3B7DDE1B452C8455 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../JuceLibraryCode/modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; - 486683F365BE1E8CEE34D4D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BooleanPropertyComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 48ADBB0A2A258CF72F04891A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropContainer.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h"; sourceTree = "SOURCE_ROOT"; }; - 48F1E4DDD3B2B8E5CC410EE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Viewport.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_Viewport.cpp"; sourceTree = "SOURCE_ROOT"; }; - 497E5C615BFF59384CB2284C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HashMap.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_HashMap.h"; sourceTree = "SOURCE_ROOT"; }; - 498E9D7F6E7F61A84E0D7792 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V1.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp"; sourceTree = "SOURCE_ROOT"; }; - 4A19E61C47E844D661C34DDD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WildcardFileFilter.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_WildcardFileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; - 4A41FD3066D0979DB48691E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_MiscUtilities.h"; path = "../../Source/Utility/jucer_MiscUtilities.h"; sourceTree = "SOURCE_ROOT"; }; - 4AD7BBD9D7EA422981A8C536 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeRectangle.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.h"; sourceTree = "SOURCE_ROOT"; }; - 4B138A2FD1EF34BB254F7C7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeTime.h"; path = "../../../JuceLibraryCode/modules/juce_core/time/juce_RelativeTime.h"; sourceTree = "SOURCE_ROOT"; }; - 4BD96E9231831D77755CC803 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextInputTarget.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h"; sourceTree = "SOURCE_ROOT"; }; - 4BE6A47DF33CCD5619DFE82A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; }; - 4BF00AE19C332EF226420C57 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Socket.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/network/juce_Socket.cpp"; sourceTree = "SOURCE_ROOT"; }; - 4C2093BCD3528ACEDC7A2B33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ImageButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_ImageButtonHandler.h"; sourceTree = "SOURCE_ROOT"; }; - 4C2394A14C140490F5F4E9BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; }; - 4C80A175986D336D4E1044A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileLogger.h"; path = "../../../JuceLibraryCode/modules/juce_core/logging/juce_FileLogger.h"; sourceTree = "SOURCE_ROOT"; }; - 4C8154CEB5C33EFB9E5CB8DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 4CA1C3E6585D7694AA9C309F = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Info.plist; sourceTree = "SOURCE_ROOT"; }; - 4CA96F577DD15FB5085518E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ButtonPropertyComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 4CC9356FA92F5C94E4DC65D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; - 4DAF01670050184A3BAAA93B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryBlock.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_MemoryBlock.h"; sourceTree = "SOURCE_ROOT"; }; - 4DEBB89A00FBD2C11515FD07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringRef.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_StringRef.h"; sourceTree = "SOURCE_ROOT"; }; - 4DFDC4E1F50427FBAF0B8F81 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BorderSize.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_BorderSize.h"; sourceTree = "SOURCE_ROOT"; }; - 4E191CDCE7565DB726CF7065 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentOverlayComponent.cpp"; path = "../../Source/ComponentEditor/ui/jucer_ComponentOverlayComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 4E2A191756179C6616D50B58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilePreviewComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 4E60769DE992CA7FC1A4A486 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintRoutineEditor.h"; path = "../../Source/ComponentEditor/ui/jucer_PaintRoutineEditor.h"; sourceTree = "SOURCE_ROOT"; }; - 4E8FE9B1B8C90FC28D56523B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementEllipse.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementEllipse.h"; sourceTree = "SOURCE_ROOT"; }; - 4EBA5CEE07FB8B2DAA9A0315 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../JuceLibraryCode/modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; - 4F052A9DD4EFD3C761C7EBA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; }; - 4F129F3B2CD7B03E97C2F168 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInputSource.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInputSource.h"; sourceTree = "SOURCE_ROOT"; }; - 4F5572380B51C24AE8D34450 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryOutputStream.h"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; - 4F6365A0D2D51337151D85C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectTree_Group.h"; path = "../../Source/Project/jucer_ProjectTree_Group.h"; sourceTree = "SOURCE_ROOT"; }; - 4F687965FBE86EAFDB3ACFEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = "SOURCE_ROOT"; }; - 4F8DCA25AFAD089510C8B48B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadower.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_DropShadower.h"; sourceTree = "SOURCE_ROOT"; }; - 5017AF048B9A8F840DA442A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; }; - 502A6F378DA7D0BED1380D86 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AlertWindow.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_AlertWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; - 50498FF6EA3901CBD58223B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ObjectTypes.h"; path = "../../Source/ComponentEditor/jucer_ObjectTypes.h"; sourceTree = "SOURCE_ROOT"; }; - 507C2DFBFDA8AB08F71ED82D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 5091B14CC87C6238CF044258 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ElementSiblingComponent.h"; path = "../../Source/ComponentEditor/paintelements/jucer_ElementSiblingComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 513AF2A4DB37CC6F47E6CEF0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectanglePlacement.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/placement/juce_RectanglePlacement.h"; sourceTree = "SOURCE_ROOT"; }; - 514B0E8E2796ACE7385F6717 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AbstractFifo.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_AbstractFifo.h"; sourceTree = "SOURCE_ROOT"; }; - 515FF6E74826E3E3F7273621 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_Icons.h"; path = "../../Source/Utility/jucer_Icons.h"; sourceTree = "SOURCE_ROOT"; }; - 519269C6218CA35F731ECA61 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; - 51D9906830CE2006B74DBFCC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; - 51DAFE574A52F68CC4A10274 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferedInputStream.h"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_BufferedInputStream.h"; sourceTree = "SOURCE_ROOT"; }; - 523B197F8A3BCA94C58C6DEF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_URL.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/network/juce_URL.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5293C026D920F2E0E710447C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; }; - 529B0A44694A54ED99444A0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPool.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_StringPool.h"; sourceTree = "SOURCE_ROOT"; }; - 529B9F1BADEE58EA9F4F8C09 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; - 530ADBF1045867FE90EB8F1F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/native/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; - 53151B683E11F420203E61C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewCppFileTemplate.h"; path = "../../Source/BinaryData/jucer_NewCppFileTemplate.h"; sourceTree = "SOURCE_ROOT"; }; - 5377705718D6D60A6AA2848F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ActiveXComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5432B7B9B2CF2EAEC8B66D5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_UtilityFunctions.h"; path = "../../Source/ComponentEditor/jucer_UtilityFunctions.h"; sourceTree = "SOURCE_ROOT"; }; - 54652695DEEBAB24E462DDD9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TimeSliceThread.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_TimeSliceThread.cpp"; sourceTree = "SOURCE_ROOT"; }; - 553725A0E3A391651ED1731E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FileHelpers.h"; path = "../../Source/Utility/jucer_FileHelpers.h"; sourceTree = "SOURCE_ROOT"; }; - 553F3388AADBF8B529B78824 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; }; - 55A56A4C2EC5DECEC307EC37 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 55B79C48660935077095DBFD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableText.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableText.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5603954CFF21E81C86CCA1CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPosition.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_AnimatedPosition.h"; sourceTree = "SOURCE_ROOT"; }; - 563091B0916AD9AAA36C7DC5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_OpenDocumentManager.h"; path = "../../Source/Application/jucer_OpenDocumentManager.h"; sourceTree = "SOURCE_ROOT"; }; - 5659718DF6BD054B2B0A875C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_SystemStats.mm"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_mac_SystemStats.mm"; sourceTree = "SOURCE_ROOT"; }; - 56ECDE6643205406C32D1CE8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandManager.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h"; sourceTree = "SOURCE_ROOT"; }; - 576D62C0C9C1BA4B7A514721 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PositionPropertyBase.h"; path = "../../Source/ComponentEditor/properties/jucer_PositionPropertyBase.h"; sourceTree = "SOURCE_ROOT"; }; - 5797A65A441D030729C6E886 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTimer.h"; path = "../../../JuceLibraryCode/modules/juce_events/timers/juce_MultiTimer.h"; sourceTree = "SOURCE_ROOT"; }; - 5801B222830CA1E1006968BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; }; - 5805FE3FCA0B3CD8E2851774 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; }; - 58139D8D454051C59E77609B = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = ../../Source/BinaryData/RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; }; - 5823F1EE0F39AE16B560665A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5852830ECC222BA36A30EC20 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewFileWizard.h"; path = "../../Source/Project/jucer_NewFileWizard.h"; sourceTree = "SOURCE_ROOT"; }; - 58FA9E2B67AED7330158A903 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V2.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h"; sourceTree = "SOURCE_ROOT"; }; - 5909E278D645E1F91C0AE2BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; - 599957E884512B8314720BBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInactivityDetector.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h"; sourceTree = "SOURCE_ROOT"; }; - 5A11499F36DB882429253BA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageConvolutionKernel.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5B28BE68400342E97C084ACC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5B45BF234C7184BE28C59741 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TopLevelWindow.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5B8805BE8EFB29BFC7BD6D31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LiveConstantEditor.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_LiveConstantEditor.h"; sourceTree = "SOURCE_ROOT"; }; - 5B9EE26978797CC153F5E24F = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; - 5BDAE5FD683C0005A609495E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TimeSliceThread.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_TimeSliceThread.h"; sourceTree = "SOURCE_ROOT"; }; - 5BE9E1B6197D01AB97288253 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipWindow.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TooltipWindow.h"; sourceTree = "SOURCE_ROOT"; }; - 5C454FECFF7234355CEA17D4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiDocumentPanel.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h"; sourceTree = "SOURCE_ROOT"; }; - 5C6893F610657B9383F9333F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5C96DDE9CD90B82EA3CD6ED8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableObjectResizer.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5CD44EFDD7BA487CDF41760A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5CE5E5132CEFADC6D48ECB08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationProperties.cpp"; path = "../../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5D33FED578ADEEBAA8A4CFED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Fonts.mm"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_Fonts.mm"; sourceTree = "SOURCE_ROOT"; }; - 5D77828FECF00CF108E16599 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; }; - 5D9E7814B713670624F0028F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentTypeHandler.h"; path = "../../Source/ComponentEditor/components/jucer_ComponentTypeHandler.h"; sourceTree = "SOURCE_ROOT"; }; - 5EA02C28A509FAC9D2561AC5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemStats.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/system/juce_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; - 5EAA527023FD40745056F13B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; }; - 5EE461C6611D3669B36F639D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; }; - 5F4AF4400A9511B74E2425EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; }; - 5F4F4EAB042F2730F94A1CEA = {isa = PBXFileReference; lastKnownFileType = text.txt; name = AudioPluginXCodeScript.txt; path = ../../Source/BinaryData/AudioPluginXCodeScript.txt; sourceTree = "SOURCE_ROOT"; }; - 5F6584B675E30761521A9F42 = {isa = PBXFileReference; lastKnownFileType = file.xml; name = "colourscheme_light.xml"; path = "../../Source/BinaryData/colourscheme_light.xml"; sourceTree = "SOURCE_ROOT"; }; - 5F99D905AAF0C3F89CEAD965 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AttributedString.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_AttributedString.h"; sourceTree = "SOURCE_ROOT"; }; - 5FDE1D586B6984E67E3B1E19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawablePath.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawablePath.h"; sourceTree = "SOURCE_ROOT"; }; - 60138E309DBA8366F9AA83A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; - 60285932750263E48A18908C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandManager.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp"; sourceTree = "SOURCE_ROOT"; }; - 6059BA2EC2D80F1A58D047A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 61096C79B4C094699E9ED296 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Files.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_android_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; - 61151BEBE0F7E79DFA313076 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemPalette.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h"; sourceTree = "SOURCE_ROOT"; }; - 61538AD86AB82CE59EF6C68D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; - 61804EF1D5DC1451EBDAF6C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertySet.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_PropertySet.h"; sourceTree = "SOURCE_ROOT"; }; - 61A6870CF7A0DE01A70799B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseListener.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.h"; sourceTree = "SOURCE_ROOT"; }; - 61BE37E2B26C25056D9E8FE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewComponentTemplate.cpp"; path = "../../Source/BinaryData/jucer_NewComponentTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; - 61F8ED9B6C0D09E2665531D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; }; - 62112F8E435A750E1D2B28E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SplashScreen.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SplashScreen.h"; sourceTree = "SOURCE_ROOT"; }; - 6245DA2AC30B91552C12AD1F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF8.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF8.h"; sourceTree = "SOURCE_ROOT"; }; - 630428D04F157F7162C05D59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawablePath.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawablePath.cpp"; sourceTree = "SOURCE_ROOT"; }; - 631983AA62673015F8D7453B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_StoredSettings.cpp"; path = "../../Source/Utility/jucer_StoredSettings.cpp"; sourceTree = "SOURCE_ROOT"; }; - 633CC0CEF05B3ADCEEE1325E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Threads.mm"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_mac_Threads.mm"; sourceTree = "SOURCE_ROOT"; }; - 6350DFE5844B6CB31FB54A80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsHelpers.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"; sourceTree = "SOURCE_ROOT"; }; - 63717F00538E1367E2B9D812 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Button.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_Button.h"; sourceTree = "SOURCE_ROOT"; }; - 63754DF4DA5063BF038C359B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Network.mm"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_mac_Network.mm"; sourceTree = "SOURCE_ROOT"; }; - 63A4A00461C033BC464E4D34 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; - 641338764B8C715715DA7351 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; }; - 641B57E5FAE6BEFDB6462921 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceEditorPanel.h"; path = "../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.h"; sourceTree = "SOURCE_ROOT"; }; - 64520235EF5529F8C0E4A9A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; }; - 647EBD8D1EAD21592951DD9B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Line.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Line.h"; sourceTree = "SOURCE_ROOT"; }; - 64EDFDAE0755DC1451F181B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OptionalScopedPointer.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_OptionalScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; - 659B75A15D70B8FE57D1A1BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Toolbar.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Toolbar.h"; sourceTree = "SOURCE_ROOT"; }; - 65C498761CE166072A202AA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentTypeHandler.cpp"; path = "../../Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp"; sourceTree = "SOURCE_ROOT"; }; - 65E82ADF9AEE696576F43E92 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentMovementWatcher.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h"; sourceTree = "SOURCE_ROOT"; }; - 65F4749184C84C2FDBB4C305 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_AudioPluginFilterTemplate.cpp"; path = "../../Source/BinaryData/jucer_AudioPluginFilterTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; - 662C76394C5D1B56766FAFD9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentDocument.cpp"; path = "../../Source/ComponentEditor/documents/jucer_ComponentDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; - 66448E472FD5BB3D34B1509B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Messaging.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/native/juce_android_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; - 665EDD760E47A6AD1A1DBC2D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MD5.h"; path = "../../../JuceLibraryCode/modules/juce_cryptography/hashing/juce_MD5.h"; sourceTree = "SOURCE_ROOT"; }; - 6678E9B3EEACAD47F438B264 = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; }; - 668D7FDE00212229DFCB2175 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 66B49F08C5EC3E4974825FF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintRoutine.h"; path = "../../Source/ComponentEditor/jucer_PaintRoutine.h"; sourceTree = "SOURCE_ROOT"; }; - 66B4C39694799AC85ADDBECC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutManager.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp"; sourceTree = "SOURCE_ROOT"; }; - 6737B22BED56A0544E39FD15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileDragAndDropTarget.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; - 67FF4A3F3E1CD9583EABE1F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CPlusPlusCodeTokeniser.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; - 68077882A46E2C4E398E4C99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; }; - 68164EA5DFF5CE5AC2402670 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OutputStream.h"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_OutputStream.h"; sourceTree = "SOURCE_ROOT"; }; - 689996FF463D52FEF125AFF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; }; - 69A1792C863C7957A80F6945 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DeletedAtShutdown.h"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_DeletedAtShutdown.h"; sourceTree = "SOURCE_ROOT"; }; - 69A5D13490A62DAE9A7D5A22 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewProjectWizard.cpp"; path = "../../Source/Project/jucer_NewProjectWizard.cpp"; sourceTree = "SOURCE_ROOT"; }; - 69BB2D7A2EDAB1C87EA1F688 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; }; - 69F318BBA51FA30B777135B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditorKeyMapper.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h"; sourceTree = "SOURCE_ROOT"; }; - 6A337C69A928E3CE79C55457 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentChoiceProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_ComponentChoiceProperty.h"; sourceTree = "SOURCE_ROOT"; }; - 6AC17B5D88D0ADBF77420048 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NativeMessageBox.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_NativeMessageBox.h"; sourceTree = "SOURCE_ROOT"; }; - 6AC5756EBCB78FD82C15B829 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; - 6AC88EFC247C225CC5C11A43 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_BinaryResources.h"; path = "../../Source/ComponentEditor/jucer_BinaryResources.h"; sourceTree = "SOURCE_ROOT"; }; - 6C25EB12F6DB9F5225E75667 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageButton.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ImageButton.cpp"; sourceTree = "SOURCE_ROOT"; }; - 6C7A1929978639A482D5096D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TemporaryFile.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_TemporaryFile.cpp"; sourceTree = "SOURCE_ROOT"; }; - 6C867E1E3FEC31970950C620 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_CommonFile.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_linux_CommonFile.cpp"; sourceTree = "SOURCE_ROOT"; }; - 6CA3455CFAA1A52891F55CEF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; - 6DB44C43D1260559163A47F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryBlock.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_MemoryBlock.cpp"; sourceTree = "SOURCE_ROOT"; }; - 6E1D22B93CCB47AB339085E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadWithProgressWindow.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; - 6E2B6FE06BE3735AA969B526 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableHeaderComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 6E6140969908E7619F858740 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_CommonHeaders.h"; path = "../../Source/Application/jucer_CommonHeaders.h"; sourceTree = "SOURCE_ROOT"; }; - 6E7353DFEA8825B515049ABB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_Android.h"; path = "../../Source/Project Saving/jucer_ProjectExport_Android.h"; sourceTree = "SOURCE_ROOT"; }; - 6ED2213CA4E7E418E74A91E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadPool.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_ThreadPool.cpp"; sourceTree = "SOURCE_ROOT"; }; - 6F2DEA817E140C2659915138 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleMessageComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 6F4A2CF770F9E789E695825E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; - 6FB8B11C25BB74994A407113 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; - 700138BDDB27754A06B56C87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TreeView.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TreeView.cpp"; sourceTree = "SOURCE_ROOT"; }; - 700F6188EAA73DD57767694F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ShapeButton.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ShapeButton.h"; sourceTree = "SOURCE_ROOT"; }; - 7038159E5F04B3C75B6A7655 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PNGLoader.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/image_formats/juce_PNGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; - 70C4E93E7132BEEDDABFDA10 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JSON.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/javascript/juce_JSON.cpp"; sourceTree = "SOURCE_ROOT"; }; - 7211101FFA28400ADBB1D47A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_Module.h"; path = "../../Source/Project/jucer_Module.h"; sourceTree = "SOURCE_ROOT"; }; - 727511F6927A7B2602A6C689 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GroupComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_GroupComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 72A66FD9571871FFB455F8B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; }; - 72BB08B37FC311C133A01F95 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Javascript.h"; path = "../../../JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.h"; sourceTree = "SOURCE_ROOT"; }; - 72EC62B05E134F85761E642E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; }; - 73425A7FACB8FEE3D7A7C567 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathStrokeType.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathStrokeType.h"; sourceTree = "SOURCE_ROOT"; }; - 73D0EA57406DF9583EE8FB3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileFilter.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileFilter.h"; sourceTree = "SOURCE_ROOT"; }; - 742B8388A246A9E984457C7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CarbonViewWrapperComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 75087C822B7871FA849D2909 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableCornerComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 7545BFF1C7C857A810B0483D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; - 756D2E74350285D4082EFD8E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PerformanceCounter.h"; path = "../../../JuceLibraryCode/modules/juce_core/time/juce_PerformanceCounter.h"; sourceTree = "SOURCE_ROOT"; }; - 7577BF4DE64CD865088A612E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AttributedString.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_AttributedString.cpp"; sourceTree = "SOURCE_ROOT"; }; - 760A535A2680C8B3C44B59C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Font.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Font.cpp"; sourceTree = "SOURCE_ROOT"; }; - 76E2E826701240CDD4DEDA57 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_GraphicsContext.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_android_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; - 76EF37EBCCA75161A3561F9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DragAndDropContainer.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp"; sourceTree = "SOURCE_ROOT"; }; - 785740092163D40EE36BDA5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Typeface.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Typeface.cpp"; sourceTree = "SOURCE_ROOT"; }; - 786095D2FAF63CBC05B170C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePoint.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePoint.h"; sourceTree = "SOURCE_ROOT"; }; - 7861B7ACECC987D58C7D0309 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedWriteLock.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_ScopedWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; - 786BAF436828865F45314440 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElement.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElement.h"; sourceTree = "SOURCE_ROOT"; }; - 78CA0E0F336229E2E2F111B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_SourceCodeEditor.h"; path = "../../Source/Code Editor/jucer_SourceCodeEditor.h"; sourceTree = "SOURCE_ROOT"; }; - 78D0DBC4798FF040FDB90F6D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_GeneratedCode.cpp"; path = "../../Source/ComponentEditor/jucer_GeneratedCode.cpp"; sourceTree = "SOURCE_ROOT"; }; - 79366BF7CA160E7EFC7823C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInactivityDetector.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp"; sourceTree = "SOURCE_ROOT"; }; - 79DF7512BC6437E5E29E3CFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertiesFile.cpp"; path = "../../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp"; sourceTree = "SOURCE_ROOT"; }; - 7A3E96D22F1C9EB4C739834F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PointComponent.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PointComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 7AEAEEF9959046D9827CCB56 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentPeer.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp"; sourceTree = "SOURCE_ROOT"; }; - 7B4E33B1E04139F359FB484B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ConfigTree_Exporter.h"; path = "../../Source/Project/jucer_ConfigTree_Exporter.h"; sourceTree = "SOURCE_ROOT"; }; - 7BB3AB4907661D6FED799B7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentMovementWatcher.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp"; sourceTree = "SOURCE_ROOT"; }; - 7BBA8AF8E7872672F190C1C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; }; - 7BD4BCAA20B1ACED28EBBFD9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; - 7BD8AE7287AB53880575A757 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_Drawable.cpp"; sourceTree = "SOURCE_ROOT"; }; - 7C0528B4912955DA59C28356 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_URL.h"; path = "../../../JuceLibraryCode/modules/juce_core/network/juce_URL.h"; sourceTree = "SOURCE_ROOT"; }; - 7D33879BE42FD18DA0E7833E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; - 7D6B19FB1AAA04D27716457B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CaretComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 7DBCC7A6E5B251DA94AB0EE0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableRectangle.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; - 7E1CE53CFD909089387910AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HeapBlock.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_HeapBlock.h"; sourceTree = "SOURCE_ROOT"; }; - 7E47A29DD9817618F48068FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableEdgeComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 7E8730C293CF253B56930440 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableImage.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp"; sourceTree = "SOURCE_ROOT"; }; - 7F3AE35521DFE092953385B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPathListComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 800206C482A2C7E62682C324 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReadWriteLock.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_ReadWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; - 800B30FB2437B98A1423838A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlElement.h"; path = "../../../JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.h"; sourceTree = "SOURCE_ROOT"; }; - 801143A09B8A467EA47EBA27 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextLayout.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_TextLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; - 8090981F07A76E465DAAADF4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ValueSourceHelpers.h"; path = "../../Source/Utility/jucer_ValueSourceHelpers.h"; sourceTree = "SOURCE_ROOT"; }; - 8138A55052E9FC27284B74DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FontPropertyComponent.h"; path = "../../Source/ComponentEditor/properties/jucer_FontPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 814A077ED7A54254415C309C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/application/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; }; - 81704510C0CA45994B69AF05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TopLevelWindow.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TopLevelWindow.h"; sourceTree = "SOURCE_ROOT"; }; - 81A3DED7F13085DF8C8190AB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Result.h"; path = "../../../JuceLibraryCode/modules/juce_core/misc/juce_Result.h"; sourceTree = "SOURCE_ROOT"; }; - 820291543BF93243B718F0EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JucerTreeViewBase.h"; path = "../../Source/Utility/jucer_JucerTreeViewBase.h"; sourceTree = "SOURCE_ROOT"; }; - 8216291F3E0D0926D64AD98C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferedInputStream.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_BufferedInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; - 822A59FE23E0E962993EFF1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Windowing.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_android_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; - 825F21A8A32CC0FD20B845A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 82976E18712BAE638A132F02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; }; - 82C7BF9F5E863E647438A8AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; - 83C7547CCAFCBB88F791FED8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PopupMenu.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_PopupMenu.h"; sourceTree = "SOURCE_ROOT"; }; - 84493A7AD6B0398B732461FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableImage.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableImage.h"; sourceTree = "SOURCE_ROOT"; }; - 849641B50DB4AE6CCA1C543F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ElementComparator.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_ElementComparator.h"; sourceTree = "SOURCE_ROOT"; }; - 84BC9171F02182D3AFD04F66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RecentlyOpenedFilesList.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp"; sourceTree = "SOURCE_ROOT"; }; - 84E06858791DF81E37B9A484 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; }; - 84EB1282EE3C5F3A1DF70A54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TooltipWindow.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; - 8531F4060FE4BEBEC2E8EF9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeParallelogram.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h"; sourceTree = "SOURCE_ROOT"; }; - 85B2B84227B39C31FE9D790A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; }; - 85B48563B4437E1E27ACABAD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConnectedChildProcess.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; - 865F57EEFDD6F194FCE3FD8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathIterator.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; - 867952C0062DAA52FE4345B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DocumentWindow.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_DocumentWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; - 8681C46D7B7D05BEEB56E44E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; - 86E468DE6556BB2AD76A3D80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectContentComponent.cpp"; path = "../../Source/Project/jucer_ProjectContentComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 86E8A40E5A83781A8478454D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_MainTemplate_Window.cpp"; path = "../../Source/BinaryData/jucer_MainTemplate_Window.cpp"; sourceTree = "SOURCE_ROOT"; }; - 86EC32D1F0A4D7678B298631 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Threads.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_linux_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; - 8702F43110E4CCA5E5F827F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = "SOURCE_ROOT"; }; - 87B65D3DBFD7D35B15010226 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileListComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 87C711AFE0DEEC1FA8AD9465 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Point.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Point.h"; sourceTree = "SOURCE_ROOT"; }; - 880D1F031B50F965A56B7240 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colours.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/colour/juce_Colours.cpp"; sourceTree = "SOURCE_ROOT"; }; - 88332B74FC9B9BE2F60D7EAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPDecompressorInputStream.h"; path = "../../../JuceLibraryCode/modules/juce_core/zip/juce_GZIPDecompressorInputStream.h"; sourceTree = "SOURCE_ROOT"; }; - 8887ADA2A339C0BD9AFF83DA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertiesFile.h"; path = "../../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_PropertiesFile.h"; sourceTree = "SOURCE_ROOT"; }; - 88E1573706105D51541F4CA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SelectedItemSet.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_SelectedItemSet.h"; sourceTree = "SOURCE_ROOT"; }; - 8B2E98629FB118FAAB8E2476 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; - 8B5073191880BFFDF8B3BE6E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableBorderComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 8C07D2E980420174DF513BEF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextDiff.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_TextDiff.cpp"; sourceTree = "SOURCE_ROOT"; }; - 8C48F6C90CB6D2CBB19511B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; - 8C52A3DDA62A746AA7A68535 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Main.cpp"; path = "../../Source/Application/jucer_Main.cpp"; sourceTree = "SOURCE_ROOT"; }; - 8D89602169EF2FB7E38F8C0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PreferencesPanel.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; - 8E673D43C2CD68894A10B99D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MouseCursor.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_MouseCursor.mm"; sourceTree = "SOURCE_ROOT"; }; - 8EE709A982B89A4C752303BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; }; - 8F14D66EAF9B6219C5D1C510 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MACAddress.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/network/juce_MACAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; - 8F30A53C7FE4BC65171FB3E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JucerDocument.h"; path = "../../Source/ComponentEditor/jucer_JucerDocument.h"; sourceTree = "SOURCE_ROOT"; }; - 8F355E9A0D4E3B4DF00E7BA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageCache.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageCache.h"; sourceTree = "SOURCE_ROOT"; }; - 8F8BF1A7130D858E0A239F9E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ConfigTree_Base.h"; path = "../../Source/Project/jucer_ConfigTree_Base.h"; sourceTree = "SOURCE_ROOT"; }; - 9069981E414A631B036CC9AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_MainWindow.cpp"; path = "../../Source/Application/jucer_MainWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9091730D608EEEA35977BC1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutManager.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h"; sourceTree = "SOURCE_ROOT"; }; - 909FCA929A162A919ABF6575 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableComposite.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp"; sourceTree = "SOURCE_ROOT"; }; - 90B9A4673FDC35841E5D4562 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_core.h"; path = "../../../JuceLibraryCode/modules/juce_core/juce_core.h"; sourceTree = "SOURCE_ROOT"; }; - 914ADDB50ED7365F08BA91F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_CodeHelpers.h"; path = "../../Source/Utility/jucer_CodeHelpers.h"; sourceTree = "SOURCE_ROOT"; }; - 914C0B02F52FA4C06116EDB1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPressMappingSet.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h"; sourceTree = "SOURCE_ROOT"; }; - 9153965AAA76A86DFCAEE86E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedFile.h"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_MemoryMappedFile.h"; sourceTree = "SOURCE_ROOT"; }; - 91A9050F591F2E03EA96203A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyboardFocusTraverser.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp"; sourceTree = "SOURCE_ROOT"; }; - 921752D9B004A15973DDF56F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_TestComponent.cpp"; path = "../../Source/ComponentEditor/ui/jucer_TestComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 921FBD47F9842396F1CB22ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Windowing.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; - 923B69234C15988DFF1E8423 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_ASCII.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_CharPointer_ASCII.h"; sourceTree = "SOURCE_ROOT"; }; - 9245B8936083D87061E4FE15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationBase.h"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_ApplicationBase.h"; sourceTree = "SOURCE_ROOT"; }; - 92B6276B30F89F742E78A265 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HighResolutionTimer.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_HighResolutionTimer.h"; sourceTree = "SOURCE_ROOT"; }; - 92BE7C40FE77D34FFF39D9BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadower.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_DropShadower.cpp"; sourceTree = "SOURCE_ROOT"; }; - 92E4C9A69A2DAD900D128A02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HyperlinkButton.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp"; sourceTree = "SOURCE_ROOT"; }; - 92F91DC29B64AD85B1F508BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GenericComponentHandler.h"; path = "../../Source/ComponentEditor/components/jucer_GenericComponentHandler.h"; sourceTree = "SOURCE_ROOT"; }; - 93B419190CCE92ACAB1ED25B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ColouredElement.cpp"; path = "../../Source/ComponentEditor/paintelements/jucer_ColouredElement.cpp"; sourceTree = "SOURCE_ROOT"; }; - 93B474F28D09D858DE16E881 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; }; - 93C5BEADA1AB1CFF7B167D2F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Random.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/maths/juce_Random.cpp"; sourceTree = "SOURCE_ROOT"; }; - 93D03B2BC76998A3BDA747E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_AudioPluginModule.h"; path = "../../Source/Project/jucer_AudioPluginModule.h"; sourceTree = "SOURCE_ROOT"; }; - 94232610F41512C7040EDA38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 945A4B296E9562BEFF95884A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTree.h"; path = "../../../JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTree.h"; sourceTree = "SOURCE_ROOT"; }; - 94A8C75647A8777AC35F13FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Threads.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_android_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; - 94E38DB823EBBA437181682F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../JuceLibraryCode/modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; - 951128CA33CCDEF570436B1C = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = "SOURCE_ROOT"; }; - 95220AF02A9BEC790D84413E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9559DA09C937A41B88227D80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 95604CB3BD2C7745FD8FDB74 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WaitableEvent.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_WaitableEvent.h"; sourceTree = "SOURCE_ROOT"; }; - 957D4AC1FE338B82C790FDF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LeakedObjectDetector.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_LeakedObjectDetector.h"; sourceTree = "SOURCE_ROOT"; }; - 95A64B8A811BB2D78C6F13B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; - 95BAFFF3DDCB31F1E4F5F807 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colour.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/colour/juce_Colour.h"; sourceTree = "SOURCE_ROOT"; }; - 95CBFF7351F89C117E30292A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextLayout.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_TextLayout.h"; sourceTree = "SOURCE_ROOT"; }; - 963891BF1C9BC566FCF433B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnection.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnection.cpp"; sourceTree = "SOURCE_ROOT"; }; - 963E0740B7B4D59EF2D16740 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentTemplate.h"; path = "../../Source/BinaryData/jucer_ComponentTemplate.h"; sourceTree = "SOURCE_ROOT"; }; - 9683B04CA3BD7F73E8236FE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ContentCompTemplate.cpp"; path = "../../Source/BinaryData/jucer_ContentCompTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; - 96BD2AC4C892C245E04B8A93 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; - 97227974323F8526EB062F78 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooserDialogBox.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp"; sourceTree = "SOURCE_ROOT"; }; - 974B862C51DA9A16CBBB3A29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_XCode.h"; path = "../../Source/Project Saving/jucer_ProjectExport_XCode.h"; sourceTree = "SOURCE_ROOT"; }; - 97C816B1B6B7FBC38DF10303 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; }; - 97E75A598791645465FEDCE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_EditingPanelBase.h"; path = "../../Source/ComponentEditor/ui/jucer_EditingPanelBase.h"; sourceTree = "SOURCE_ROOT"; }; - 981A11A17B5DD50BC2A69F33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeEditorComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 984CCFC22599870F2BC0611E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseEvent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseEvent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 987490B430B80B4FA2792176 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModalComponentManager.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_ModalComponentManager.cpp"; sourceTree = "SOURCE_ROOT"; }; - 987C3D5A7CC55FB19AD24294 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutResizerBar.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9899685BD109C2475BA4F8A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageManager.h"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.h"; sourceTree = "SOURCE_ROOT"; }; - 98F42686D9DAC974F2514217 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_EditingPanelBase.cpp"; path = "../../Source/ComponentEditor/ui/jucer_EditingPanelBase.cpp"; sourceTree = "SOURCE_ROOT"; }; - 993AD03D61870459F867B2F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandID.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandID.h"; sourceTree = "SOURCE_ROOT"; }; - 99623EB9527119388EEDC8E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9993F2BAA90AA22D16B7F40B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../JuceLibraryCode/modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; - 9A154A0F904C15BF6E1253F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileFilter.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9A7D5A94730758251DC8E4FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryIterator.h"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_DirectoryIterator.h"; sourceTree = "SOURCE_ROOT"; }; - 9B3076A1D57D614DB7B4657E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; }; - 9B4AAEAD95B93FA8F2348E27 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Fonts.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_linux_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9B9CAD20E1243B4351B4C8D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_CodeHelpers.cpp"; path = "../../Source/Utility/jucer_CodeHelpers.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9BC8AE609A07657CEF587548 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_StoredSettings.h"; path = "../../Source/Utility/jucer_StoredSettings.h"; sourceTree = "SOURCE_ROOT"; }; - 9C04F9680F82BF279D528688 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectSaver.h"; path = "../../Source/Project Saving/jucer_ProjectSaver.h"; sourceTree = "SOURCE_ROOT"; }; - 9C1D8A8FAA2439A8EA2DD800 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MD5.cpp"; path = "../../../JuceLibraryCode/modules/juce_cryptography/hashing/juce_MD5.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9C51394634F102DEBBE6C9EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementText.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementText.h"; sourceTree = "SOURCE_ROOT"; }; - 9C7FA58D223674C4C2AC6595 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_JucerDocumentEditor.cpp"; path = "../../Source/ComponentEditor/ui/jucer_JucerDocumentEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9C803826E5E3FDB1B37660D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentDocument.h"; path = "../../Source/ComponentEditor/documents/jucer_ComponentDocument.h"; sourceTree = "SOURCE_ROOT"; }; - 9CADF9A1F79D9D1ECC7147E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9D7689451732AF8333402B3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ObjectTypes.cpp"; path = "../../Source/ComponentEditor/jucer_ObjectTypes.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9DBDA8C274E693DF449FF525 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryInputStream.h"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryInputStream.h"; sourceTree = "SOURCE_ROOT"; }; - 9DBE1CE382EE797178B3D35F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Message.h"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_Message.h"; sourceTree = "SOURCE_ROOT"; }; - 9E6BAEF28A55F7F349A15DDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../JuceLibraryCode/modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; - 9EDDEEBCF410FDF5B96FAD65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableObjectResizer.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h"; sourceTree = "SOURCE_ROOT"; }; - 9EF583A6201DBC813C2F63C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_BinaryResources.cpp"; path = "../../Source/ComponentEditor/jucer_BinaryResources.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9EFCD465B3A75D9E2556DA0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9EFFD9F226690A84BBA574C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - 9F41F3338BF00D0FC74C6390 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TestComponent.h"; path = "../../Source/ComponentEditor/ui/jucer_TestComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 9F58502C5ADE97059BD8BFE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePointPath.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePointPath.h"; sourceTree = "SOURCE_ROOT"; }; - 9F75811FE7B5F8D1321BEC69 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ConfigTree_Modules.h"; path = "../../Source/Project/jucer_ConfigTree_Modules.h"; sourceTree = "SOURCE_ROOT"; }; - A039067FA15840674DB4CA0B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; }; - A0951828C3BF47FA7E1E52F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ViewportHandler.h"; path = "../../Source/ComponentEditor/components/jucer_ViewportHandler.h"; sourceTree = "SOURCE_ROOT"; }; - A191412DDC58FCC5A67373FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentAnimator.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp"; sourceTree = "SOURCE_ROOT"; }; - A2B4202B1078374D5D0A2FA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlDocument.h"; path = "../../../JuceLibraryCode/modules/juce_core/xml/juce_XmlDocument.h"; sourceTree = "SOURCE_ROOT"; }; - A2F1EA2989EF154ADBFDC4C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; }; - A350F5C1C50024670090021B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; - A3632F10CD01DB5263F628F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ListBox.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; - A36D9A1D559944BB4EAF2F5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponentPeer.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; - A3A4DC7DB79039626E4A311C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; - A3AC7148A7357852CA7018AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Application.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/application/juce_Application.cpp"; sourceTree = "SOURCE_ROOT"; }; - A3F5671F82CBAC136EEA4D26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooser.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; - A42E6A76BCFC6504676EBE8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; - A51E4D49C37A60CC0BCE4246 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AppleRemote.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_AppleRemote.h"; sourceTree = "SOURCE_ROOT"; }; - A6B4EF8DBA1476D85FE0E927 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; }; - A6D3D648059361F5836DE280 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentListener.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_ComponentListener.cpp"; sourceTree = "SOURCE_ROOT"; }; - A73C997FBB6C26B632CBAE15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Primes.cpp"; path = "../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_Primes.cpp"; sourceTree = "SOURCE_ROOT"; }; - A7DD1B727D226AE589E87E4A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Uuid.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/misc/juce_Uuid.cpp"; sourceTree = "SOURCE_ROOT"; }; - A8C8924ADBF29D01FDFD62BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageFileFormat.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageFileFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; - A9208187F15083F4FC55E0E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; }; - A947623ED5EA00C6C3FD8EBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HyperlinkButton.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_HyperlinkButton.h"; sourceTree = "SOURCE_ROOT"; }; - A9888AA5368432DCA5F64910 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBoundsConstrainer.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp"; sourceTree = "SOURCE_ROOT"; }; - A99E772786C0A210E4CDF0D4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPathListComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - A9BAF0420FC4DC07011EA244 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeTokeniser.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; - AA4578A9110E724AB87DF869 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDiff.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_TextDiff.h"; sourceTree = "SOURCE_ROOT"; }; - AA8EED79F095953D2B5923B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentColourProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_ComponentColourProperty.h"; sourceTree = "SOURCE_ROOT"; }; - AAC42C49D961A534FE64882E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageListener.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_MessageListener.cpp"; sourceTree = "SOURCE_ROOT"; }; - ABD9D1389B5591B2303990F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; }; - AC544E614702255B972E1E8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemTrayIcon.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; - AC70D9D3E27592DD5D19B935 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileFilter.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_FileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; - AD828AEF8A826DCAD19095B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - AE1BC6DCCFC1A18E2ACE23F1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_MainTemplate_NoWindow.cpp"; path = "../../Source/BinaryData/jucer_MainTemplate_NoWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; - AF51A8DC8E67D8EB660AD6D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Value.h"; path = "../../../JuceLibraryCode/modules/juce_data_structures/values/juce_Value.h"; sourceTree = "SOURCE_ROOT"; }; - AF9453BB7F2479400D4A144B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringArray.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_StringArray.cpp"; sourceTree = "SOURCE_ROOT"; }; - AFEBD8423B07599B1DE175A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ModulesPanel.h"; path = "../../Source/Project/jucer_ModulesPanel.h"; sourceTree = "SOURCE_ROOT"; }; - AFF72BA2B130F3F9AC029080 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_AudioPluginEditorTemplate.h"; path = "../../Source/BinaryData/jucer_AudioPluginEditorTemplate.h"; sourceTree = "SOURCE_ROOT"; }; - AFFC3BBF8BBC82DD09B25EEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemClipboard.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_SystemClipboard.h"; sourceTree = "SOURCE_ROOT"; }; - B00F60201606F195058BB575 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ColourPropertyComponent.h"; path = "../../Source/ComponentEditor/properties/jucer_ColourPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; - B06C7C053DB0660CDA8B5C2C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintRoutinePanel.h"; path = "../../Source/ComponentEditor/ui/jucer_PaintRoutinePanel.h"; sourceTree = "SOURCE_ROOT"; }; - B15E33E7342F6EB4F95C9B1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_PaintRoutineEditor.cpp"; path = "../../Source/ComponentEditor/ui/jucer_PaintRoutineEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; - B18059D88300EB8EF703A82B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextButton.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_TextButton.cpp"; sourceTree = "SOURCE_ROOT"; }; - B1963F0D8C0046E54FD9E023 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ColouredElement.h"; path = "../../Source/ComponentEditor/paintelements/jucer_ColouredElement.h"; sourceTree = "SOURCE_ROOT"; }; - B1DF858F499D12D442679683 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseEvent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseEvent.h"; sourceTree = "SOURCE_ROOT"; }; - B271F77C266131705FF6F92B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_cryptography.h"; path = "../../../JuceLibraryCode/modules/juce_cryptography/juce_cryptography.h"; sourceTree = "SOURCE_ROOT"; }; - B290C6821BDC0912A94A1127 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; - B292B170AC30407623358E6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableListBox.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableListBox.h"; sourceTree = "SOURCE_ROOT"; }; - B2CEB1DE8F290AFCDE9585BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Random.h"; path = "../../../JuceLibraryCode/modules/juce_core/maths/juce_Random.h"; sourceTree = "SOURCE_ROOT"; }; - B388675858A6323C1A1F7BFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TreeView.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TreeView.h"; sourceTree = "SOURCE_ROOT"; }; - B420AC0E3CF485CCFFE5C625 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_MessageQueue.h"; path = "../../../JuceLibraryCode/modules/juce_events/native/juce_osx_MessageQueue.h"; sourceTree = "SOURCE_ROOT"; }; - B43D35488A61101480983DA3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; }; - B483D960309FAFC193F9CDA2 = {isa = PBXFileReference; lastKnownFileType = image.png; name = "juce_icon.png"; path = "../../Source/BinaryData/juce_icon.png"; sourceTree = "SOURCE_ROOT"; }; - B4E428E2D02619F18757BBF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../JuceLibraryCode/modules/juce_core/javascript/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; }; - B53BBDA475207303A77FAD40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemStats.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_linux_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; - B54CB8DDB5000BDCBDECD8BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextPropertyComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - B5F94A37629F841C6C2B4CA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedXLock.h"; path = "../../../JuceLibraryCode/modules/juce_events/native/juce_ScopedXLock.h"; sourceTree = "SOURCE_ROOT"; }; - B68B2E4185C6FDCEEE0DBA79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WeakReference.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_WeakReference.h"; sourceTree = "SOURCE_ROOT"; }; - B72DAC469A62BD52C86102E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../JuceLibraryCode/modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; - B741170E45D74F30B7D5CDDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentNameProperty.h"; path = "../../Source/ComponentEditor/components/jucer_ComponentNameProperty.h"; sourceTree = "SOURCE_ROOT"; }; - B7D930DDBE81040985D1B48C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsSoftwareRenderer.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h"; sourceTree = "SOURCE_ROOT"; }; - B8385E9A644BD3CD94876448 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectType.h"; path = "../../Source/Project/jucer_ProjectType.h"; sourceTree = "SOURCE_ROOT"; }; - B83E41BC9767A790F2D04403 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableButton.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_DrawableButton.cpp"; sourceTree = "SOURCE_ROOT"; }; - B895CACE6FF447C83DC7ABF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarButton.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToolbarButton.h"; sourceTree = "SOURCE_ROOT"; }; - B90DA9BF88AD7AA018CD1F6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; - B93A82D11582820D193C9131 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedValueSetter.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_ScopedValueSetter.h"; sourceTree = "SOURCE_ROOT"; }; - B941446353FA94BCE78D001D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; - B9B67E7AC6527BDB9D4D42D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourSelector.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_ColourSelector.h"; sourceTree = "SOURCE_ROOT"; }; - B9F917BA04B3A715B7E49128 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipClient.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_TooltipClient.h"; sourceTree = "SOURCE_ROOT"; }; - BA3CF913C966148DF5059C9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ActionBroadcaster.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; - BA61CF61BDB1194FF4A85DA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CallOutBox.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.cpp"; sourceTree = "SOURCE_ROOT"; }; - BA9B833DA92A957DB959CECC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponent.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; - BAB603B7CA702368B2513074 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedButtonBar.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp"; sourceTree = "SOURCE_ROOT"; }; - BAC2D13A5ED7622DD43BF752 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GraphicsContext.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; - BAC43B20E14A340CCF14119C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Project.cpp"; path = "../../Source/Project/jucer_Project.cpp"; sourceTree = "SOURCE_ROOT"; }; - BB72D9AA25D5D5B090F16513 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_events.mm"; path = "../../../JuceLibraryCode/modules/juce_events/juce_events.mm"; sourceTree = "SOURCE_ROOT"; }; - BBBBDB341B49EA3277A24D8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - BC629A17FC45C9D48E2A383F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; - BC975A241710644E779FAB84 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Justification.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/placement/juce_Justification.cpp"; sourceTree = "SOURCE_ROOT"; }; - BCB8D7D4B1AFA15D3ACEFCEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBuilder.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBuilder.h"; sourceTree = "SOURCE_ROOT"; }; - BCCFDFB2C02C4AA436C0ECF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_SliderHandler.h"; path = "../../Source/ComponentEditor/components/jucer_SliderHandler.h"; sourceTree = "SOURCE_ROOT"; }; - BDDD7A81586798621C6EF327 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; }; - BE0926F2599AC33A59DF23E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; }; - BE4A96EF54B366C811255141 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPCompressorOutputStream.h"; path = "../../../JuceLibraryCode/modules/juce_core/zip/juce_GZIPCompressorOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; - BE6E4546B1A6458DEA0C7FD4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_posix_NamedPipe.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_posix_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; - BE876A77E905E3C0D9B66450 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OldSchoolLookAndFeel.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; }; - BED52FDD3843979E898DA4CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_String.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_String.h"; sourceTree = "SOURCE_ROOT"; }; - BF09E9E179BA0B07203DC9FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; - BF1B82B8DD7429ECA96AD4C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPool.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_StringPool.cpp"; sourceTree = "SOURCE_ROOT"; }; - BF24E0D37EAD41130FE149A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; - BF3CEF080FA013E2778DCE90 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_Project.h"; path = "../../Source/Project/jucer_Project.h"; sourceTree = "SOURCE_ROOT"; }; - C017261AE701010986A93D34 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadWithProgressWindow.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h"; sourceTree = "SOURCE_ROOT"; }; - C07856C24F305E7D50660F67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; - C094F3B6A65A79A6DF87C9C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementGroup.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementGroup.h"; sourceTree = "SOURCE_ROOT"; }; - C159CA71B03DCB9D7BC31A4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedObject.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_ReferenceCountedObject.h"; sourceTree = "SOURCE_ROOT"; }; - C18696515B6681B033F06D44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; - C187718F7B9EBA88584B43F3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_PaintRoutine.cpp"; path = "../../Source/ComponentEditor/jucer_PaintRoutine.cpp"; sourceTree = "SOURCE_ROOT"; }; - C21AD85C35257A4B9A74D522 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnection.h"; path = "../../../JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnection.h"; sourceTree = "SOURCE_ROOT"; }; - C2EEEB5E55C76817AC291BF0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; }; - C43808AF23AC4F25CB26733D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; - C4B158D37FF6B3125BEED598 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlowEffect.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/effects/juce_GlowEffect.h"; sourceTree = "SOURCE_ROOT"; }; - C5424781C756A8FF3D66670D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemTrayIcon.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; - C68D8C25B8BD332BA1DFB32E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LiveConstantEditor.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; - C695512ADA3E687DD1E55C0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../JuceLibraryCode/modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; }; - C6ED030DED8F5A53636C4EBB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Path.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Path.cpp"; sourceTree = "SOURCE_ROOT"; }; - C7608A3967D9AB9481848F2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_DocumentEditorComponent.cpp"; path = "../../Source/Application/jucer_DocumentEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - C7790615097597DFBFBFADC8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinate.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h"; sourceTree = "SOURCE_ROOT"; }; - C7B2FE883FA1401854BEDE8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; }; - C7B47372A9D5970E3D9A5400 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GroupInformationComponent.h"; path = "../../Source/Project/jucer_GroupInformationComponent.h"; sourceTree = "SOURCE_ROOT"; }; - C7B6983AD1896535B9B98F40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageManager.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.cpp"; sourceTree = "SOURCE_ROOT"; }; - C7D4CFEA33205B2D33955B9E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; - C81BC495F7C4B665C8856AA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; - C82094E39B4C9B4DE35A7EB4 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; - C85BCA043B9CB378FA6876B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; }; - C89684A359852FD2B16D705A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; - C8A160E05C7F8F5CF534AC03 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionBroadcaster.h"; path = "../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; - C8A229ACD244F402C57286CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_MSVC.h"; path = "../../Source/Project Saving/jucer_ProjectExport_MSVC.h"; sourceTree = "SOURCE_ROOT"; }; - C8DED829D0662D34D09A0C5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; }; - C9441D8978D4B1F14F270228 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedComponent.h"; sourceTree = "SOURCE_ROOT"; }; - C9616830BB2474066AC8C910 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceFile.h"; path = "../../Source/Project Saving/jucer_ResourceFile.h"; sourceTree = "SOURCE_ROOT"; }; - C9CA4A5BF4D2A1109432BA49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoManager.h"; path = "../../../JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoManager.h"; sourceTree = "SOURCE_ROOT"; }; - CAC9FBFB722FE3DA7CE3BE12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Files.mm"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_mac_Files.mm"; sourceTree = "SOURCE_ROOT"; }; - CB19A2F9C480B0739BC1D9F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; }; - CB37D7E91B0DA0927BA435F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPress.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyPress.h"; sourceTree = "SOURCE_ROOT"; }; - CB5760497CA6F044DA18D3A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; }; - CCE50A531D751FD10817A9E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConnectedChildProcess.h"; path = "../../../JuceLibraryCode/modules/juce_events/interprocess/juce_ConnectedChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; - CD0146FF182F74D52D481EB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; }; - CD9FC835C7A1DE440792F5B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_BubbleComponent.h"; sourceTree = "SOURCE_ROOT"; }; - CE08955E457642C4D6DFBA30 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; - CE4A609A9FB2403D506B3068 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Slider.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Slider.cpp"; sourceTree = "SOURCE_ROOT"; }; - CF21D9DB3AEC0A4DCAB36A99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Icons.cpp"; path = "../../Source/Utility/jucer_Icons.cpp"; sourceTree = "SOURCE_ROOT"; }; - CF4BDE076A0E86E887C842BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ProgressBar.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ProgressBar.cpp"; sourceTree = "SOURCE_ROOT"; }; - CF4C51480A8E95AC5F107FF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BasicNativeHeaders.h"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_BasicNativeHeaders.h"; sourceTree = "SOURCE_ROOT"; }; - CF6C8BD0DA3D8CD4E99EBADA = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; - CF736AF0DD24273D1F1FF37A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePointPath.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp"; sourceTree = "SOURCE_ROOT"; }; - CF7F48D267805732933DF82C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; }; - CF8011B3C67B609032974DA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewCppFileTemplate.cpp"; path = "../../Source/BinaryData/jucer_NewCppFileTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; - CFBF253B95F793D399C7C7BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AffineTransform.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_AffineTransform.h"; sourceTree = "SOURCE_ROOT"; }; - D00F311BFC3C2625C457CB9B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; - D03B334EFDF780C2C0FE33B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_WebBrowserComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - D052CBF83BDE89CDEDD3CA53 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DynamicObject.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_DynamicObject.cpp"; sourceTree = "SOURCE_ROOT"; }; - D0B6A9AF3EC42C025B11894D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_FileChooser.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; - D0EB880DBD68B9C44734E26F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; }; - D10D51A0A2D63F38B4D86A60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceFile.cpp"; path = "../../Source/Project Saving/jucer_ResourceFile.cpp"; sourceTree = "SOURCE_ROOT"; }; - D1A54DEEAD15A98719002174 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AsyncUpdater.h"; path = "../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_AsyncUpdater.h"; sourceTree = "SOURCE_ROOT"; }; - D1B7039DE915ECD72000679E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OutputStream.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_OutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; - D1F9B0E9F5D54FE48BEB46EA = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; - D27D257731AF8F925F652C8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; - D2A888E0C5D10BE75BD69E46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; }; - D374DC78AAC02504576AA9B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GroupComponentHandler.h"; path = "../../Source/ComponentEditor/components/jucer_GroupComponentHandler.h"; sourceTree = "SOURCE_ROOT"; }; - D3C9856B677A34F8C60469F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiDocumentPanel.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; - D3E139185095C486DD3D61F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TranslationTool.h"; path = "../../Source/Utility/jucer_TranslationTool.h"; sourceTree = "SOURCE_ROOT"; }; - D409BCF0D1C42B2761F89C6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LuaCodeTokeniser.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; - D41524385F8D560212C9D798 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LassoComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_LassoComponent.h"; sourceTree = "SOURCE_ROOT"; }; - D439FCBFE0FCAA2C67548362 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - D526C38D581425949BA0E4AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FilePreviewComponent.h"; path = "../../Source/Application/jucer_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; - D52AF2D2AB5FD27AD5DFF753 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Socket.h"; path = "../../../JuceLibraryCode/modules/juce_core/network/juce_Socket.h"; sourceTree = "SOURCE_ROOT"; }; - D57E1008C51B8D4B9A70535F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentListener.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_ComponentListener.h"; sourceTree = "SOURCE_ROOT"; }; - D58E5FDB639B07A0B6350657 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LocalisedStrings.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_LocalisedStrings.cpp"; sourceTree = "SOURCE_ROOT"; }; - D6070A7CF3873DFD1B1A53A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_extra.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.h"; sourceTree = "SOURCE_ROOT"; }; - D61B5AB0906CF9228E8360BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - D6520F83A0AD0B5BC024CB9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; - D673EFEA126BD37BE8DD8D78 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; - D70400A648DD2EE1FB29ED0A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF16.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF16.h"; sourceTree = "SOURCE_ROOT"; }; - D7C052388BB7D6FAE4A15999 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; }; - D7F64C0E6B3CBA49A9F0341C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Font.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Font.h"; sourceTree = "SOURCE_ROOT"; }; - D8FA66DEA9117C2D0239B11B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedLock.h"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_ScopedLock.h"; sourceTree = "SOURCE_ROOT"; }; - D902B5961F78F2A6DFBF4B7F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UIViewComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/embedding/juce_UIViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; - D9F50E5D2A0644E9DF20B1BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IPAddress.h"; path = "../../../JuceLibraryCode/modules/juce_core/network/juce_IPAddress.h"; sourceTree = "SOURCE_ROOT"; }; - DA52CB613FB5AEB736624AB1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; - DABFA41975B51A33C19FD7C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlElement.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.cpp"; sourceTree = "SOURCE_ROOT"; }; - DADCCD453FA0BCBE7E423FAA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemFactory.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h"; sourceTree = "SOURCE_ROOT"; }; - DAF84A553D264705FA6EB6FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TreeViewHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TreeViewHandler.h"; sourceTree = "SOURCE_ROOT"; }; - DB5C7AA110B217372A52159A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandTarget.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp"; sourceTree = "SOURCE_ROOT"; }; - DBC8F8E3236577FB623E1F69 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Value.cpp"; path = "../../../JuceLibraryCode/modules/juce_data_structures/values/juce_Value.cpp"; sourceTree = "SOURCE_ROOT"; }; - DBE0CDE1B017190ABBFF557C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_CodeBlocks.h"; path = "../../Source/Project Saving/jucer_ProjectExport_CodeBlocks.h"; sourceTree = "SOURCE_ROOT"; }; - DD5E98AA79A9883B74F5D38A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SliderPropertyComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; - DD737A82676BCF9CD2F2B367 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_graphics.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/juce_graphics.h"; sourceTree = "SOURCE_ROOT"; }; - DD95F4D24DEADB6030D5959E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; }; - DF45CF7F287FC822F45A5AA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Label.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Label.h"; sourceTree = "SOURCE_ROOT"; }; - E0F9CA57E44F7F7E7E217E47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentUndoableAction.h"; path = "../../Source/ComponentEditor/components/jucer_ComponentUndoableAction.h"; sourceTree = "SOURCE_ROOT"; }; - E4BB22E27C5AA4B666F265BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TextButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TextButtonHandler.h"; sourceTree = "SOURCE_ROOT"; }; - E5D6C36496F5BC84D7213BE8 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - E60E28D1B7491047DEA236AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; }; - E65A820D34BF39478B7C5925 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_DocumentEditorComponent.h"; path = "../../Source/Application/jucer_DocumentEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; - E96597BBC6A98255B51B94DC = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; - 25F52316D256B4534BED16D1 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Introjucer.app; sourceTree = "BUILT_PRODUCTS_DIR"; }; - D0D8B580D0689FFF4B9B823B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_StrokeType.h"; path = "../../Source/ComponentEditor/paintelements/jucer_StrokeType.h"; sourceTree = "SOURCE_ROOT"; }; - D4444EC6342A2A7BC4F7BC46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentTextProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_ComponentTextProperty.h"; sourceTree = "SOURCE_ROOT"; }; - D87FC8F6834E9DC9C8E88B94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JustificationProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_JustificationProperty.h"; sourceTree = "SOURCE_ROOT"; }; - D92A6E9404A30EED32DCE4ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_RelativePositionedRectangle.h"; path = "../../Source/ComponentEditor/ui/jucer_RelativePositionedRectangle.h"; sourceTree = "SOURCE_ROOT"; }; - D96D764ABA74D392B9F7C30E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; }; - DA345D5B9DABD049F90DC96F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GeneratedCode.h"; path = "../../Source/ComponentEditor/jucer_GeneratedCode.h"; sourceTree = "SOURCE_ROOT"; }; - DC922C6A65D260C18E888E49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentTemplate.cpp"; path = "../../Source/BinaryData/jucer_ComponentTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; - DD36B6A35D7350B32D2BF727 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; }; - DDA9B189B27A9FA240CC04EA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SubregionStream.h"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_SubregionStream.h"; sourceTree = "SOURCE_ROOT"; }; - DDDAD9BCDC99DBAE63B106DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; }; - DDDCB9E999C4FF41EE6859DA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - DDF2C578191FFE07300541E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_extra.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.mm"; sourceTree = "SOURCE_ROOT"; }; - DEDF05B176E4165376AC6D4F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_HiddenMessageWindow.h"; path = "../../../JuceLibraryCode/modules/juce_events/native/juce_win32_HiddenMessageWindow.h"; sourceTree = "SOURCE_ROOT"; }; - DF12EEE63E6D19610B89CA22 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_ComSmartPtr.h"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_win32_ComSmartPtr.h"; sourceTree = "SOURCE_ROOT"; }; - DF1E044516CA91C20B31FB6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Logger.h"; path = "../../../JuceLibraryCode/modules/juce_core/logging/juce_Logger.h"; sourceTree = "SOURCE_ROOT"; }; - DF725A596B7BCD7520CC0A9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceEditorPanel.cpp"; path = "../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; - DF8FBA0269590E5FAC7FE213 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPDecompressorInputStream.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; - E0366FD0E45684229CBF9775 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Path.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Path.h"; sourceTree = "SOURCE_ROOT"; }; - E0E99D3CFACF9CB9B503EDD8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutResizerBar.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h"; sourceTree = "SOURCE_ROOT"; }; - E1139B64E290711F9DE2DCDE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DialogWindow.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_DialogWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; - E1D39D158E760B202DBEDA81 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleMessageComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h"; sourceTree = "SOURCE_ROOT"; }; - E224B3D37F624F7AE682E499 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CharacterFunctions.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_CharacterFunctions.cpp"; sourceTree = "SOURCE_ROOT"; }; - E2374E15D65425C4101237E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewComponentTemplate.h"; path = "../../Source/BinaryData/jucer_NewComponentTemplate.h"; sourceTree = "SOURCE_ROOT"; }; - E24325B47AEC8B77DDC456F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Component.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_Component.h"; sourceTree = "SOURCE_ROOT"; }; - E2E00F66C14EEAE78119C0C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../JuceLibraryCode/modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; - E3051371FE51A993DBFC9338 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; }; - E32210D5760697609D084C93 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RSAKey.h"; path = "../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_RSAKey.h"; sourceTree = "SOURCE_ROOT"; }; - E39C4DD3100879AC614060C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MACAddress.h"; path = "../../../JuceLibraryCode/modules/juce_core/network/juce_MACAddress.h"; sourceTree = "SOURCE_ROOT"; }; - E39CCC282936B2F3062E9143 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Time.h"; path = "../../../JuceLibraryCode/modules/juce_core/time/juce_Time.h"; sourceTree = "SOURCE_ROOT"; }; - E3E08397D63E4E96CECB2569 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; }; - E4389603AF8A3143883BFCE8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; - E44D93C93617D6314424CB46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../JuceLibraryCode/modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; - E5030E4FB09EEFDEC6E17F33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlyphArrangement.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_GlyphArrangement.h"; sourceTree = "SOURCE_ROOT"; }; - E509DD48975A90978E116EBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_basics.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h"; sourceTree = "SOURCE_ROOT"; }; - E5C0F0324C408196C1E3AB24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourGradient.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/colour/juce_ColourGradient.cpp"; sourceTree = "SOURCE_ROOT"; }; - E626D36E7158BA472EF89AD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; }; - E6697A0594C3625F9025FD3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_freetype_Fonts.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_freetype_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; - E69046467FD9DC88B664447B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_ObjCHelpers.h"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_osx_ObjCHelpers.h"; sourceTree = "SOURCE_ROOT"; }; - E691B76C2F16D0E4A2BFABC2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; }; - E6C8D5E6CB5649F8181F3663 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - E70CA21960A64CCB835725FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectType.cpp"; path = "../../Source/Project/jucer_ProjectType.cpp"; sourceTree = "SOURCE_ROOT"; }; - E76DA0073983CF90CCE4096B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPressMappingSet.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp"; sourceTree = "SOURCE_ROOT"; }; - E791EF4AE50CCD190A8BC5D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; }; - E794F8DCA1BD195F1D0BC64B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SplashScreen.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SplashScreen.cpp"; sourceTree = "SOURCE_ROOT"; }; - E83203CFAA037EF461E3ACBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedPipe.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/network/juce_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; - E85876BF1128CB4E29D7CB64 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PerformanceCounter.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/time/juce_PerformanceCounter.cpp"; sourceTree = "SOURCE_ROOT"; }; - EA362B80219C97D85ED267A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectangleList.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_RectangleList.cpp"; sourceTree = "SOURCE_ROOT"; }; - EA48567DDE6E64CF4DB9B23A = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../JuceLibraryCode/modules/juce_events/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; - EA5EA4BEAC60FE65FC18B26E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Memory.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_Memory.h"; sourceTree = "SOURCE_ROOT"; }; - EA8D7BB28F79E1545758D636 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GroupComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_GroupComponent.h"; sourceTree = "SOURCE_ROOT"; }; - EAA4FD2E9CB12F1B946D2A62 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; }; - EB1F11E213640441C36CDD21 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeEditorComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; - EB71BA07D6F667E69721E577 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GradientPointComponent.h"; path = "../../Source/ComponentEditor/paintelements/jucer_GradientPointComponent.h"; sourceTree = "SOURCE_ROOT"; }; - EBB34E4A7C7DE86F68EE7A7E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FilenameComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - EC1A0BD441203369A933D00C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; - EC2E7A527518F2A8F8DEC27C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../JuceLibraryCode/modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; }; - EC736CD3AAE2E052E7D95076 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../JuceLibraryCode/modules/juce_events/messages/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; }; - EE34B44EC8BF50DF2A1EADA6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePoint.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePoint.cpp"; sourceTree = "SOURCE_ROOT"; }; - EE690110171E1648FF2118B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_Application.h"; path = "../../Source/Application/jucer_Application.h"; sourceTree = "SOURCE_ROOT"; }; - EEA69803BC87FC7DF32A9816 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseCursor.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseCursor.cpp"; sourceTree = "SOURCE_ROOT"; }; - EEF2B5CF27493A0E5432F495 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; - EF24C96CD12FC8589756DEF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyMappingEditorComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - EF30A74B566A461A171BBF83 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentLayoutEditor.cpp"; path = "../../Source/ComponentEditor/ui/jucer_ComponentLayoutEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; - EFA8CF715611D845AB284500 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JucerComponentHandler.h"; path = "../../Source/ComponentEditor/components/jucer_JucerComponentHandler.h"; sourceTree = "SOURCE_ROOT"; }; - F004FD803D0EDAAB81667345 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; }; - F03E2BDD36E6F4F53AB767A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_Headers.h"; path = "../../Source/jucer_Headers.h"; sourceTree = "SOURCE_ROOT"; }; - F0781CFA5B984F75F7F56443 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; }; - F0793C460694102BA8D6D293 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemStats.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_win32_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; - F0A49FF985A114AC31ED8F87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NSViewComponent.h"; path = "../../../JuceLibraryCode/modules/juce_gui_extra/embedding/juce_NSViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; - F0D0CC4696419D4606EF5AE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; }; - F1163B7856FDABA413A88D90 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewFileWizard.cpp"; path = "../../Source/Project/jucer_NewFileWizard.cpp"; sourceTree = "SOURCE_ROOT"; }; - F18AE75F1831D13FF53A8CCC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementRectangle.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementRectangle.h"; sourceTree = "SOURCE_ROOT"; }; - F2A27DDB3055518A62BA7C25 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_android_JNIHelpers.h"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_android_JNIHelpers.h"; sourceTree = "SOURCE_ROOT"; }; - F361B20780764ADD61B1B692 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponentPeer.mm"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; - F3ABB8336986650F0B800F7B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrayAllocationBase.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_ArrayAllocationBase.h"; sourceTree = "SOURCE_ROOT"; }; - F3F4D8AEFD5290E8FDF0623E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsContext.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; - F4418E2C7AD718FE942DDF0A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; - F4A450ECDFAAFE68DA0FB6C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModalComponentManager.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_ModalComponentManager.h"; sourceTree = "SOURCE_ROOT"; }; - F4C1A19AAC280B0A58F73FAD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextButton.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_TextButton.h"; sourceTree = "SOURCE_ROOT"; }; - F4E3F9ED208CDD495BA720F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../JuceLibraryCode/modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; }; - F54E3F6CA70967D469913C48 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - F561D4822324D6D1650221FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; }; - F59077841FC17DD07060A2A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TextEditorHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TextEditorHandler.h"; sourceTree = "SOURCE_ROOT"; }; - F61D66D41025A0E4F9CDBE7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; - F6AE2E230EF9FF9F3387394A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentDragger.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_ComponentDragger.h"; sourceTree = "SOURCE_ROOT"; }; - F6BD39AD06B0E7E7C9D8B0CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputSource.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/streams/juce_FileInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; - F6D3F208B6EE2A50CE1F0A18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JucerCommandIDs.h"; path = "../../Source/ComponentEditor/ui/jucer_JucerCommandIDs.h"; sourceTree = "SOURCE_ROOT"; }; - F71AF6D2DF3E652F8B51EBAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectExporter.cpp"; path = "../../Source/Project Saving/jucer_ProjectExporter.cpp"; sourceTree = "SOURCE_ROOT"; }; - F73142334238E8D5B5D3E3B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_EdgeTable.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_EdgeTable.cpp"; sourceTree = "SOURCE_ROOT"; }; - F74B09C0BC8F9038B7464F74 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComboBox.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ComboBox.cpp"; sourceTree = "SOURCE_ROOT"; }; - F784E90F14BB554B2D97A4E7 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../JuceLibraryCode/modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; - F797071D88542C813CF7222A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Module.cpp"; path = "../../Source/Project/jucer_Module.cpp"; sourceTree = "SOURCE_ROOT"; }; - F7A91434FEFBE9AC130CD814 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewProjectWizard.h"; path = "../../Source/Project/jucer_NewProjectWizard.h"; sourceTree = "SOURCE_ROOT"; }; - F7CAB5BC15EE351949D3F2C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewInlineComponentTemplate.h"; path = "../../Source/BinaryData/jucer_NewInlineComponentTemplate.h"; sourceTree = "SOURCE_ROOT"; }; - F80B253C502FB1EB649082E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; - F9505DCCE2815E8238BB88B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - F98D95171F5605A4905E6516 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GraphicsContext.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_GraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; - F9B4B5E9595EC2CD47736BAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; }; - F9CFCE9A63B208A180F2AC3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Misc.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/native/juce_android_Misc.cpp"; sourceTree = "SOURCE_ROOT"; }; - FA04E39EE7E83D445AF9E406 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FillType.h"; path = "../../Source/ComponentEditor/paintelements/jucer_FillType.h"; sourceTree = "SOURCE_ROOT"; }; - FA72B8D84B97CAC1AD24DA22 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPairArray.cpp"; path = "../../../JuceLibraryCode/modules/juce_core/text/juce_StringPairArray.cpp"; sourceTree = "SOURCE_ROOT"; }; - FA9E4210846A6425A2B54856 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FillType.h"; path = "../../../JuceLibraryCode/modules/juce_graphics/colour/juce_FillType.h"; sourceTree = "SOURCE_ROOT"; }; - FB6BACB4F1E834A6934E4DC2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; - FBBDD70D47163D341B2F0A8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentOverlayComponent.h"; path = "../../Source/ComponentEditor/ui/jucer_ComponentOverlayComponent.h"; sourceTree = "SOURCE_ROOT"; }; - FBD5E2A21019AF2EAD45BAD1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemComponent.cpp"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - FBDAD6DDA8200BF53FCB5734 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathStrokeType.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathStrokeType.cpp"; sourceTree = "SOURCE_ROOT"; }; - FDF068E783DD784E3C2221C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AffineTransform.cpp"; path = "../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_AffineTransform.cpp"; sourceTree = "SOURCE_ROOT"; }; - FE6AA1851DA877743D606FC0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTree.cpp"; path = "../../../JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTree.cpp"; sourceTree = "SOURCE_ROOT"; }; - FEBB5ECA2C071F61AFD9A9D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableButton.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_DrawableButton.h"; sourceTree = "SOURCE_ROOT"; }; - FF11D6B512FDC5D887E06F66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementImage.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementImage.h"; sourceTree = "SOURCE_ROOT"; }; - FF1E5535A2AC41B9B355A1B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OwnedArray.h"; path = "../../../JuceLibraryCode/modules/juce_core/containers/juce_OwnedArray.h"; sourceTree = "SOURCE_ROOT"; }; - FF320FE35050A585E08FF993 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinatePositioner.h"; path = "../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h"; sourceTree = "SOURCE_ROOT"; }; - FF94FF5C4BEC605E56149EFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_LabelHandler.h"; path = "../../Source/ComponentEditor/components/jucer_LabelHandler.h"; sourceTree = "SOURCE_ROOT"; }; - ACBAFA7D92DD82AD44ABE68A = {isa = PBXGroup; children = ( - 441CFEA771BAA50E187342E9, - 223C4209F18A221EB183A056, - EE690110171E1648FF2118B8, - 23A8DE16C0CDB8EED18B008B, - 0400CB0E056A1D840304D2DE, - 2EEB1C074162F363C6599282, - 6E6140969908E7619F858740, - C7608A3967D9AB9481848F2B, - E65A820D34BF39478B7C5925, - D526C38D581425949BA0E4AC, - F03E2BDD36E6F4F53AB767A8, - 8C52A3DDA62A746AA7A68535, - 9069981E414A631B036CC9AC, - 2CD34A70B4032C0426F7AA10, - 2247EE920DF0610CAF9F4513, - 563091B0916AD9AAA36C7DC5, ); name = Application; sourceTree = "<group>"; }; - 891F84627A03FA733F37A199 = {isa = PBXGroup; children = ( - 93D03B2BC76998A3BDA747E8, - 8F8BF1A7130D858E0A239F9E, - 7B4E33B1E04139F359FB484B, - 9F75811FE7B5F8D1321BEC69, - C7B47372A9D5970E3D9A5400, - F797071D88542C813CF7222A, - 7211101FFA28400ADBB1D47A, - AFEBD8423B07599B1DE175A3, - F1163B7856FDABA413A88D90, - 5852830ECC222BA36A30EC20, - 69A5D13490A62DAE9A7D5A22, - F7A91434FEFBE9AC130CD814, - BAC43B20E14A340CCF14119C, - BF3CEF080FA013E2778DCE90, - 86E468DE6556BB2AD76A3D80, - E60E28D1B7491047DEA236AE, - 375AFDF06A908D89DEC5205F, - 47B49049B85EED74D29C9906, - 4F6365A0D2D51337151D85C3, - E70CA21960A64CCB835725FF, - B8385E9A644BD3CD94876448, ); name = Project; sourceTree = "<group>"; }; - E345840128627D533DF908AC = {isa = PBXGroup; children = ( - 6E7353DFEA8825B515049ABB, - DBE0CDE1B017190ABBFF557C, - 05076CDF1511A5F8A8E18F1D, - C8A229ACD244F402C57286CD, - 974B862C51DA9A16CBBB3A29, - F71AF6D2DF3E652F8B51EBAB, - 35CB48D497F35BF3F6998F5D, - 9C04F9680F82BF279D528688, - D10D51A0A2D63F38B4D86A60, - C9616830BB2474066AC8C910, ); name = "Project Saving"; sourceTree = "<group>"; }; - D93DED1F5F1B0E49E10A6760 = {isa = PBXGroup; children = ( - 9B9CAD20E1243B4351B4C8D8, - 914ADDB50ED7365F08BA91F9, - 188D03A4247F4BC0539F5C49, - 1729AEDC34001C31B8CC357C, - 553725A0E3A391651ED1731E, - CF21D9DB3AEC0A4DCAB36A99, - 515FF6E74826E3E3F7273621, - 47DD50A5A9091F9900E0EAD9, - 820291543BF93243B718F0EE, - 0F249640243FBD5717F6ADD9, - 4A41FD3066D0979DB48691E5, - 1AF7EFBE4961C7B6C834BF54, - 1F421199C40092BFEE0658C2, - 631983AA62673015F8D7453B, - 9BC8AE609A07657CEF587548, - D3E139185095C486DD3D61F2, - 8090981F07A76E465DAAADF4, ); name = Utility; sourceTree = "<group>"; }; - FC22321797D433148500EDDA = {isa = PBXGroup; children = ( - 2E680E2C65684A4272AE079A, - 78CA0E0F336229E2E2F111B0, ); name = "Code Editor"; sourceTree = "<group>"; }; - DA3DF56D3295CCD84DA4E882 = {isa = PBXGroup; children = ( - 0FF1C6905150EAAB1AE081A7, - 008C8B2C2328CFBB9375397D, - B741170E45D74F30B7D5CDDF, - 65C498761CE166072A202AA0, - 5D9E7814B713670624F0028F, - E0F9CA57E44F7F7E7E217E47, - 92F91DC29B64AD85B1F508BD, - D374DC78AAC02504576AA9B3, - 1F9BBDFA52513AD34D906D2A, - 4C2093BCD3528ACEDC7A2B33, - EFA8CF715611D845AB284500, - FF94FF5C4BEC605E56149EFC, - BCCFDFB2C02C4AA436C0ECF8, - 400E4C67ABCDDB1D49EBB85E, - E4BB22E27C5AA4B666F265BD, - F59077841FC17DD07060A2A9, - 084C0070BC67BC893B967EF1, - DAF84A553D264705FA6EB6FF, - A0951828C3BF47FA7E1E52F8, ); name = components; sourceTree = "<group>"; }; - 2BA1ACF18E7E078C7171B162 = {isa = PBXGroup; children = ( - 3E03B7C7A19E63A724EB79F4, - 1FA92F8F2B26C6CEC8B1D737, - 662C76394C5D1B56766FAFD9, - 9C803826E5E3FDB1B37660D5, ); name = documents; sourceTree = "<group>"; }; - B3DB7CF28491BD6FFAAC716A = {isa = PBXGroup; children = ( - 93B419190CCE92ACAB1ED25B, - B1963F0D8C0046E54FD9E023, - 5091B14CC87C6238CF044258, - FA04E39EE7E83D445AF9E406, - EB71BA07D6F667E69721E577, - 3F00C034B140193B3754969B, - 1C216FE9B7A5209C5CCF2517, - 786BAF436828865F45314440, - 4E8FE9B1B8C90FC28D56523B, - C094F3B6A65A79A6DF87C9C2, - FF11D6B512FDC5D887E06F66, - 0169ACAA0FAE70CCEEE4F650, - 1D3D6A19A60F0B03DE2F1C14, - F18AE75F1831D13FF53A8CCC, - 41CA95403E264AA7457A61F4, - 9C51394634F102DEBBE6C9EB, - 27A2B025813B7E54E0862642, - 7A3E96D22F1C9EB4C739834F, - D0D8B580D0689FFF4B9B823B, ); name = paintelements; sourceTree = "<group>"; }; - AECCE15B651C9EBBD07B925F = {isa = PBXGroup; children = ( - B00F60201606F195058BB575, - 04C1267B2BD11A6ECCCA654C, - 6A337C69A928E3CE79C55457, - AA8EED79F095953D2B5923B8, - D4444EC6342A2A7BC4F7BC46, - 295A9B126C98FE15F5A8B81E, - 8138A55052E9FC27284B74DD, - D87FC8F6834E9DC9C8E88B94, - 576D62C0C9C1BA4B7A514721, ); name = properties; sourceTree = "<group>"; }; - 4FDE8BC3A59AA207C6CE77F8 = {isa = PBXGroup; children = ( - EF30A74B566A461A171BBF83, - 263D9041F9B7D6A79DC38CD6, - 3514E78B58A08F4C98F54C5A, - 4E191CDCE7565DB726CF7065, - FBBDD70D47163D341B2F0A8D, - 98F42686D9DAC974F2514217, - 97E75A598791645465FEDCE1, - F6D3F208B6EE2A50CE1F0A18, - 9C7FA58D223674C4C2AC6595, - 1125D1B2AE54AEF2EB3D51C0, - B15E33E7342F6EB4F95C9B1D, - 4E60769DE992CA7FC1A4A486, - 16203C6791259C9718A04C3A, - B06C7C053DB0660CDA8B5C2C, - D92A6E9404A30EED32DCE4ED, - DF725A596B7BCD7520CC0A9F, - 641B57E5FAE6BEFDB6462921, - 3A5B5DC92BE6D22CA15B9671, - 921752D9B004A15973DDF56F, - 9F41F3338BF00D0FC74C6390, ); name = ui; sourceTree = "<group>"; }; - 825956EA572E23B506C8236F = {isa = PBXGroup; children = ( - DA3DF56D3295CCD84DA4E882, - 2BA1ACF18E7E078C7171B162, - B3DB7CF28491BD6FFAAC716A, - AECCE15B651C9EBBD07B925F, - 4FDE8BC3A59AA207C6CE77F8, - 9EF583A6201DBC813C2F63C4, - 6AC88EFC247C225CC5C11A43, - 133F1E428260C5ADDF496DF9, - 3F9D4C7F6E5779D4E4AE655D, - 78D0DBC4798FF040FDB90F6D, - DA345D5B9DABD049F90DC96F, - 269A454F1FF081DA67FFD578, - 8F30A53C7FE4BC65171FB3E2, - 9D7689451732AF8333402B3A, - 50498FF6EA3901CBD58223B3, - C187718F7B9EBA88584B43F3, - 66B49F08C5EC3E4974825FF8, - 5432B7B9B2CF2EAEC8B66D5C, ); name = ComponentEditor; sourceTree = "<group>"; }; - 88DFD62CB6545EE8CA5C485B = {isa = PBXGroup; children = ( - 5F4F4EAB042F2730F94A1CEA, - 301592EBAC0FFF6F5B268E99, - 41105E536155E394E54BDD35, - 5F6584B675E30761521A9F42, - B483D960309FAFC193F9CDA2, - 0075C5208947159AF2802F3B, - AFF72BA2B130F3F9AC029080, - 65F4749184C84C2FDBB4C305, - 03D3053EDE47FED1919C6674, - DC922C6A65D260C18E888E49, - 963E0740B7B4D59EF2D16740, - 9683B04CA3BD7F73E8236FE2, - 35E6EE1E98DD7050DDFECD9B, - 24C34D0578AE6C7A3EA18781, - 18D9EBA1DAE45EEF81FD5C8F, - AE1BC6DCCFC1A18E2ACE23F1, - 86E8A40E5A83781A8478454D, - 61BE37E2B26C25056D9E8FE2, - E2374E15D65425C4101237E2, - CF8011B3C67B609032974DA5, - 53151B683E11F420203E61C2, - F7CAB5BC15EE351949D3F2C3, - 58139D8D454051C59E77609B, ); name = BinaryData; sourceTree = "<group>"; }; - D3109994DA6AD871BE85C4E2 = {isa = PBXGroup; children = ( - ACBAFA7D92DD82AD44ABE68A, - 891F84627A03FA733F37A199, - E345840128627D533DF908AC, - D93DED1F5F1B0E49E10A6760, - FC22321797D433148500EDDA, - 825956EA572E23B506C8236F, - 88DFD62CB6545EE8CA5C485B, ); name = "The Introjucer"; sourceTree = "<group>"; }; - ED7BB3F297250D7B43B2A536 = {isa = PBXGroup; children = ( - E224B3D37F624F7AE682E499, - 0A8D062EF44529B793CC5098, - 923B69234C15988DFF1E8423, - 6245DA2AC30B91552C12AD1F, - D70400A648DD2EE1FB29ED0A, - 237496FB515C526B510BB0C3, - BF24E0D37EAD41130FE149A3, - 2D6B77C09B5AF1BBD821D224, - D58E5FDB639B07A0B6350657, - 056E44027E3F3AFAB32FBC44, - F0D0CC4696419D4606EF5AE6, - 553F3388AADBF8B529B78824, - BED52FDD3843979E898DA4CE, - AF9453BB7F2479400D4A144B, - 2A7B44B9D6C81585064098C3, - FA72B8D84B97CAC1AD24DA22, - E4389603AF8A3143883BFCE8, - BF1B82B8DD7429ECA96AD4C7, - 529B0A44694A54ED99444A0F, - 4DEBB89A00FBD2C11515FD07, - 8C07D2E980420174DF513BEF, - AA4578A9110E724AB87DF869, ); name = text; sourceTree = "<group>"; }; - F824830BD560E7906A8CD82B = {isa = PBXGroup; children = ( - 13E76507D88192A1B9554073, - 16413B69F7D1E2862AFBE61F, - 4653C504CADC3A365DCD59D0, - 1958777C37415EC581CD4B74, - 94E38DB823EBBA437181682F, - 93C5BEADA1AB1CFF7B167D2F, - B2CEB1DE8F290AFCDE9585BB, - 140ABB31EF22CAE40D874BB0, ); name = maths; sourceTree = "<group>"; }; - 01C121A5814A16A7CB907FB9 = {isa = PBXGroup; children = ( - EC2E7A527518F2A8F8DEC27C, - 257104EA81085B98E8AFCFB3, - 439A60BB029251ED3752A69A, - 7E1CE53CFD909089387910AF, - 957D4AC1FE338B82C790FDF7, - EA5EA4BEAC60FE65FC18B26E, - 6DB44C43D1260559163A47F0, - 4DAF01670050184A3BAAA93B, - 64EDFDAE0755DC1451F181B8, - C159CA71B03DCB9D7BC31A4E, - 6AC5756EBCB78FD82C15B829, - 4064AE577A11F735B2CE87F0, - 28E9116333CAD9E8164008A9, - B68B2E4185C6FDCEEE0DBA79, ); name = memory; sourceTree = "<group>"; }; - 101599FA5E724FC0C78144B3 = {isa = PBXGroup; children = ( - 385426A4A6D3BFC4B2FD310C, - 514B0E8E2796ACE7385F6717, - 2C5E67AA30FCCE2E09C8CB6B, - F3ABB8336986650F0B800F7B, - D052CBF83BDE89CDEDD3CA53, - 1F869D818F79BE6EEE2305FD, - 849641B50DB4AE6CCA1C543F, - 497E5C615BFF59384CB2284C, - 0153A6801552D0B4C21BE911, - 1FDBC89D596C6E959E7A8825, - 231F4AC6660B650E08EF1E54, - FF1E5535A2AC41B9B355A1B6, - 8EE709A982B89A4C752303BC, - 61804EF1D5DC1451EBDAF6C5, - 159A5AC2CAF01A7A17ECA0A0, - B93A82D11582820D193C9131, - 3FDA82F89379E99C9E3B5C64, - E3051371FE51A993DBFC9338, - 5B28BE68400342E97C084ACC, - 1F04ABB8C6FA1598902FE33A, ); name = containers; sourceTree = "<group>"; }; - 815C2090B70E6EECD913C0CA = {isa = PBXGroup; children = ( - 96BD2AC4C892C245E04B8A93, - 5909E278D645E1F91C0AE2BB, - 84E06858791DF81E37B9A484, - 1320D638B7BACCADEDA5ABD2, - 3D577E9A14625124F5933387, - 92B6276B30F89F742E78A265, - 82976E18712BAE638A132F02, - 689996FF463D52FEF125AFF3, - 5C6893F610657B9383F9333F, - 800206C482A2C7E62682C324, - D8FA66DEA9117C2D0239B11B, - 34D4199F01C019ED54544C1E, - 7861B7ACECC987D58C7D0309, - C07856C24F305E7D50660F67, - F561D4822324D6D1650221FA, - C7B2FE883FA1401854BEDE8F, - C8DED829D0662D34D09A0C5B, - 6ED2213CA4E7E418E74A91E4, - 1C94985541E125A49C70C07C, - 54652695DEEBAB24E462DDD9, - 5BDAE5FD683C0005A609495E, - 95604CB3BD2C7745FD8FDB74, ); name = threads; sourceTree = "<group>"; }; - D385600698057B290BC2AEF7 = {isa = PBXGroup; children = ( - E85876BF1128CB4E29D7CB64, - 756D2E74350285D4082EFD8E, - 3A9ACE7B66413BF99882ECC6, - 4B138A2FD1EF34BB254F7C7A, - BDDD7A81586798621C6EF327, - E39CCC282936B2F3062E9143, ); name = time; sourceTree = "<group>"; }; - 0B795464B0BFEE19C4F89F0F = {isa = PBXGroup; children = ( - 3ED948823F776108CD873C68, - 9A7D5A94730758251DC8E4FD, - D96D764ABA74D392B9F7C30E, - 1BE0A264A6AA494EF75B582B, - AC70D9D3E27592DD5D19B935, - 3CF3F730EA232DA860D1B79D, - F80B253C502FB1EB649082E9, - DD36B6A35D7350B32D2BF727, - 36E341F289B15DB1B7FA7528, - B90DA9BF88AD7AA018CD1F6B, - 46515892E00E0D91D920B90C, - 1848EB565B679F72C560EBAD, - 9153965AAA76A86DFCAEE86E, - 6C7A1929978639A482D5096D, - A6B4EF8DBA1476D85FE0E927, - 4A19E61C47E844D661C34DDD, - F0781CFA5B984F75F7F56443, ); name = files; sourceTree = "<group>"; }; - 20F9DB293E2CC9F98F43758C = {isa = PBXGroup; children = ( - D673EFEA126BD37BE8DD8D78, - D9F50E5D2A0644E9DF20B1BA, - 8F14D66EAF9B6219C5D1C510, - E39C4DD3100879AC614060C2, - E83203CFAA037EF461E3ACBD, - F4E3F9ED208CDD495BA720F9, - 4BF00AE19C332EF226420C57, - D52AF2D2AB5FD27AD5DFF753, - 523B197F8A3BCA94C58C6DEF, - 7C0528B4912955DA59C28356, ); name = network; sourceTree = "<group>"; }; - 06D5C2B5F1F4E37AF1C7A425 = {isa = PBXGroup; children = ( - 8216291F3E0D0926D64AD98C, - 51DAFE574A52F68CC4A10274, - F6BD39AD06B0E7E7C9D8B0CE, - 4301D29792107D6471F29FDF, - 16C7EFDF9ED765D02DA12C55, - 39D907284C634E6A9FC45E3E, - 14BE817BFCB5B1CF2799C860, - 2CF191F1A61F2C167FF2DADA, - 9DBDA8C274E693DF449FF525, - 6CA3455CFAA1A52891F55CEF, - 4F5572380B51C24AE8D34450, - D1B7039DE915ECD72000679E, - 68164EA5DFF5CE5AC2402670, - D0EB880DBD68B9C44734E26F, - DDA9B189B27A9FA240CC04EA, ); name = streams; sourceTree = "<group>"; }; - CBF105D9162BB597EBC1B981 = {isa = PBXGroup; children = ( - 12875173A50B701B72E68F90, - 4C80A175986D336D4E1044A7, - 24319DEF365C8368FD3AA4EC, - DF1E044516CA91C20B31FB6F, ); name = logging; sourceTree = "<group>"; }; - ABD92B739720D08778AF88F8 = {isa = PBXGroup; children = ( - 10AC5E5349AFAF11362E4199, - E2E00F66C14EEAE78119C0C6, - 5EA02C28A509FAC9D2561AC5, - 1DC3F7820AA6D950B2C6D628, - 318467BF5A24F08E30FB78DF, ); name = system; sourceTree = "<group>"; }; - F6C04F077B187FD605483DEB = {isa = PBXGroup; children = ( - 114845541FC5BE3453B6BD4C, - A2B4202B1078374D5D0A2FA0, - DABFA41975B51A33C19FD7C2, - 800B30FB2437B98A1423838A, ); name = xml; sourceTree = "<group>"; }; - E659B9C71FCEAA788CFEF8F0 = {isa = PBXGroup; children = ( - 3970C8444A2A081455299CE8, - 72BB08B37FC311C133A01F95, - 70C4E93E7132BEEDDABFDA10, - B4E428E2D02619F18757BBF5, ); name = javascript; sourceTree = "<group>"; }; - 59884479C6FFC940D3992EE6 = {isa = PBXGroup; children = ( - 37C65F13D7CF8A718D1569AE, - BE4A96EF54B366C811255141, - DF8FBA0269590E5FAC7FE213, - 88332B74FC9B9BE2F60D7EAB, - E691B76C2F16D0E4A2BFABC2, - C695512ADA3E687DD1E55C0E, ); name = zip; sourceTree = "<group>"; }; - 248A3D6E995D23F2AFDBF78B = {isa = PBXGroup; children = ( - 93B474F28D09D858DE16E881, - 4467B3824742815D1355DB81, ); name = "unit_tests"; sourceTree = "<group>"; }; - A09D1A158BCD0A396549C1F3 = {isa = PBXGroup; children = ( - 084171D9475B3491A4EFAB5F, - 81A3DED7F13085DF8C8190AB, - A7DD1B727D226AE589E87E4A, - 333B1D00E46AF5A642C1DCDE, - 34705FA6042CBE98AAF77B61, ); name = misc; sourceTree = "<group>"; }; - 43F993699B5DE3F1B3D3C905 = {isa = PBXGroup; children = ( - 61096C79B4C094699E9ED296, - F2A27DDB3055518A62BA7C25, - F9CFCE9A63B208A180F2AC3A, - C43808AF23AC4F25CB26733D, - 40B9BA6D711F58DEB6E871BF, - 94A8C75647A8777AC35F13FC, - CF4C51480A8E95AC5F107FF3, - 6C867E1E3FEC31970950C620, - BC629A17FC45C9D48E2A383F, - 7545BFF1C7C857A810B0483D, - B53BBDA475207303A77FAD40, - 86EC32D1F0A4D7678B298631, - CAC9FBFB722FE3DA7CE3BE12, - 63754DF4DA5063BF038C359B, - 29FD4A27890434E137DBC3B9, - 5659718DF6BD054B2B0A875C, - 633CC0CEF05B3ADCEEE1325E, - E69046467FD9DC88B664447B, - BE6E4546B1A6458DEA0C7FD4, - 61538AD86AB82CE59EF6C68D, - DF12EEE63E6D19610B89CA22, - 63A4A00461C033BC464E4D34, - 99623EB9527119388EEDC8E6, - 40B4AB02D26ED520104B9363, - F0793C460694102BA8D6D293, - A3A4DC7DB79039626E4A311C, ); name = native; sourceTree = "<group>"; }; - 8BA5B0B5CBCE8D29F02D341A = {isa = PBXGroup; children = ( - ED7BB3F297250D7B43B2A536, - F824830BD560E7906A8CD82B, - 01C121A5814A16A7CB907FB9, - 101599FA5E724FC0C78144B3, - 815C2090B70E6EECD913C0CA, - D385600698057B290BC2AEF7, - 0B795464B0BFEE19C4F89F0F, - 20F9DB293E2CC9F98F43758C, - 06D5C2B5F1F4E37AF1C7A425, - CBF105D9162BB597EBC1B981, - ABD92B739720D08778AF88F8, - F6C04F077B187FD605483DEB, - E659B9C71FCEAA788CFEF8F0, - 59884479C6FFC940D3992EE6, - 248A3D6E995D23F2AFDBF78B, - A09D1A158BCD0A396549C1F3, - 43F993699B5DE3F1B3D3C905, - 00E86D533C0149A56F21D804, - 90B9A4673FDC35841E5D4562, ); name = "juce_core"; sourceTree = "<group>"; }; - E45B4DA7B49FC8D397F1EA56 = {isa = PBXGroup; children = ( - 22B29C61E4EB0C2FC4E54378, - 1F86FB8B8336D44337AE7119, - A73C997FBB6C26B632CBAE15, - 0329C05B4EE23CBB5578BF02, - 20D0FBDE77A58A302859A206, - E32210D5760697609D084C93, ); name = encryption; sourceTree = "<group>"; }; - 1EB4CE7119697D9CCE604271 = {isa = PBXGroup; children = ( - 9C1D8A8FAA2439A8EA2DD800, - 665EDD760E47A6AD1A1DBC2D, - 24D73A13CD0F89E299E11B0E, - 482C35BB3B7DDE1B452C8455, ); name = hashing; sourceTree = "<group>"; }; - E58F94F6CDB786C1ED488C9C = {isa = PBXGroup; children = ( - E45B4DA7B49FC8D397F1EA56, - 1EB4CE7119697D9CCE604271, - 2C9ED03E1C345D9A81BEB361, - B271F77C266131705FF6F92B, ); name = "juce_cryptography"; sourceTree = "<group>"; }; - 2A8293EA2395BFFCA229F799 = {isa = PBXGroup; children = ( - DBC8F8E3236577FB623E1F69, - AF51A8DC8E67D8EB660AD6D0, - FE6AA1851DA877743D606FC0, - 945A4B296E9562BEFF95884A, ); name = values; sourceTree = "<group>"; }; - 8E7A1020B8096653D203C38A = {isa = PBXGroup; children = ( - 199E3F67A1E48F7D95AC6E1E, - 1602D140D6F478765ACEA660, - C9CA4A5BF4D2A1109432BA49, ); name = undomanager; sourceTree = "<group>"; }; - BD9E9E80DDC81539B00DCAB6 = {isa = PBXGroup; children = ( - 5CE5E5132CEFADC6D48ECB08, - 12ABAFDD4C4BCA2B8313F1CE, - 79DF7512BC6437E5E29E3CFB, - 8887ADA2A339C0BD9AFF83DA, ); name = "app_properties"; sourceTree = "<group>"; }; - 6A6672A570C2C2418F926C82 = {isa = PBXGroup; children = ( - 2A8293EA2395BFFCA229F799, - 8E7A1020B8096653D203C38A, - BD9E9E80DDC81539B00DCAB6, - 2CB1AA089385D7399AC615CE, - 4760F25A96CAB18E75573C0B, ); name = "juce_data_structures"; sourceTree = "<group>"; }; - 2287744248275B6237708450 = {isa = PBXGroup; children = ( - DDDAD9BCDC99DBAE63B106DC, - 9245B8936083D87061E4FE15, - 72EC62B05E134F85761E642E, - 43BFDF9214946C6B76CA666D, - 69A1792C863C7957A80F6945, - EC736CD3AAE2E052E7D95076, - 9DBE1CE382EE797178B3D35F, - AAC42C49D961A534FE64882E, - 72A66FD9571871FFB455F8B5, - C7B6983AD1896535B9B98F40, - 9899685BD109C2475BA4F8A1, - 043FC175E80305E3D95ECAF8, ); name = messages; sourceTree = "<group>"; }; - 83DEE68BC6A9B685C3E75FEA = {isa = PBXGroup; children = ( - 4CC9356FA92F5C94E4DC65D9, - 5797A65A441D030729C6E886, - ABD9D1389B5591B2303990F9, - 4EBA5CEE07FB8B2DAA9A0315, ); name = timers; sourceTree = "<group>"; }; - DCBE58B4AFE058653EBBBAAE = {isa = PBXGroup; children = ( - BA3CF913C966148DF5059C9F, - C8A160E05C7F8F5CF534AC03, - 2AB28295C237EC79481F5F9D, - 5CD44EFDD7BA487CDF41760A, - D1A54DEEAD15A98719002174, - 37AD2C828C069B17DB0C70EE, - BF09E9E179BA0B07203DC9FE, - FB6BACB4F1E834A6934E4DC2, - 26B7487E9A0CB5C6CA5ACE58, ); name = broadcasters; sourceTree = "<group>"; }; - 084F5B9CA3F5822A7D9156AF = {isa = PBXGroup; children = ( - 85B48563B4437E1E27ACABAD, - CCE50A531D751FD10817A9E7, - 963891BF1C9BC566FCF433B7, - C21AD85C35257A4B9A74D522, - D2A888E0C5D10BE75BD69E46, - 1233E258E4C1FD4AAA7A6D1A, ); name = interprocess; sourceTree = "<group>"; }; - 334607E7051C2D75E0AC85F6 = {isa = PBXGroup; children = ( - 66448E472FD5BB3D34B1509B, - 9E6BAEF28A55F7F349A15DDC, - 33E0A6C9F0AE53BEC8778775, - E44D93C93617D6314424CB46, - B420AC0E3CF485CCFFE5C625, - B5F94A37629F841C6C2B4CA7, - DEDF05B176E4165376AC6D4F, - 530ADBF1045867FE90EB8F1F, ); name = native; sourceTree = "<group>"; }; - DE7F542DC0967F8EDCC4DCD0 = {isa = PBXGroup; children = ( - 2287744248275B6237708450, - 83DEE68BC6A9B685C3E75FEA, - DCBE58B4AFE058653EBBBAAE, - 084F5B9CA3F5822A7D9156AF, - 334607E7051C2D75E0AC85F6, - EA48567DDE6E64CF4DB9B23A, - 2101B4CC3E5BDC7BD806678B, ); name = "juce_events"; sourceTree = "<group>"; }; - C3FB0CB81D460B4263689CAF = {isa = PBXGroup; children = ( - 2FD9D5944388186AAA32FEE2, - 95BAFFF3DDCB31F1E4F5F807, - E5C0F0324C408196C1E3AB24, - 9B3076A1D57D614DB7B4657E, - 880D1F031B50F965A56B7240, - 00CBA904DE3B8686A6F569CD, - 45AE1D139D938D43891501E1, - FA9E4210846A6425A2B54856, - 1908920B3166E7B7A7A095BC, ); name = colour; sourceTree = "<group>"; }; - F417C2CB1A694D2C1A892F63 = {isa = PBXGroup; children = ( - BAC2D13A5ED7622DD43BF752, - F98D95171F5605A4905E6516, - F3F4D8AEFD5290E8FDF0623E, - 28A5DF3CEA69B587C9CA7C4A, - B43D35488A61101480983DA3, - 5823F1EE0F39AE16B560665A, - B7D930DDBE81040985D1B48C, ); name = contexts; sourceTree = "<group>"; }; - DECB572AE46DB4A77186D494 = {isa = PBXGroup; children = ( - CF7F48D267805732933DF82C, - 4C2394A14C140490F5F4E9BD, - A039067FA15840674DB4CA0B, - 8F355E9A0D4E3B4DF00E7BA9, - 5A11499F36DB882429253BA5, - 3FB2A9225024422947E6E654, - A8C8924ADBF29D01FDFD62BE, - 43E13FBEEA6CF191A0D501E5, ); name = images; sourceTree = "<group>"; }; - F3174EF36ADC4DC23BB304F2 = {isa = PBXGroup; children = ( - CE08955E457642C4D6DFBA30, - A350F5C1C50024670090021B, - 7038159E5F04B3C75B6A7655, ); name = "image_formats"; sourceTree = "<group>"; }; - EEE23FCA48A7F9A0152A68EE = {isa = PBXGroup; children = ( - FDF068E783DD784E3C2221C5, - CFBF253B95F793D399C7C7BE, - 4DFDC4E1F50427FBAF0B8F81, - F73142334238E8D5B5D3E3B1, - F4418E2C7AD718FE942DDF0A, - 647EBD8D1EAD21592951DD9B, - C6ED030DED8F5A53636C4EBB, - E0366FD0E45684229CBF9775, - 865F57EEFDD6F194FCE3FD8F, - 06BB2D547BF07A31E8D46977, - FBDAD6DDA8200BF53FCB5734, - 73425A7FACB8FEE3D7A7C567, - 87C711AFE0DEEC1FA8AD9465, - 28C9E13B1A70FDC728770C6E, - EA362B80219C97D85ED267A9, - 2D9E9803A9DF82BBA42294E9, ); name = geometry; sourceTree = "<group>"; }; - 14995D34FE0826A52FA5262D = {isa = PBXGroup; children = ( - BC975A241710644E779FAB84, - 241A48F1D188BF19314065C2, - 27F7865BD6FE03B970B8DBFB, - 513AF2A4DB37CC6F47E6CEF0, ); name = placement; sourceTree = "<group>"; }; - 59C2687AA614A77DA150AFAB = {isa = PBXGroup; children = ( - 7577BF4DE64CD865088A612E, - 5F99D905AAF0C3F89CEAD965, - 51D9906830CE2006B74DBFCC, - 5F4AF4400A9511B74E2425EE, - 760A535A2680C8B3C44B59C5, - D7F64C0E6B3CBA49A9F0341C, - 0FD7364EC64E25AE854E9A9D, - E5030E4FB09EEFDEC6E17F33, - 801143A09B8A467EA47EBA27, - 95CBFF7351F89C117E30292A, - 785740092163D40EE36BDA5B, - 419A5389244CCE7390877F1D, ); name = fonts; sourceTree = "<group>"; }; - 8EB51FAF42AAEC7AC357396B = {isa = PBXGroup; children = ( - 519269C6218CA35F731ECA61, - 46392AD7FE5D6BFED1BE827C, - D6520F83A0AD0B5BC024CB9F, - C4B158D37FF6B3125BEED598, - 136A3229F6535E2FBB9993E2, ); name = effects; sourceTree = "<group>"; }; - 6CA37BA48005B8EF0478B69E = {isa = PBXGroup; children = ( - C18696515B6681B033F06D44, - 76E2E826701240CDD4DEDA57, - E6697A0594C3625F9025FD3B, - 9B4AAEAD95B93FA8F2348E27, - 7BD4BCAA20B1ACED28EBBFD9, - EEF2B5CF27493A0E5432F495, - 6350DFE5844B6CB31FB54A80, - 5D33FED578ADEEBAA8A4CFED, - 479E55D2A68FC2E14FF2E39A, - 09BB016660D64FDCD2A9866F, - 95220AF02A9BEC790D84413E, - 21822729E1EF7CC3D3528BFE, - DA52CB613FB5AEB736624AB1, ); name = native; sourceTree = "<group>"; }; - E9819C83D0B797FC71811B1B = {isa = PBXGroup; children = ( - C3FB0CB81D460B4263689CAF, - F417C2CB1A694D2C1A892F63, - DECB572AE46DB4A77186D494, - F3174EF36ADC4DC23BB304F2, - EEE23FCA48A7F9A0152A68EE, - 14995D34FE0826A52FA5262D, - 59C2687AA614A77DA150AFAB, - 8EB51FAF42AAEC7AC357396B, - 6CA37BA48005B8EF0478B69E, - F784E90F14BB554B2D97A4E7, - DD737A82676BCF9CD2F2B367, ); name = "juce_graphics"; sourceTree = "<group>"; }; - 2CEAE8B236FEF5E06317EF3B = {isa = PBXGroup; children = ( - E791EF4AE50CCD190A8BC5D0, - 46F449C23355573E967D351F, - E24325B47AEC8B77DDC456F6, - A6D3D648059361F5836DE280, - D57E1008C51B8D4B9A70535F, - 3706C20941A79E5A8DE08DE4, - 149020249A77110311411E15, - 987490B430B80B4FA2792176, - F4A450ECDFAAFE68DA0FB6C6, ); name = components; sourceTree = "<group>"; }; - CD1AFCF4DFA46BA5BACBB1CB = {isa = PBXGroup; children = ( - 9CADF9A1F79D9D1ECC7147E9, - F6AE2E230EF9FF9F3387394A, - 76EF37EBCCA75161A3561F9D, - 48ADBB0A2A258CF72F04891A, - 174CE62B43D97B83AF1D3338, - 6737B22BED56A0544E39FD15, - D41524385F8D560212C9D798, - EEA69803BC87FC7DF32A9816, - 68077882A46E2C4E398E4C99, - 984CCFC22599870F2BC0611E, - B1DF858F499D12D442679683, - 79366BF7CA160E7EFC7823C4, - 599957E884512B8314720BBD, - 82C7BF9F5E863E647438A8AA, - 4F129F3B2CD7B03E97C2F168, - 9EFCD465B3A75D9E2556DA0E, - 61A6870CF7A0DE01A70799B0, - 88E1573706105D51541F4CA5, - 17173DDA0532B81C71D95B05, - B9F917BA04B3A715B7E49128, ); name = mouse; sourceTree = "<group>"; }; - A186EF5D092D513F30A4FE23 = {isa = PBXGroup; children = ( - 7D6B19FB1AAA04D27716457B, - 6059BA2EC2D80F1A58D047A2, - 91A9050F591F2E03EA96203A, - 104463B9110789FCDA7BD4FB, - CB5760497CA6F044DA18D3A1, - 09F93EBC7C2C877F3446A0C7, - 2FF61C42E37986022C189531, - CB37D7E91B0DA0927BA435F4, - 1B4284167C1A10170537305A, - 0FB3551C6845EF0E9312F850, - AFFC3BBF8BBC82DD09B25EEE, - 69F318BBA51FA30B777135B8, - 4BD96E9231831D77755CC803, ); name = keyboard; sourceTree = "<group>"; }; - 617C7A87C00C7357D6B4CA43 = {isa = PBXGroup; children = ( - F74B09C0BC8F9038B7464F74, - 3EFC8EEA0D7714261BB90A41, - E6C8D5E6CB5649F8181F3663, - DD95F4D24DEADB6030D5959E, - A9208187F15083F4FC55E0E8, - DF45CF7F287FC822F45A5AA9, - A3632F10CD01DB5263F628F0, - EC1A0BD441203369A933D00C, - CF4BDE076A0E86E887C842BD, - 5EAA527023FD40745056F13B, - CE4A609A9FB2403D506B3068, - EAA4FD2E9CB12F1B946D2A62, - 55A56A4C2EC5DECEC307EC37, - 6E2B6FE06BE3735AA969B526, - 2D035221BF4D4B8C56FA3653, - B292B170AC30407623358E6F, - A42E6A76BCFC6504676EBE8B, - 85B2B84227B39C31FE9D790A, - C85BCA043B9CB378FA6876B5, - 659B75A15D70B8FE57D1A1BE, - FBD5E2A21019AF2EAD45BAD1, - 9559DA09C937A41B88227D80, - DADCCD453FA0BCBE7E423FAA, - 61F8ED9B6C0D09E2665531D3, - 61151BEBE0F7E79DFA313076, - 700138BDDB27754A06B56C87, - B388675858A6323C1A1F7BFE, ); name = widgets; sourceTree = "<group>"; }; - FDA3E07A3631D25DFEA73850 = {isa = PBXGroup; children = ( - 502A6F378DA7D0BED1380D86, - 0CF3C0EC356169F25B0BAA9D, - BA61CF61BDB1194FF4A85DA7, - 2A631496A56813D0EB2D0E5E, - 7AEAEEF9959046D9827CCB56, - 00F860FEF209ABF0E800FA09, - E1139B64E290711F9DE2DCDE, - 5D77828FECF00CF108E16599, - 867952C0062DAA52FE4345B1, - 7D33879BE42FD18DA0E7833E, - 6AC17B5D88D0ADBF77420048, - C81BC495F7C4B665C8856AA9, - D7C052388BB7D6FAE4A15999, - 6E1D22B93CCB47AB339085E1, - C017261AE701010986A93D34, - 84EB1282EE3C5F3A1DF70A54, - 5BE9E1B6197D01AB97288253, - 5B45BF234C7184BE28C59741, - 81704510C0CA45994B69AF05, ); name = windows; sourceTree = "<group>"; }; - 1183520311BFD05477F94ECA = {isa = PBXGroup; children = ( - 04A2C05B7935B8D335B5FD39, - 94232610F41512C7040EDA38, - 2E183952277F99D860EEB3F3, - E3E08397D63E4E96CECB2569, - 64520235EF5529F8C0E4A9A7, - 83C7547CCAFCBB88F791FED8, ); name = menus; sourceTree = "<group>"; }; - 3644BF38DFC789105B7D80FB = {isa = PBXGroup; children = ( - 5603954CFF21E81C86CCA1CB, - 2C0D1EB0AE7676CE3458764C, - A191412DDC58FCC5A67373FD, - 3A3CD53AEB64CF57B6CADB59, - A9888AA5368432DCA5F64910, - 6FB8B11C25BB74994A407113, - 32184C99C6A9A997E6534029, - BCB8D7D4B1AFA15D3ACEFCEA, - 7BB3AB4907661D6FED799B7C, - 65E82ADF9AEE696576F43E92, - 43ACFC660A375B2DEDFE2274, - 10F328BCD86EF125C5DDA33D, - 727511F6927A7B2602A6C689, - EA8D7BB28F79E1545758D636, - D3C9856B677A34F8C60469F2, - 5C454FECFF7234355CEA17D4, - 8B5073191880BFFDF8B3BE6E, - BE0926F2599AC33A59DF23E1, - 0ACD709DE0EBA4A3D73325FD, - 75087C822B7871FA849D2909, - 7E47A29DD9817618F48068FF, - 4C8154CEB5C33EFB9E5CB8DC, - 0A6652042F8E043F43239E75, - 16E61715753895412F61F93B, - 66B4C39694799AC85ADDBECC, - 9091730D608EEEA35977BC1D, - 987C3D5A7CC55FB19AD24294, - E0E99D3CFACF9CB9B503EDD8, - 5C96DDE9CD90B82EA3CD6ED8, - 9EDDEEBCF410FDF5B96FAD65, - BAB603B7CA702368B2513074, - 0737A6A737019EFC6BC4CED0, - DDDCB9E999C4FF41EE6859DA, - C9441D8978D4B1F14F270228, - 48F1E4DDD3B2B8E5CC410EE1, - 5017AF048B9A8F840DA442A0, ); name = layout; sourceTree = "<group>"; }; - 58CA858FC033FD1F47ADA039 = {isa = PBXGroup; children = ( - 240283D05A8E1886987E07F2, - 3B059A5FF36DA71C1433CA60, - 33644BFBB02CBC8EFB61C5D2, - 63717F00538E1367E2B9D812, - B83E41BC9767A790F2D04403, - FEBB5ECA2C071F61AFD9A9D2, - 92E4C9A69A2DAD900D128A02, - A947623ED5EA00C6C3FD8EBE, - 6C25EB12F6DB9F5225E75667, - 5805FE3FCA0B3CD8E2851774, - 8681C46D7B7D05BEEB56E44E, - 700F6188EAA73DD57767694F, - B18059D88300EB8EF703A82B, - F4C1A19AAC280B0A58F73FAD, - 22C0EC04F7C30AAE16E632A7, - 5801B222830CA1E1006968BA, - 2DE3560E8DB420766D385023, - B895CACE6FF447C83DC7ABF1, ); name = buttons; sourceTree = "<group>"; }; - A3BF94AE00810C812E121816 = {isa = PBXGroup; children = ( - 405388248E6EF4212019AC65, - 393E7A4E9BEC14AFC441E73F, - 18AAAE2846B4512094CF9E64, - C7790615097597DFBFBFADC8, - 4108E23948D43A46FB88B23E, - FF320FE35050A585E08FF993, - A2F1EA2989EF154ADBFDC4C3, - 8531F4060FE4BEBEC2E8EF9F, - EE34B44EC8BF50DF2A1EADA6, - 786095D2FAF63CBC05B170C6, - CF736AF0DD24273D1F1FF37A, - 9F58502C5ADE97059BD8BFE3, - 3AC808D92D13832338534F7F, - 4AD7BBD9D7EA422981A8C536, ); name = positioning; sourceTree = "<group>"; }; - 69E5820210E99179A52F1A77 = {isa = PBXGroup; children = ( - 7BD8AE7287AB53880575A757, - B290C6821BDC0912A94A1127, - 909FCA929A162A919ABF6575, - E626D36E7158BA472EF89AD5, - 7E8730C293CF253B56930440, - 84493A7AD6B0398B732461FB, - 630428D04F157F7162C05D59, - 5FDE1D586B6984E67E3B1E19, - 7DBCC7A6E5B251DA94AB0EE0, - 641338764B8C715715DA7351, - F004FD803D0EDAAB81667345, - F9B4B5E9595EC2CD47736BAC, - 55B79C48660935077095DBFD, - 5EE461C6611D3669B36F639D, - 1FEE53F170737A23D412C425, ); name = drawables; sourceTree = "<group>"; }; - B2243BBE276C148522C5987E = {isa = PBXGroup; children = ( - 486683F365BE1E8CEE34D4D3, - 2249F79A9B7FFE48DACC14CF, - 4CA96F577DD15FB5085518E9, - 29C79CFD0760D5BEF0C11D4D, - BBBBDB341B49EA3277A24D8C, - 09261261800229B6438A9A5B, - F54E3F6CA70967D469913C48, - B941446353FA94BCE78D001D, - 0E06FB23B05CE46487F509C8, - 2F9762C3866D161E38B4FD00, - D61B5AB0906CF9228E8360BF, - DD5E98AA79A9883B74F5D38A, - B54CB8DDB5000BDCBDECD8BA, - 43B30439D7A63B0D2CF12AC9, ); name = properties; sourceTree = "<group>"; }; - C2A68B1BEC638D0513BF25C1 = {isa = PBXGroup; children = ( - CD0146FF182F74D52D481EB7, - 12D78FB671BC817D433079B1, - 498E9D7F6E7F61A84E0D7792, - 2412E1E63124369CE418894D, - 23D5A9D86894973926E3EFB8, - 58FA9E2B67AED7330158A903, - 0AE2B4F22C863455A366D251, - 7BBA8AF8E7872672F190C1C7, ); name = lookandfeel; sourceTree = "<group>"; }; - 00C2E5EAA46FC2E94B735C42 = {isa = PBXGroup; children = ( - AD828AEF8A826DCAD19095B7, - 0FAD42641F0AAC0B7E906D18, - 334E3DFFA297DD18AD57F40F, - C2EEEB5E55C76817AC291BF0, - 0F9DBA4AB2BD63773528D805, - 33B2073D379E18BC2919FA07, - 27C16EA8D243AC7934DF11B1, - A3F5671F82CBAC136EEA4D26, - 2875464712C12E9BFCCEE57D, - 97227974323F8526EB062F78, - 1270CC27AD4D0805DD4BA465, - 9A154A0F904C15BF6E1253F5, - 73D0EA57406DF9583EE8FB3B, - 87B65D3DBFD7D35B15010226, - 507C2DFBFDA8AB08F71ED82D, - EBB34E4A7C7DE86F68EE7A7E, - 3131C94D973A735EA68C1C77, - 4E2A191756179C6616D50B58, - A99E772786C0A210E4CDF0D4, - 7F3AE35521DFE092953385B6, - F9505DCCE2815E8238BB88B7, - 668D7FDE00212229DFCB2175, - 2802BE05CAC2BE78EFD5A239, - 36F06F123E9717834A627F8D, - 39698748BDD86977C4474DE4, - 44F454FF28C39CC641FF410B, ); name = filebrowser; sourceTree = "<group>"; }; - 952AFE51A503A04FFF4B0EF7 = {isa = PBXGroup; children = ( - 993AD03D61870459F867B2F5, - 97C816B1B6B7FBC38DF10303, - 95A64B8A811BB2D78C6F13B9, - 60285932750263E48A18908C, - 56ECDE6643205406C32D1CE8, - DB5C7AA110B217372A52159A, - 4F052A9DD4EFD3C761C7EBA2, - E76DA0073983CF90CCE4096B, - 914C0B02F52FA4C06116EDB1, ); name = commands; sourceTree = "<group>"; }; - 76F28FCB72DD5943D08F3342 = {isa = PBXGroup; children = ( - 2D6B797AC8B1B5E7C8E7D1E9, - CD9FC835C7A1DE440792F5B4, - 92BE7C40FE77D34FFF39D9BB, - 4F8DCA25AFAD089510C8B48B, ); name = misc; sourceTree = "<group>"; }; - DD0FDFC530E403BD51C86315 = {isa = PBXGroup; children = ( - A3AC7148A7357852CA7018AF, - 323BA212B37224C61A9C1740, - 814A077ED7A54254415C309C, ); name = application; sourceTree = "<group>"; }; - 8EAF68A83656BC02B4B7C9C9 = {isa = PBXGroup; children = ( - 529B9F1BADEE58EA9F4F8C09, - 822A59FE23E0E962993EFF1C, - F361B20780764ADD61B1B692, - 6F4A2CF770F9E789E695825E, - 27E909E8C27DFBF0F184DCBD, - D0B6A9AF3EC42C025B11894D, - F61D66D41025A0E4F9CDBE7A, - 5293C026D920F2E0E710447C, - 08AF500230E8F8644B3682F5, - 8E673D43C2CD68894A10B99D, - A36D9A1D559944BB4EAF2F5E, - 921FBD47F9842396F1CB22ED, - 101572E83E487C91969D671C, - C89684A359852FD2B16D705A, - 0F4EFF11F984ED5E2A2045A1, - 3832E22BBFD9A9A1E9EEED6F, ); name = native; sourceTree = "<group>"; }; - 2A27F41171A44038C2A1CB56 = {isa = PBXGroup; children = ( - 2CEAE8B236FEF5E06317EF3B, - CD1AFCF4DFA46BA5BACBB1CB, - A186EF5D092D513F30A4FE23, - 617C7A87C00C7357D6B4CA43, - FDA3E07A3631D25DFEA73850, - 1183520311BFD05477F94ECA, - 3644BF38DFC789105B7D80FB, - 58CA858FC033FD1F47ADA039, - A3BF94AE00810C812E121816, - 69E5820210E99179A52F1A77, - B2243BBE276C148522C5987E, - C2A68B1BEC638D0513BF25C1, - 00C2E5EAA46FC2E94B735C42, - 952AFE51A503A04FFF4B0EF7, - 76F28FCB72DD5943D08F3342, - DD0FDFC530E403BD51C86315, - 8EAF68A83656BC02B4B7C9C9, - 5B9EE26978797CC153F5E24F, - E509DD48975A90978E116EBD, ); name = "juce_gui_basics"; sourceTree = "<group>"; }; - 9DEFBE65118D0527555955A2 = {isa = PBXGroup; children = ( - C7D4CFEA33205B2D33955B9E, - 69BB2D7A2EDAB1C87EA1F688, - 981A11A17B5DD50BC2A69F33, - EB1F11E213640441C36CDD21, - A9BAF0420FC4DC07011EA244, - 67FF4A3F3E1CD9583EABE1F6, - 8C48F6C90CB6D2CBB19511B3, - 0E24C59E408559F9DF1DC31A, - 421BFE95D4EE1C5D12BBB848, - D409BCF0D1C42B2761F89C6F, - 3F9D0CEF873510CCD254A9C5, - 28E80FBE60ED3FE73CCAB834, ); name = "code_editor"; sourceTree = "<group>"; }; - 1D09D8A2B803860D8927C366 = {isa = PBXGroup; children = ( - D27D257731AF8F925F652C8F, - CB19A2F9C480B0739BC1D9F9, ); name = documents; sourceTree = "<group>"; }; - A1B124604F7F471E01D8AA6E = {isa = PBXGroup; children = ( - 189BC87D79A9670E686ACE00, - F0A49FF985A114AC31ED8F87, - D902B5961F78F2A6DFBF4B7F, ); name = embedding; sourceTree = "<group>"; }; - DD35BF639F13CB10E9ACF910 = {isa = PBXGroup; children = ( - BE876A77E905E3C0D9B66450, - 258C17078206C550B08DD0F4, ); name = lookandfeel; sourceTree = "<group>"; }; - F50C1ADB9086D61160516CB7 = {isa = PBXGroup; children = ( - A51E4D49C37A60CC0BCE4246, - 6F2DEA817E140C2659915138, - E1D39D158E760B202DBEDA81, - 02CA8C3BE552E240C77A3722, - B9B67E7AC6527BDB9D4D42D0, - EF24C96CD12FC8589756DEF1, - 29CA2D82E54BA471A7F0D4A7, - C68D8C25B8BD332BA1DFB32E, - 5B8805BE8EFB29BFC7BD6D31, - 8D89602169EF2FB7E38F8C0D, - 3F8D9C9557E45D151F339F5E, - 84BC9171F02182D3AFD04F66, - 60138E309DBA8366F9AA83A5, - E794F8DCA1BD195F1D0BC64B, - 62112F8E435A750E1D2B28E0, - 24B8D9E228BF396D1B8C705E, - 2F365E601995A1B068BAC1C2, - 825F21A8A32CC0FD20B845A6, ); name = misc; sourceTree = "<group>"; }; - 4C0BD8F18173E3D675D03872 = {isa = PBXGroup; children = ( - D03B334EFDF780C2C0FE33B8, - BA9B833DA92A957DB959CECC, - AC544E614702255B972E1E8F, - D439FCBFE0FCAA2C67548362, - 4BE6A47DF33CCD5619DFE82A, - 742B8388A246A9E984457C7A, - 8B2E98629FB118FAAB8E2476, - 0B9187D02C50D0A3C4516DC4, - 2FAD2E774B5F20B781D5AEB2, - 5377705718D6D60A6AA2848F, - C5424781C756A8FF3D66670D, - 9EFFD9F226690A84BBA574C4, ); name = native; sourceTree = "<group>"; }; - DFC8A876133A671741A5FCA2 = {isa = PBXGroup; children = ( - 9DEFBE65118D0527555955A2, - 1D09D8A2B803860D8927C366, - A1B124604F7F471E01D8AA6E, - DD35BF639F13CB10E9ACF910, - F50C1ADB9086D61160516CB7, - 4C0BD8F18173E3D675D03872, - C82094E39B4C9B4DE35A7EB4, - D6070A7CF3873DFD1B1A53A5, ); name = "juce_gui_extra"; sourceTree = "<group>"; }; - 8A24D1B6925535A868974986 = {isa = PBXGroup; children = ( - 8BA5B0B5CBCE8D29F02D341A, - E58F94F6CDB786C1ED488C9C, - 6A6672A570C2C2418F926C82, - DE7F542DC0967F8EDCC4DCD0, - E9819C83D0B797FC71811B1B, - 2A27F41171A44038C2A1CB56, - DFC8A876133A671741A5FCA2, ); name = "Juce Modules"; sourceTree = "<group>"; }; - 2C6746F66EF4444F53B3221F = {isa = PBXGroup; children = ( - 8702F43110E4CCA5E5F827F5, - 472F9A90F685220D730EBF6C, - 4F687965FBE86EAFDB3ACFEC, - B72DAC469A62BD52C86102E7, - 2D5E55D7E0BC08AAF7B6E150, - 2C53E412EF7FC1036E4B11AC, - BB72D9AA25D5D5B090F16513, - 9993F2BAA90AA22D16B7F40B, - 20EABC08F7EFE741D7C3B622, - DDF2C578191FFE07300541E8, - 364D1A9B113320407A7E57B9, ); name = "Juce Library Code"; sourceTree = "<group>"; }; - 8180B5894A78501084B8F133 = {isa = PBXGroup; children = ( - 4CA1C3E6585D7694AA9C309F, - 6678E9B3EEACAD47F438B264, - 951128CA33CCDEF570436B1C, - B483D960309FAFC193F9CDA2, ); name = Resources; sourceTree = "<group>"; }; - 0FFEF043CA89142B18C79ABE = {isa = PBXGroup; children = ( - D00F311BFC3C2625C457CB9B, - D1F9B0E9F5D54FE48BEB46EA, - E96597BBC6A98255B51B94DC, - E5D6C36496F5BC84D7213BE8, - CF6C8BD0DA3D8CD4E99EBADA, ); name = Frameworks; sourceTree = "<group>"; }; - 92ABB8016546F41128399E9D = {isa = PBXGroup; children = ( - 25F52316D256B4534BED16D1, ); name = Products; sourceTree = "<group>"; }; - 3CC531922CC2D398E283A845 = {isa = PBXGroup; children = ( - D3109994DA6AD871BE85C4E2, - 8A24D1B6925535A868974986, - 2C6746F66EF4444F53B3221F, - 8180B5894A78501084B8F133, - 0FFEF043CA89142B18C79ABE, - 92ABB8016546F41128399E9D, ); name = Source; sourceTree = "<group>"; }; - EA0BCC969703B2D179089E55 = {isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(NATIVE_ARCH_ACTUAL)"; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_LINK_OBJC_RUNTIME = NO; - COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "_DEBUG=1", - "DEBUG=1", - "JUCER_XCODE_MAC_F6D2F4CF=1", - "JUCE_APP_VERSION=3.1.0", - "JUCE_APP_VERSION_HEX=0x30100", ); - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../JuceLibraryCode/modules", "$(inherited)"); - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; - MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; - OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter"; - SDKROOT_ppc = macosx10.5; }; name = Debug; }; - B159CF4275B8A90122629FF4 = {isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(NATIVE_ARCH_ACTUAL)"; +/* Begin PBXBuildFile section */ + 01D45DD829D8848733090B67 /* juce_cryptography.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D5E55D7E0BC08AAF7B6E150 /* juce_cryptography.mm */; }; + 110221CD5578153B528AD2BE /* jucer_ResourceFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D10D51A0A2D63F38B4D86A60 /* jucer_ResourceFile.cpp */; }; + 11D42F7EC6E6539D79A7F4B1 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E5D6C36496F5BC84D7213BE8 /* QuartzCore.framework */; }; + 123810DAF8AF758928916ECE /* jucer_JucerTreeViewBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 47DD50A5A9091F9900E0EAD9 /* jucer_JucerTreeViewBase.cpp */; }; + 1321E6C1C6170B6C898AD09D /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 951128CA33CCDEF570436B1C /* Icon.icns */; }; + 1499DF2E85B05AC1BF423773 /* jucer_Icons.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CF21D9DB3AEC0A4DCAB36A99 /* jucer_Icons.cpp */; }; + 1B988E139004D8E2850EB656 /* jucer_PaintRoutine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C187718F7B9EBA88584B43F3 /* jucer_PaintRoutine.cpp */; }; + 1E76E36772355E2A43CF4961 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D00F311BFC3C2625C457CB9B /* Carbon.framework */; }; + 1F37544891EC8DBB5E500C1C /* jucer_ProjectExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F71AF6D2DF3E652F8B51EBAB /* jucer_ProjectExporter.cpp */; }; + 20102F921FAA2A92CED056C0 /* juce_gui_extra.mm in Sources */ = {isa = PBXBuildFile; fileRef = DDF2C578191FFE07300541E8 /* juce_gui_extra.mm */; }; + 209FCCC2155A1FCB7E11E20D /* jucer_JucerDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 269A454F1FF081DA67FFD578 /* jucer_JucerDocument.cpp */; }; + 241F29FCBB7A17BB44A0B10C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1F9B0E9F5D54FE48BEB46EA /* Cocoa.framework */; }; + 244BA1BDA5FAA465EA3F9C6D /* jucer_OpenDocumentManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2247EE920DF0610CAF9F4513 /* jucer_OpenDocumentManager.cpp */; }; + 2610F357881240ACBF612F48 /* RecentFilesMenuTemplate.nib in Resources */ = {isa = PBXBuildFile; fileRef = 6678E9B3EEACAD47F438B264 /* RecentFilesMenuTemplate.nib */; }; + 30B921C38DCEE787B294B746 /* jucer_Project.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BAC43B20E14A340CCF14119C /* jucer_Project.cpp */; }; + 34716A3539FD288C09CBA38A /* jucer_TestComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 921752D9B004A15973DDF56F /* jucer_TestComponent.cpp */; }; + 357A6AA6960EF95D92929BEE /* jucer_AppearanceSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 441CFEA771BAA50E187342E9 /* jucer_AppearanceSettings.cpp */; }; + 3C5267E06A897B0DC0F7EA50 /* BinaryData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 472F9A90F685220D730EBF6C /* BinaryData.cpp */; }; + 3DC282564876B1FC88AAA9B3 /* jucer_ComponentDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 662C76394C5D1B56766FAFD9 /* jucer_ComponentDocument.cpp */; }; + 3EB3D569250C4BA4CA9AF578 /* jucer_DocumentEditorComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C7608A3967D9AB9481848F2B /* jucer_DocumentEditorComponent.cpp */; }; + 3FCA61C401007B243E2E9035 /* jucer_Module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F797071D88542C813CF7222A /* jucer_Module.cpp */; }; + 4028CA96EA50175DD6B8D976 /* juce_data_structures.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2C53E412EF7FC1036E4B11AC /* juce_data_structures.mm */; }; + 45576193A53DE94F5BF4C3D4 /* juce_graphics.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9993F2BAA90AA22D16B7F40B /* juce_graphics.mm */; }; + 45A53AF13B0D663050632E8C /* jucer_BinaryResources.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EF583A6201DBC813C2F63C4 /* jucer_BinaryResources.cpp */; }; + 49C22786B54C5DC94E4654B8 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E96597BBC6A98255B51B94DC /* IOKit.framework */; }; + 57B1F32A372143B4D3B1C517 /* jucer_ButtonDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E03B7C7A19E63A724EB79F4 /* jucer_ButtonDocument.cpp */; }; + 5BC89E7905397ABECD25ACCD /* jucer_NewFileWizard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F1163B7856FDABA413A88D90 /* jucer_NewFileWizard.cpp */; }; + 676D2E1E750E61AA2FAA335E /* jucer_ProjectContentComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86E468DE6556BB2AD76A3D80 /* jucer_ProjectContentComponent.cpp */; }; + 6FC19EBA7A51423C3D22F77B /* juce_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = B483D960309FAFC193F9CDA2 /* juce_icon.png */; }; + 78CB463DD98A55313A543859 /* jucer_FileHelpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1729AEDC34001C31B8CC357C /* jucer_FileHelpers.cpp */; }; + 8012E6487639A7368E4C4470 /* jucer_ProjectType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E70CA21960A64CCB835725FF /* jucer_ProjectType.cpp */; }; + 83431B7234A78ECFB3C15F63 /* jucer_GeneratedCode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 78D0DBC4798FF040FDB90F6D /* jucer_GeneratedCode.cpp */; }; + 8AD28823205783E6F676F254 /* jucer_ResourceEditorPanel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF725A596B7BCD7520CC0A9F /* jucer_ResourceEditorPanel.cpp */; }; + 8C1CC0E7A772D66635BA482F /* jucer_EditingPanelBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 98F42686D9DAC974F2514217 /* jucer_EditingPanelBase.cpp */; }; + 954A036F5DDB375DB23FFB3E /* jucer_CommandLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0400CB0E056A1D840304D2DE /* jucer_CommandLine.cpp */; }; + 95B44E6C74B1DED31DBE37EB /* jucer_Main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C52A3DDA62A746AA7A68535 /* jucer_Main.cpp */; }; + 9BF773500BA51A8B5C6C7348 /* jucer_ComponentTypeHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65C498761CE166072A202AA0 /* jucer_ComponentTypeHandler.cpp */; }; + A69BF71FA90E5A66B6EB2E0F /* jucer_JucerDocumentEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9C7FA58D223674C4C2AC6595 /* jucer_JucerDocumentEditor.cpp */; }; + A70F0274076C0D44ED71C980 /* jucer_ComponentLayoutEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EF30A74B566A461A171BBF83 /* jucer_ComponentLayoutEditor.cpp */; }; + AA9D0B8E23F3D87A23DE9F8A /* jucer_MainWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9069981E414A631B036CC9AC /* jucer_MainWindow.cpp */; }; + B980464FA2761CCD64B1FAD6 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CF6C8BD0DA3D8CD4E99EBADA /* WebKit.framework */; }; + BD1E0CBE74DDD2F303978E1F /* jucer_ComponentOverlayComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E191CDCE7565DB726CF7065 /* jucer_ComponentOverlayComponent.cpp */; }; + BF57EEE3415D6F8F03206846 /* juce_gui_basics.mm in Sources */ = {isa = PBXBuildFile; fileRef = 20EABC08F7EFE741D7C3B622 /* juce_gui_basics.mm */; }; + C2A85091A28C907A4E1E1687 /* jucer_ComponentLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 133F1E428260C5ADDF496DF9 /* jucer_ComponentLayout.cpp */; }; + C49E1D32A9DCE3D59BC48B1D /* jucer_ColouredElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93B419190CCE92ACAB1ED25B /* jucer_ColouredElement.cpp */; }; + C93569F47B4AC1A8E37992ED /* jucer_ObjectTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9D7689451732AF8333402B3A /* jucer_ObjectTypes.cpp */; }; + C9F11BA62D6D092A300363F7 /* jucer_MiscUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F249640243FBD5717F6ADD9 /* jucer_MiscUtilities.cpp */; }; + CD4F7B119CE718BCE78D61F4 /* jucer_CodeHelpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B9CAD20E1243B4351B4C8D8 /* jucer_CodeHelpers.cpp */; }; + CE91112DADB97C573C3C674D /* jucer_PaintElementPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0169ACAA0FAE70CCEEE4F650 /* jucer_PaintElementPath.cpp */; }; + D68DE111AFBD82F0D44A3B69 /* jucer_PaintRoutineEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B15E33E7342F6EB4F95C9B1D /* jucer_PaintRoutineEditor.cpp */; }; + E1268E019B434F6B5E9317DC /* jucer_PaintElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C216FE9B7A5209C5CCF2517 /* jucer_PaintElement.cpp */; }; + EC6A34EC9A9D454BF26AAD32 /* jucer_PaintRoutinePanel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 16203C6791259C9718A04C3A /* jucer_PaintRoutinePanel.cpp */; }; + F6635694A01FFBF5EF0968DB /* jucer_StoredSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 631983AA62673015F8D7453B /* jucer_StoredSettings.cpp */; }; + F70594FF1FFED9AC12F43709 /* juce_core.mm in Sources */ = {isa = PBXBuildFile; fileRef = B72DAC469A62BD52C86102E7 /* juce_core.mm */; }; + F743B7B2709E72250982F2FB /* juce_events.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB72D9AA25D5D5B090F16513 /* juce_events.mm */; }; + FBE57B26FE59319AA2E8B59D /* jucer_NewProjectWizard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A5D13490A62DAE9A7D5A22 /* jucer_NewProjectWizard.cpp */; }; + FCE6F604C00039A32649CB69 /* jucer_SourceCodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E680E2C65684A4272AE079A /* jucer_SourceCodeEditor.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0075C5208947159AF2802F3B /* jucer_AudioPluginEditorTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AudioPluginEditorTemplate.cpp; path = ../../Source/BinaryData/jucer_AudioPluginEditorTemplate.cpp; sourceTree = SOURCE_ROOT; }; + 008C8B2C2328CFBB9375397D /* jucer_ComboBoxHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComboBoxHandler.h; path = ../../Source/ComponentEditor/components/jucer_ComboBoxHandler.h; sourceTree = SOURCE_ROOT; }; + 00CBA904DE3B8686A6F569CD /* juce_Colours.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Colours.h; path = ../../../JuceLibraryCode/modules/juce_graphics/colour/juce_Colours.h; sourceTree = SOURCE_ROOT; }; + 00E86D533C0149A56F21D804 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../../JuceLibraryCode/modules/juce_core/juce_module_info; sourceTree = SOURCE_ROOT; }; + 00F860FEF209ABF0E800FA09 /* juce_ComponentPeer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentPeer.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ComponentPeer.h; sourceTree = SOURCE_ROOT; }; + 0153A6801552D0B4C21BE911 /* juce_LinkedListPointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LinkedListPointer.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_LinkedListPointer.h; sourceTree = SOURCE_ROOT; }; + 0169ACAA0FAE70CCEEE4F650 /* jucer_PaintElementPath.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_PaintElementPath.cpp; path = ../../Source/ComponentEditor/paintelements/jucer_PaintElementPath.cpp; sourceTree = SOURCE_ROOT; }; + 02CA8C3BE552E240C77A3722 /* juce_ColourSelector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ColourSelector.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_ColourSelector.cpp; sourceTree = SOURCE_ROOT; }; + 0329C05B4EE23CBB5578BF02 /* juce_Primes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Primes.h; path = ../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_Primes.h; sourceTree = SOURCE_ROOT; }; + 03D3053EDE47FED1919C6674 /* jucer_AudioPluginFilterTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginFilterTemplate.h; path = ../../Source/BinaryData/jucer_AudioPluginFilterTemplate.h; sourceTree = SOURCE_ROOT; }; + 0400CB0E056A1D840304D2DE /* jucer_CommandLine.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_CommandLine.cpp; path = ../../Source/Application/jucer_CommandLine.cpp; sourceTree = SOURCE_ROOT; }; + 043FC175E80305E3D95ECAF8 /* juce_NotificationType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NotificationType.h; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_NotificationType.h; sourceTree = SOURCE_ROOT; }; + 04A2C05B7935B8D335B5FD39 /* juce_MenuBarComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MenuBarComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp; sourceTree = SOURCE_ROOT; }; + 04C1267B2BD11A6ECCCA654C /* jucer_ComponentBooleanProperty.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentBooleanProperty.h; path = ../../Source/ComponentEditor/properties/jucer_ComponentBooleanProperty.h; sourceTree = SOURCE_ROOT; }; + 05076CDF1511A5F8A8E18F1D /* jucer_ProjectExport_Make.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectExport_Make.h; path = "../../Source/Project Saving/jucer_ProjectExport_Make.h"; sourceTree = SOURCE_ROOT; }; + 056E44027E3F3AFAB32FBC44 /* juce_LocalisedStrings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LocalisedStrings.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_LocalisedStrings.h; sourceTree = SOURCE_ROOT; }; + 06BB2D547BF07A31E8D46977 /* juce_PathIterator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PathIterator.h; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathIterator.h; sourceTree = SOURCE_ROOT; }; + 0737A6A737019EFC6BC4CED0 /* juce_TabbedButtonBar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TabbedButtonBar.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedButtonBar.h; sourceTree = SOURCE_ROOT; }; + 084171D9475B3491A4EFAB5F /* juce_Result.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Result.cpp; path = ../../../JuceLibraryCode/modules/juce_core/misc/juce_Result.cpp; sourceTree = SOURCE_ROOT; }; + 084C0070BC67BC893B967EF1 /* jucer_ToggleButtonHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ToggleButtonHandler.h; path = ../../Source/ComponentEditor/components/jucer_ToggleButtonHandler.h; sourceTree = SOURCE_ROOT; }; + 08AF500230E8F8644B3682F5 /* juce_mac_MainMenu.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_MainMenu.mm; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_MainMenu.mm; sourceTree = SOURCE_ROOT; }; + 09261261800229B6438A9A5B /* juce_ChoicePropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChoicePropertyComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h; sourceTree = SOURCE_ROOT; }; + 09BB016660D64FDCD2A9866F /* juce_win32_Direct2DGraphicsContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Direct2DGraphicsContext.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp; sourceTree = SOURCE_ROOT; }; + 09F93EBC7C2C877F3446A0C7 /* juce_KeyListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_KeyListener.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyListener.h; sourceTree = SOURCE_ROOT; }; + 0A6652042F8E043F43239E75 /* juce_ScrollBar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ScrollBar.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ScrollBar.cpp; sourceTree = SOURCE_ROOT; }; + 0A8D062EF44529B793CC5098 /* juce_CharacterFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharacterFunctions.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_CharacterFunctions.h; sourceTree = SOURCE_ROOT; }; + 0ACD709DE0EBA4A3D73325FD /* juce_ResizableCornerComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResizableCornerComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp; sourceTree = SOURCE_ROOT; }; + 0AE2B4F22C863455A366D251 /* juce_LookAndFeel_V3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LookAndFeel_V3.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp; sourceTree = SOURCE_ROOT; }; + 0B9187D02C50D0A3C4516DC4 /* juce_mac_SystemTrayIcon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_mac_SystemTrayIcon.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp; sourceTree = SOURCE_ROOT; }; + 0CF3C0EC356169F25B0BAA9D /* juce_AlertWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AlertWindow.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_AlertWindow.h; sourceTree = SOURCE_ROOT; }; + 0E06FB23B05CE46487F509C8 /* juce_PropertyPanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PropertyPanel.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyPanel.cpp; sourceTree = SOURCE_ROOT; }; + 0E24C59E408559F9DF1DC31A /* juce_CPlusPlusCodeTokeniserFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CPlusPlusCodeTokeniserFunctions.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h; sourceTree = SOURCE_ROOT; }; + 0F249640243FBD5717F6ADD9 /* jucer_MiscUtilities.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_MiscUtilities.cpp; path = ../../Source/Utility/jucer_MiscUtilities.cpp; sourceTree = SOURCE_ROOT; }; + 0F4EFF11F984ED5E2A2045A1 /* juce_win32_FileChooser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_FileChooser.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp; sourceTree = SOURCE_ROOT; }; + 0F9DBA4AB2BD63773528D805 /* juce_FileBrowserComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileBrowserComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; + 0FAD42641F0AAC0B7E906D18 /* juce_DirectoryContentsDisplayComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DirectoryContentsDisplayComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h; sourceTree = SOURCE_ROOT; }; + 0FB3551C6845EF0E9312F850 /* juce_ModifierKeys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ModifierKeys.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_ModifierKeys.h; sourceTree = SOURCE_ROOT; }; + 0FD7364EC64E25AE854E9A9D /* juce_GlyphArrangement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GlyphArrangement.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_GlyphArrangement.cpp; sourceTree = SOURCE_ROOT; }; + 0FF1C6905150EAAB1AE081A7 /* jucer_ButtonHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ButtonHandler.h; path = ../../Source/ComponentEditor/components/jucer_ButtonHandler.h; sourceTree = SOURCE_ROOT; }; + 101572E83E487C91969D671C /* juce_MultiTouchMapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MultiTouchMapper.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_MultiTouchMapper.h; sourceTree = SOURCE_ROOT; }; + 104463B9110789FCDA7BD4FB /* juce_KeyboardFocusTraverser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_KeyboardFocusTraverser.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h; sourceTree = SOURCE_ROOT; }; + 10AC5E5349AFAF11362E4199 /* juce_PlatformDefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PlatformDefs.h; path = ../../../JuceLibraryCode/modules/juce_core/system/juce_PlatformDefs.h; sourceTree = SOURCE_ROOT; }; + 10F328BCD86EF125C5DDA33D /* juce_ConcertinaPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ConcertinaPanel.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h; sourceTree = SOURCE_ROOT; }; + 1125D1B2AE54AEF2EB3D51C0 /* jucer_JucerDocumentEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_JucerDocumentEditor.h; path = ../../Source/ComponentEditor/ui/jucer_JucerDocumentEditor.h; sourceTree = SOURCE_ROOT; }; + 114845541FC5BE3453B6BD4C /* juce_XmlDocument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_XmlDocument.cpp; path = ../../../JuceLibraryCode/modules/juce_core/xml/juce_XmlDocument.cpp; sourceTree = SOURCE_ROOT; }; + 1233E258E4C1FD4AAA7A6D1A /* juce_InterprocessConnectionServer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InterprocessConnectionServer.h; path = ../../../JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnectionServer.h; sourceTree = SOURCE_ROOT; }; + 1270CC27AD4D0805DD4BA465 /* juce_FileChooserDialogBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileChooserDialogBox.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h; sourceTree = SOURCE_ROOT; }; + 12875173A50B701B72E68F90 /* juce_FileLogger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileLogger.cpp; path = ../../../JuceLibraryCode/modules/juce_core/logging/juce_FileLogger.cpp; sourceTree = SOURCE_ROOT; }; + 12ABAFDD4C4BCA2B8313F1CE /* juce_ApplicationProperties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationProperties.h; path = ../../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_ApplicationProperties.h; sourceTree = SOURCE_ROOT; }; + 12D78FB671BC817D433079B1 /* juce_LookAndFeel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LookAndFeel.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h; sourceTree = SOURCE_ROOT; }; + 1320D638B7BACCADEDA5ABD2 /* juce_DynamicLibrary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DynamicLibrary.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_DynamicLibrary.h; sourceTree = SOURCE_ROOT; }; + 133F1E428260C5ADDF496DF9 /* jucer_ComponentLayout.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ComponentLayout.cpp; path = ../../Source/ComponentEditor/jucer_ComponentLayout.cpp; sourceTree = SOURCE_ROOT; }; + 136A3229F6535E2FBB9993E2 /* juce_ImageEffectFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageEffectFilter.h; path = ../../../JuceLibraryCode/modules/juce_graphics/effects/juce_ImageEffectFilter.h; sourceTree = SOURCE_ROOT; }; + 13E76507D88192A1B9554073 /* juce_BigInteger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BigInteger.cpp; path = ../../../JuceLibraryCode/modules/juce_core/maths/juce_BigInteger.cpp; sourceTree = SOURCE_ROOT; }; + 140ABB31EF22CAE40D874BB0 /* juce_Range.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Range.h; path = ../../../JuceLibraryCode/modules/juce_core/maths/juce_Range.h; sourceTree = SOURCE_ROOT; }; + 149020249A77110311411E15 /* juce_Desktop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Desktop.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_Desktop.h; sourceTree = SOURCE_ROOT; }; + 14BE817BFCB5B1CF2799C860 /* juce_InputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InputStream.h; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_InputStream.h; sourceTree = SOURCE_ROOT; }; + 159A5AC2CAF01A7A17ECA0A0 /* juce_ReferenceCountedArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ReferenceCountedArray.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_ReferenceCountedArray.h; sourceTree = SOURCE_ROOT; }; + 1602D140D6F478765ACEA660 /* juce_UndoManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_UndoManager.cpp; path = ../../../JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoManager.cpp; sourceTree = SOURCE_ROOT; }; + 16203C6791259C9718A04C3A /* jucer_PaintRoutinePanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_PaintRoutinePanel.cpp; path = ../../Source/ComponentEditor/ui/jucer_PaintRoutinePanel.cpp; sourceTree = SOURCE_ROOT; }; + 16413B69F7D1E2862AFBE61F /* juce_BigInteger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BigInteger.h; path = ../../../JuceLibraryCode/modules/juce_core/maths/juce_BigInteger.h; sourceTree = SOURCE_ROOT; }; + 16C7EFDF9ED765D02DA12C55 /* juce_InputSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InputSource.h; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_InputSource.h; sourceTree = SOURCE_ROOT; }; + 16E61715753895412F61F93B /* juce_ScrollBar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScrollBar.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ScrollBar.h; sourceTree = SOURCE_ROOT; }; + 17173DDA0532B81C71D95B05 /* juce_TextDragAndDropTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextDragAndDropTarget.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h; sourceTree = SOURCE_ROOT; }; + 1729AEDC34001C31B8CC357C /* jucer_FileHelpers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_FileHelpers.cpp; path = ../../Source/Utility/jucer_FileHelpers.cpp; sourceTree = SOURCE_ROOT; }; + 174CE62B43D97B83AF1D3338 /* juce_DragAndDropTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DragAndDropTarget.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h; sourceTree = SOURCE_ROOT; }; + 1848EB565B679F72C560EBAD /* juce_FileSearchPath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileSearchPath.h; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_FileSearchPath.h; sourceTree = SOURCE_ROOT; }; + 188D03A4247F4BC0539F5C49 /* jucer_Colours.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_Colours.h; path = ../../Source/Utility/jucer_Colours.h; sourceTree = SOURCE_ROOT; }; + 189BC87D79A9670E686ACE00 /* juce_ActiveXControlComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ActiveXControlComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h; sourceTree = SOURCE_ROOT; }; + 18AAAE2846B4512094CF9E64 /* juce_RelativeCoordinate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeCoordinate.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp; sourceTree = SOURCE_ROOT; }; + 18D9EBA1DAE45EEF81FD5C8F /* jucer_MainConsoleAppTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_MainConsoleAppTemplate.cpp; path = ../../Source/BinaryData/jucer_MainConsoleAppTemplate.cpp; sourceTree = SOURCE_ROOT; }; + 1908920B3166E7B7A7A095BC /* juce_PixelFormats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PixelFormats.h; path = ../../../JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h; sourceTree = SOURCE_ROOT; }; + 1958777C37415EC581CD4B74 /* juce_Expression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Expression.h; path = ../../../JuceLibraryCode/modules/juce_core/maths/juce_Expression.h; sourceTree = SOURCE_ROOT; }; + 199E3F67A1E48F7D95AC6E1E /* juce_UndoableAction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_UndoableAction.h; path = ../../../JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoableAction.h; sourceTree = SOURCE_ROOT; }; + 1AF7EFBE4961C7B6C834BF54 /* jucer_PresetIDs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PresetIDs.h; path = ../../Source/Utility/jucer_PresetIDs.h; sourceTree = SOURCE_ROOT; }; + 1B4284167C1A10170537305A /* juce_ModifierKeys.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ModifierKeys.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp; sourceTree = SOURCE_ROOT; }; + 1BE0A264A6AA494EF75B582B /* juce_File.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_File.h; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_File.h; sourceTree = SOURCE_ROOT; }; + 1C216FE9B7A5209C5CCF2517 /* jucer_PaintElement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_PaintElement.cpp; path = ../../Source/ComponentEditor/paintelements/jucer_PaintElement.cpp; sourceTree = SOURCE_ROOT; }; + 1C94985541E125A49C70C07C /* juce_ThreadPool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ThreadPool.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_ThreadPool.h; sourceTree = SOURCE_ROOT; }; + 1D3D6A19A60F0B03DE2F1C14 /* jucer_PaintElementPath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElementPath.h; path = ../../Source/ComponentEditor/paintelements/jucer_PaintElementPath.h; sourceTree = SOURCE_ROOT; }; + 1DC3F7820AA6D950B2C6D628 /* juce_SystemStats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SystemStats.h; path = ../../../JuceLibraryCode/modules/juce_core/system/juce_SystemStats.h; sourceTree = SOURCE_ROOT; }; + 1F04ABB8C6FA1598902FE33A /* juce_Variant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Variant.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_Variant.h; sourceTree = SOURCE_ROOT; }; + 1F421199C40092BFEE0658C2 /* jucer_RelativePath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_RelativePath.h; path = ../../Source/Utility/jucer_RelativePath.h; sourceTree = SOURCE_ROOT; }; + 1F869D818F79BE6EEE2305FD /* juce_DynamicObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DynamicObject.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_DynamicObject.h; sourceTree = SOURCE_ROOT; }; + 1F86FB8B8336D44337AE7119 /* juce_BlowFish.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BlowFish.h; path = ../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_BlowFish.h; sourceTree = SOURCE_ROOT; }; + 1F9BBDFA52513AD34D906D2A /* jucer_HyperlinkButtonHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_HyperlinkButtonHandler.h; path = ../../Source/ComponentEditor/components/jucer_HyperlinkButtonHandler.h; sourceTree = SOURCE_ROOT; }; + 1FA92F8F2B26C6CEC8B1D737 /* jucer_ButtonDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ButtonDocument.h; path = ../../Source/ComponentEditor/documents/jucer_ButtonDocument.h; sourceTree = SOURCE_ROOT; }; + 1FDBC89D596C6E959E7A8825 /* juce_NamedValueSet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_NamedValueSet.cpp; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_NamedValueSet.cpp; sourceTree = SOURCE_ROOT; }; + 1FEE53F170737A23D412C425 /* juce_SVGParser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SVGParser.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_SVGParser.cpp; sourceTree = SOURCE_ROOT; }; + 20D0FBDE77A58A302859A206 /* juce_RSAKey.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RSAKey.cpp; path = ../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_RSAKey.cpp; sourceTree = SOURCE_ROOT; }; + 20EABC08F7EFE741D7C3B622 /* juce_gui_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_gui_basics.mm; path = ../../../JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.mm; sourceTree = SOURCE_ROOT; }; + 2101B4CC3E5BDC7BD806678B /* juce_events.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_events.h; path = ../../../JuceLibraryCode/modules/juce_events/juce_events.h; sourceTree = SOURCE_ROOT; }; + 21822729E1EF7CC3D3528BFE /* juce_win32_DirectWriteTypeLayout.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_DirectWriteTypeLayout.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp; sourceTree = SOURCE_ROOT; }; + 223C4209F18A221EB183A056 /* jucer_AppearanceSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AppearanceSettings.h; path = ../../Source/Application/jucer_AppearanceSettings.h; sourceTree = SOURCE_ROOT; }; + 2247EE920DF0610CAF9F4513 /* jucer_OpenDocumentManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_OpenDocumentManager.cpp; path = ../../Source/Application/jucer_OpenDocumentManager.cpp; sourceTree = SOURCE_ROOT; }; + 2249F79A9B7FFE48DACC14CF /* juce_BooleanPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BooleanPropertyComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h; sourceTree = SOURCE_ROOT; }; + 22B29C61E4EB0C2FC4E54378 /* juce_BlowFish.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BlowFish.cpp; path = ../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_BlowFish.cpp; sourceTree = SOURCE_ROOT; }; + 22C0EC04F7C30AAE16E632A7 /* juce_ToggleButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ToggleButton.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.cpp; sourceTree = SOURCE_ROOT; }; + 231F4AC6660B650E08EF1E54 /* juce_NamedValueSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NamedValueSet.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_NamedValueSet.h; sourceTree = SOURCE_ROOT; }; + 237496FB515C526B510BB0C3 /* juce_CharPointer_UTF32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharPointer_UTF32.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF32.h; sourceTree = SOURCE_ROOT; }; + 23A8DE16C0CDB8EED18B008B /* jucer_CommandIDs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CommandIDs.h; path = ../../Source/Application/jucer_CommandIDs.h; sourceTree = SOURCE_ROOT; }; + 23D5A9D86894973926E3EFB8 /* juce_LookAndFeel_V2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LookAndFeel_V2.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp; sourceTree = SOURCE_ROOT; }; + 240283D05A8E1886987E07F2 /* juce_ArrowButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ArrowButton.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.cpp; sourceTree = SOURCE_ROOT; }; + 2412E1E63124369CE418894D /* juce_LookAndFeel_V1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LookAndFeel_V1.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h; sourceTree = SOURCE_ROOT; }; + 241A48F1D188BF19314065C2 /* juce_Justification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Justification.h; path = ../../../JuceLibraryCode/modules/juce_graphics/placement/juce_Justification.h; sourceTree = SOURCE_ROOT; }; + 24319DEF365C8368FD3AA4EC /* juce_Logger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Logger.cpp; path = ../../../JuceLibraryCode/modules/juce_core/logging/juce_Logger.cpp; sourceTree = SOURCE_ROOT; }; + 24B8D9E228BF396D1B8C705E /* juce_SystemTrayIconComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SystemTrayIconComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp; sourceTree = SOURCE_ROOT; }; + 24C34D0578AE6C7A3EA18781 /* jucer_InlineComponentTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_InlineComponentTemplate.h; path = ../../Source/BinaryData/jucer_InlineComponentTemplate.h; sourceTree = SOURCE_ROOT; }; + 24D73A13CD0F89E299E11B0E /* juce_SHA256.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SHA256.cpp; path = ../../../JuceLibraryCode/modules/juce_cryptography/hashing/juce_SHA256.cpp; sourceTree = SOURCE_ROOT; }; + 257104EA81085B98E8AFCFB3 /* juce_ByteOrder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ByteOrder.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_ByteOrder.h; sourceTree = SOURCE_ROOT; }; + 258C17078206C550B08DD0F4 /* juce_OldSchoolLookAndFeel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OldSchoolLookAndFeel.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.h; sourceTree = SOURCE_ROOT; }; + 25F52316D256B4534BED16D1 /* Introjucer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Introjucer.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 263D9041F9B7D6A79DC38CD6 /* jucer_ComponentLayoutEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentLayoutEditor.h; path = ../../Source/ComponentEditor/ui/jucer_ComponentLayoutEditor.h; sourceTree = SOURCE_ROOT; }; + 269A454F1FF081DA67FFD578 /* jucer_JucerDocument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_JucerDocument.cpp; path = ../../Source/ComponentEditor/jucer_JucerDocument.cpp; sourceTree = SOURCE_ROOT; }; + 26B7487E9A0CB5C6CA5ACE58 /* juce_ListenerList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ListenerList.h; path = ../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ListenerList.h; sourceTree = SOURCE_ROOT; }; + 27A2B025813B7E54E0862642 /* jucer_PaintElementUndoableAction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElementUndoableAction.h; path = ../../Source/ComponentEditor/paintelements/jucer_PaintElementUndoableAction.h; sourceTree = SOURCE_ROOT; }; + 27C16EA8D243AC7934DF11B1 /* juce_FileBrowserListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileBrowserListener.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h; sourceTree = SOURCE_ROOT; }; + 27E909E8C27DFBF0F184DCBD /* juce_linux_Clipboard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Clipboard.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_Clipboard.cpp; sourceTree = SOURCE_ROOT; }; + 27F7865BD6FE03B970B8DBFB /* juce_RectanglePlacement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RectanglePlacement.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/placement/juce_RectanglePlacement.cpp; sourceTree = SOURCE_ROOT; }; + 2802BE05CAC2BE78EFD5A239 /* juce_ImagePreviewComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImagePreviewComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp; sourceTree = SOURCE_ROOT; }; + 2875464712C12E9BFCCEE57D /* juce_FileChooser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileChooser.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooser.h; sourceTree = SOURCE_ROOT; }; + 28A5DF3CEA69B587C9CA7C4A /* juce_LowLevelGraphicsPostScriptRenderer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LowLevelGraphicsPostScriptRenderer.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp; sourceTree = SOURCE_ROOT; }; + 28C9E13B1A70FDC728770C6E /* juce_Rectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Rectangle.h; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Rectangle.h; sourceTree = SOURCE_ROOT; }; + 28E80FBE60ED3FE73CCAB834 /* juce_XMLCodeTokeniser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_XMLCodeTokeniser.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h; sourceTree = SOURCE_ROOT; }; + 28E9116333CAD9E8164008A9 /* juce_Singleton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Singleton.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_Singleton.h; sourceTree = SOURCE_ROOT; }; + 295A9B126C98FE15F5A8B81E /* jucer_FilePropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FilePropertyComponent.h; path = ../../Source/ComponentEditor/properties/jucer_FilePropertyComponent.h; sourceTree = SOURCE_ROOT; }; + 29C79CFD0760D5BEF0C11D4D /* juce_ButtonPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ButtonPropertyComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h; sourceTree = SOURCE_ROOT; }; + 29CA2D82E54BA471A7F0D4A7 /* juce_KeyMappingEditorComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_KeyMappingEditorComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h; sourceTree = SOURCE_ROOT; }; + 29FD4A27890434E137DBC3B9 /* juce_mac_Strings.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_Strings.mm; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_mac_Strings.mm; sourceTree = SOURCE_ROOT; }; + 2A631496A56813D0EB2D0E5E /* juce_CallOutBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CallOutBox.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.h; sourceTree = SOURCE_ROOT; }; + 2A7B44B9D6C81585064098C3 /* juce_StringArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StringArray.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_StringArray.h; sourceTree = SOURCE_ROOT; }; + 2AB28295C237EC79481F5F9D /* juce_ActionListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ActionListener.h; path = ../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionListener.h; sourceTree = SOURCE_ROOT; }; + 2C0D1EB0AE7676CE3458764C /* juce_AnimatedPositionBehaviours.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AnimatedPositionBehaviours.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h; sourceTree = SOURCE_ROOT; }; + 2C53E412EF7FC1036E4B11AC /* juce_data_structures.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_data_structures.mm; path = ../../../JuceLibraryCode/modules/juce_data_structures/juce_data_structures.mm; sourceTree = SOURCE_ROOT; }; + 2C5E67AA30FCCE2E09C8CB6B /* juce_Array.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Array.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_Array.h; sourceTree = SOURCE_ROOT; }; + 2C9ED03E1C345D9A81BEB361 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../../JuceLibraryCode/modules/juce_cryptography/juce_module_info; sourceTree = SOURCE_ROOT; }; + 2CB1AA089385D7399AC615CE /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../../JuceLibraryCode/modules/juce_data_structures/juce_module_info; sourceTree = SOURCE_ROOT; }; + 2CD34A70B4032C0426F7AA10 /* jucer_MainWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_MainWindow.h; path = ../../Source/Application/jucer_MainWindow.h; sourceTree = SOURCE_ROOT; }; + 2CF191F1A61F2C167FF2DADA /* juce_MemoryInputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MemoryInputStream.cpp; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryInputStream.cpp; sourceTree = SOURCE_ROOT; }; + 2D035221BF4D4B8C56FA3653 /* juce_TableListBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TableListBox.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableListBox.cpp; sourceTree = SOURCE_ROOT; }; + 2D5E55D7E0BC08AAF7B6E150 /* juce_cryptography.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_cryptography.mm; path = ../../../JuceLibraryCode/modules/juce_cryptography/juce_cryptography.mm; sourceTree = SOURCE_ROOT; }; + 2D6B77C09B5AF1BBD821D224 /* juce_Identifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Identifier.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_Identifier.h; sourceTree = SOURCE_ROOT; }; + 2D6B797AC8B1B5E7C8E7D1E9 /* juce_BubbleComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BubbleComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp; sourceTree = SOURCE_ROOT; }; + 2D9E9803A9DF82BBA42294E9 /* juce_RectangleList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RectangleList.h; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_RectangleList.h; sourceTree = SOURCE_ROOT; }; + 2DE3560E8DB420766D385023 /* juce_ToolbarButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ToolbarButton.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp; sourceTree = SOURCE_ROOT; }; + 2E183952277F99D860EEB3F3 /* juce_MenuBarModel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MenuBarModel.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarModel.cpp; sourceTree = SOURCE_ROOT; }; + 2E680E2C65684A4272AE079A /* jucer_SourceCodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_SourceCodeEditor.cpp; path = "../../Source/Code Editor/jucer_SourceCodeEditor.cpp"; sourceTree = SOURCE_ROOT; }; + 2EEB1C074162F363C6599282 /* jucer_CommandLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CommandLine.h; path = ../../Source/Application/jucer_CommandLine.h; sourceTree = SOURCE_ROOT; }; + 2F365E601995A1B068BAC1C2 /* juce_SystemTrayIconComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SystemTrayIconComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h; sourceTree = SOURCE_ROOT; }; + 2F9762C3866D161E38B4FD00 /* juce_PropertyPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PropertyPanel.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyPanel.h; sourceTree = SOURCE_ROOT; }; + 2FAD2E774B5F20B781D5AEB2 /* juce_mac_WebBrowserComponent.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_WebBrowserComponent.mm; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm; sourceTree = SOURCE_ROOT; }; + 2FD9D5944388186AAA32FEE2 /* juce_Colour.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Colour.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/colour/juce_Colour.cpp; sourceTree = SOURCE_ROOT; }; + 2FF61C42E37986022C189531 /* juce_KeyPress.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_KeyPress.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyPress.cpp; sourceTree = SOURCE_ROOT; }; + 301592EBAC0FFF6F5B268E99 /* background_tile.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = background_tile.png; path = ../../Source/BinaryData/background_tile.png; sourceTree = SOURCE_ROOT; }; + 3131C94D973A735EA68C1C77 /* juce_FilenameComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FilenameComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h; sourceTree = SOURCE_ROOT; }; + 318467BF5A24F08E30FB78DF /* juce_TargetPlatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TargetPlatform.h; path = ../../../JuceLibraryCode/modules/juce_core/system/juce_TargetPlatform.h; sourceTree = SOURCE_ROOT; }; + 32184C99C6A9A997E6534029 /* juce_ComponentBuilder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentBuilder.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp; sourceTree = SOURCE_ROOT; }; + 323BA212B37224C61A9C1740 /* juce_Application.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Application.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/application/juce_Application.h; sourceTree = SOURCE_ROOT; }; + 333B1D00E46AF5A642C1DCDE /* juce_Uuid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Uuid.h; path = ../../../JuceLibraryCode/modules/juce_core/misc/juce_Uuid.h; sourceTree = SOURCE_ROOT; }; + 334E3DFFA297DD18AD57F40F /* juce_DirectoryContentsList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DirectoryContentsList.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp; sourceTree = SOURCE_ROOT; }; + 33644BFBB02CBC8EFB61C5D2 /* juce_Button.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Button.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_Button.cpp; sourceTree = SOURCE_ROOT; }; + 33B2073D379E18BC2919FA07 /* juce_FileBrowserComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileBrowserComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h; sourceTree = SOURCE_ROOT; }; + 33E0A6C9F0AE53BEC8778775 /* juce_linux_Messaging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Messaging.cpp; path = ../../../JuceLibraryCode/modules/juce_events/native/juce_linux_Messaging.cpp; sourceTree = SOURCE_ROOT; }; + 34705FA6042CBE98AAF77B61 /* juce_WindowsRegistry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WindowsRegistry.h; path = ../../../JuceLibraryCode/modules/juce_core/misc/juce_WindowsRegistry.h; sourceTree = SOURCE_ROOT; }; + 34D4199F01C019ED54544C1E /* juce_ScopedReadLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScopedReadLock.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_ScopedReadLock.h; sourceTree = SOURCE_ROOT; }; + 3514E78B58A08F4C98F54C5A /* jucer_ComponentLayoutPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentLayoutPanel.h; path = ../../Source/ComponentEditor/ui/jucer_ComponentLayoutPanel.h; sourceTree = SOURCE_ROOT; }; + 35CB48D497F35BF3F6998F5D /* jucer_ProjectExporter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectExporter.h; path = "../../Source/Project Saving/jucer_ProjectExporter.h"; sourceTree = SOURCE_ROOT; }; + 35E6EE1E98DD7050DDFECD9B /* jucer_ContentCompTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ContentCompTemplate.h; path = ../../Source/BinaryData/jucer_ContentCompTemplate.h; sourceTree = SOURCE_ROOT; }; + 364D1A9B113320407A7E57B9 /* JuceHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = SOURCE_ROOT; }; + 36E341F289B15DB1B7FA7528 /* juce_FileOutputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileOutputStream.cpp; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_FileOutputStream.cpp; sourceTree = SOURCE_ROOT; }; + 36F06F123E9717834A627F8D /* juce_ImagePreviewComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImagePreviewComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h; sourceTree = SOURCE_ROOT; }; + 3706C20941A79E5A8DE08DE4 /* juce_Desktop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Desktop.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_Desktop.cpp; sourceTree = SOURCE_ROOT; }; + 375AFDF06A908D89DEC5205F /* jucer_ProjectTree_Base.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectTree_Base.h; path = ../../Source/Project/jucer_ProjectTree_Base.h; sourceTree = SOURCE_ROOT; }; + 37AD2C828C069B17DB0C70EE /* juce_ChangeBroadcaster.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ChangeBroadcaster.cpp; path = ../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp; sourceTree = SOURCE_ROOT; }; + 37C65F13D7CF8A718D1569AE /* juce_GZIPCompressorOutputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GZIPCompressorOutputStream.cpp; path = ../../../JuceLibraryCode/modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp; sourceTree = SOURCE_ROOT; }; + 3832E22BBFD9A9A1E9EEED6F /* juce_win32_Windowing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Windowing.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_Windowing.cpp; sourceTree = SOURCE_ROOT; }; + 385426A4A6D3BFC4B2FD310C /* juce_AbstractFifo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AbstractFifo.cpp; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_AbstractFifo.cpp; sourceTree = SOURCE_ROOT; }; + 393E7A4E9BEC14AFC441E73F /* juce_MarkerList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MarkerList.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_MarkerList.h; sourceTree = SOURCE_ROOT; }; + 39698748BDD86977C4474DE4 /* juce_WildcardFileFilter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_WildcardFileFilter.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.cpp; sourceTree = SOURCE_ROOT; }; + 3970C8444A2A081455299CE8 /* juce_Javascript.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Javascript.cpp; path = ../../../JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.cpp; sourceTree = SOURCE_ROOT; }; + 39D907284C634E6A9FC45E3E /* juce_InputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_InputStream.cpp; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_InputStream.cpp; sourceTree = SOURCE_ROOT; }; + 3A3CD53AEB64CF57B6CADB59 /* juce_ComponentAnimator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentAnimator.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentAnimator.h; sourceTree = SOURCE_ROOT; }; + 3A5B5DC92BE6D22CA15B9671 /* jucer_SnapGridPainter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_SnapGridPainter.h; path = ../../Source/ComponentEditor/ui/jucer_SnapGridPainter.h; sourceTree = SOURCE_ROOT; }; + 3A9ACE7B66413BF99882ECC6 /* juce_RelativeTime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeTime.cpp; path = ../../../JuceLibraryCode/modules/juce_core/time/juce_RelativeTime.cpp; sourceTree = SOURCE_ROOT; }; + 3AC808D92D13832338534F7F /* juce_RelativeRectangle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeRectangle.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp; sourceTree = SOURCE_ROOT; }; + 3B059A5FF36DA71C1433CA60 /* juce_ArrowButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ArrowButton.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.h; sourceTree = SOURCE_ROOT; }; + 3CF3F730EA232DA860D1B79D /* juce_FileFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileFilter.h; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_FileFilter.h; sourceTree = SOURCE_ROOT; }; + 3D577E9A14625124F5933387 /* juce_HighResolutionTimer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_HighResolutionTimer.cpp; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_HighResolutionTimer.cpp; sourceTree = SOURCE_ROOT; }; + 3E03B7C7A19E63A724EB79F4 /* jucer_ButtonDocument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ButtonDocument.cpp; path = ../../Source/ComponentEditor/documents/jucer_ButtonDocument.cpp; sourceTree = SOURCE_ROOT; }; + 3ED948823F776108CD873C68 /* juce_DirectoryIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DirectoryIterator.cpp; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_DirectoryIterator.cpp; sourceTree = SOURCE_ROOT; }; + 3EFC8EEA0D7714261BB90A41 /* juce_ComboBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComboBox.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ComboBox.h; sourceTree = SOURCE_ROOT; }; + 3F00C034B140193B3754969B /* jucer_ImageResourceProperty.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ImageResourceProperty.h; path = ../../Source/ComponentEditor/paintelements/jucer_ImageResourceProperty.h; sourceTree = SOURCE_ROOT; }; + 3F8D9C9557E45D151F339F5E /* juce_PreferencesPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PreferencesPanel.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_PreferencesPanel.h; sourceTree = SOURCE_ROOT; }; + 3F9D0CEF873510CCD254A9C5 /* juce_XMLCodeTokeniser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_XMLCodeTokeniser.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp; sourceTree = SOURCE_ROOT; }; + 3F9D4C7F6E5779D4E4AE655D /* jucer_ComponentLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentLayout.h; path = ../../Source/ComponentEditor/jucer_ComponentLayout.h; sourceTree = SOURCE_ROOT; }; + 3FB2A9225024422947E6E654 /* juce_ImageConvolutionKernel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageConvolutionKernel.h; path = ../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageConvolutionKernel.h; sourceTree = SOURCE_ROOT; }; + 3FDA82F89379E99C9E3B5C64 /* juce_SortedSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SortedSet.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_SortedSet.h; sourceTree = SOURCE_ROOT; }; + 400E4C67ABCDDB1D49EBB85E /* jucer_TabbedComponentHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_TabbedComponentHandler.h; path = ../../Source/ComponentEditor/components/jucer_TabbedComponentHandler.h; sourceTree = SOURCE_ROOT; }; + 405388248E6EF4212019AC65 /* juce_MarkerList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MarkerList.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_MarkerList.cpp; sourceTree = SOURCE_ROOT; }; + 4064AE577A11F735B2CE87F0 /* juce_SharedResourcePointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SharedResourcePointer.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_SharedResourcePointer.h; sourceTree = SOURCE_ROOT; }; + 40B4AB02D26ED520104B9363 /* juce_win32_Registry.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Registry.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_win32_Registry.cpp; sourceTree = SOURCE_ROOT; }; + 40B9BA6D711F58DEB6E871BF /* juce_android_SystemStats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_SystemStats.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_android_SystemStats.cpp; sourceTree = SOURCE_ROOT; }; + 4108E23948D43A46FB88B23E /* juce_RelativeCoordinatePositioner.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeCoordinatePositioner.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp; sourceTree = SOURCE_ROOT; }; + 41105E536155E394E54BDD35 /* colourscheme_dark.xml */ = {isa = PBXFileReference; lastKnownFileType = file.xml; name = colourscheme_dark.xml; path = ../../Source/BinaryData/colourscheme_dark.xml; sourceTree = SOURCE_ROOT; }; + 419A5389244CCE7390877F1D /* juce_Typeface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Typeface.h; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Typeface.h; sourceTree = SOURCE_ROOT; }; + 41CA95403E264AA7457A61F4 /* jucer_PaintElementRoundedRectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElementRoundedRectangle.h; path = ../../Source/ComponentEditor/paintelements/jucer_PaintElementRoundedRectangle.h; sourceTree = SOURCE_ROOT; }; + 421BFE95D4EE1C5D12BBB848 /* juce_LuaCodeTokeniser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LuaCodeTokeniser.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp; sourceTree = SOURCE_ROOT; }; + 4301D29792107D6471F29FDF /* juce_FileInputSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileInputSource.h; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_FileInputSource.h; sourceTree = SOURCE_ROOT; }; + 439A60BB029251ED3752A69A /* juce_ContainerDeletePolicy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ContainerDeletePolicy.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_ContainerDeletePolicy.h; sourceTree = SOURCE_ROOT; }; + 43ACFC660A375B2DEDFE2274 /* juce_ConcertinaPanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ConcertinaPanel.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp; sourceTree = SOURCE_ROOT; }; + 43B30439D7A63B0D2CF12AC9 /* juce_TextPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextPropertyComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_TextPropertyComponent.h; sourceTree = SOURCE_ROOT; }; + 43BFDF9214946C6B76CA666D /* juce_DeletedAtShutdown.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DeletedAtShutdown.cpp; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_DeletedAtShutdown.cpp; sourceTree = SOURCE_ROOT; }; + 43E13FBEEA6CF191A0D501E5 /* juce_ImageFileFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageFileFormat.h; path = ../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageFileFormat.h; sourceTree = SOURCE_ROOT; }; + 441CFEA771BAA50E187342E9 /* jucer_AppearanceSettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AppearanceSettings.cpp; path = ../../Source/Application/jucer_AppearanceSettings.cpp; sourceTree = SOURCE_ROOT; }; + 4467B3824742815D1355DB81 /* juce_UnitTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_UnitTest.h; path = ../../../JuceLibraryCode/modules/juce_core/unit_tests/juce_UnitTest.h; sourceTree = SOURCE_ROOT; }; + 44F454FF28C39CC641FF410B /* juce_WildcardFileFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WildcardFileFilter.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.h; sourceTree = SOURCE_ROOT; }; + 45AE1D139D938D43891501E1 /* juce_FillType.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FillType.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/colour/juce_FillType.cpp; sourceTree = SOURCE_ROOT; }; + 46392AD7FE5D6BFED1BE827C /* juce_DropShadowEffect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DropShadowEffect.h; path = ../../../JuceLibraryCode/modules/juce_graphics/effects/juce_DropShadowEffect.h; sourceTree = SOURCE_ROOT; }; + 46515892E00E0D91D920B90C /* juce_FileSearchPath.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileSearchPath.cpp; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_FileSearchPath.cpp; sourceTree = SOURCE_ROOT; }; + 4653C504CADC3A365DCD59D0 /* juce_Expression.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Expression.cpp; path = ../../../JuceLibraryCode/modules/juce_core/maths/juce_Expression.cpp; sourceTree = SOURCE_ROOT; }; + 46F449C23355573E967D351F /* juce_Component.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Component.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_Component.cpp; sourceTree = SOURCE_ROOT; }; + 472F9A90F685220D730EBF6C /* BinaryData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = SOURCE_ROOT; }; + 4760F25A96CAB18E75573C0B /* juce_data_structures.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_data_structures.h; path = ../../../JuceLibraryCode/modules/juce_data_structures/juce_data_structures.h; sourceTree = SOURCE_ROOT; }; + 479E55D2A68FC2E14FF2E39A /* juce_RenderingHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RenderingHelpers.h; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h; sourceTree = SOURCE_ROOT; }; + 47B49049B85EED74D29C9906 /* jucer_ProjectTree_File.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectTree_File.h; path = ../../Source/Project/jucer_ProjectTree_File.h; sourceTree = SOURCE_ROOT; }; + 47DD50A5A9091F9900E0EAD9 /* jucer_JucerTreeViewBase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_JucerTreeViewBase.cpp; path = ../../Source/Utility/jucer_JucerTreeViewBase.cpp; sourceTree = SOURCE_ROOT; }; + 482C35BB3B7DDE1B452C8455 /* juce_SHA256.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SHA256.h; path = ../../../JuceLibraryCode/modules/juce_cryptography/hashing/juce_SHA256.h; sourceTree = SOURCE_ROOT; }; + 486683F365BE1E8CEE34D4D3 /* juce_BooleanPropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BooleanPropertyComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; + 48ADBB0A2A258CF72F04891A /* juce_DragAndDropContainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DragAndDropContainer.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h; sourceTree = SOURCE_ROOT; }; + 48F1E4DDD3B2B8E5CC410EE1 /* juce_Viewport.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Viewport.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_Viewport.cpp; sourceTree = SOURCE_ROOT; }; + 497E5C615BFF59384CB2284C /* juce_HashMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_HashMap.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_HashMap.h; sourceTree = SOURCE_ROOT; }; + 498E9D7F6E7F61A84E0D7792 /* juce_LookAndFeel_V1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LookAndFeel_V1.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp; sourceTree = SOURCE_ROOT; }; + 4A19E61C47E844D661C34DDD /* juce_WildcardFileFilter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_WildcardFileFilter.cpp; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_WildcardFileFilter.cpp; sourceTree = SOURCE_ROOT; }; + 4A41FD3066D0979DB48691E5 /* jucer_MiscUtilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_MiscUtilities.h; path = ../../Source/Utility/jucer_MiscUtilities.h; sourceTree = SOURCE_ROOT; }; + 4AD7BBD9D7EA422981A8C536 /* juce_RelativeRectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeRectangle.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.h; sourceTree = SOURCE_ROOT; }; + 4B138A2FD1EF34BB254F7C7A /* juce_RelativeTime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeTime.h; path = ../../../JuceLibraryCode/modules/juce_core/time/juce_RelativeTime.h; sourceTree = SOURCE_ROOT; }; + 4BD96E9231831D77755CC803 /* juce_TextInputTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextInputTarget.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h; sourceTree = SOURCE_ROOT; }; + 4BE6A47DF33CCD5619DFE82A /* juce_mac_AppleRemote.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_AppleRemote.mm; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_AppleRemote.mm; sourceTree = SOURCE_ROOT; }; + 4BF00AE19C332EF226420C57 /* juce_Socket.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Socket.cpp; path = ../../../JuceLibraryCode/modules/juce_core/network/juce_Socket.cpp; sourceTree = SOURCE_ROOT; }; + 4C2093BCD3528ACEDC7A2B33 /* jucer_ImageButtonHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ImageButtonHandler.h; path = ../../Source/ComponentEditor/components/jucer_ImageButtonHandler.h; sourceTree = SOURCE_ROOT; }; + 4C2394A14C140490F5F4E9BD /* juce_Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Image.h; path = ../../../JuceLibraryCode/modules/juce_graphics/images/juce_Image.h; sourceTree = SOURCE_ROOT; }; + 4C80A175986D336D4E1044A7 /* juce_FileLogger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileLogger.h; path = ../../../JuceLibraryCode/modules/juce_core/logging/juce_FileLogger.h; sourceTree = SOURCE_ROOT; }; + 4C8154CEB5C33EFB9E5CB8DC /* juce_ResizableEdgeComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ResizableEdgeComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h; sourceTree = SOURCE_ROOT; }; + 4CA1C3E6585D7694AA9C309F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; }; + 4CA96F577DD15FB5085518E9 /* juce_ButtonPropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ButtonPropertyComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; + 4CC9356FA92F5C94E4DC65D9 /* juce_MultiTimer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MultiTimer.cpp; path = ../../../JuceLibraryCode/modules/juce_events/timers/juce_MultiTimer.cpp; sourceTree = SOURCE_ROOT; }; + 4DAF01670050184A3BAAA93B /* juce_MemoryBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MemoryBlock.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_MemoryBlock.h; sourceTree = SOURCE_ROOT; }; + 4DEBB89A00FBD2C11515FD07 /* juce_StringRef.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StringRef.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_StringRef.h; sourceTree = SOURCE_ROOT; }; + 4DFDC4E1F50427FBAF0B8F81 /* juce_BorderSize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BorderSize.h; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_BorderSize.h; sourceTree = SOURCE_ROOT; }; + 4E191CDCE7565DB726CF7065 /* jucer_ComponentOverlayComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ComponentOverlayComponent.cpp; path = ../../Source/ComponentEditor/ui/jucer_ComponentOverlayComponent.cpp; sourceTree = SOURCE_ROOT; }; + 4E2A191756179C6616D50B58 /* juce_FilePreviewComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FilePreviewComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h; sourceTree = SOURCE_ROOT; }; + 4E60769DE992CA7FC1A4A486 /* jucer_PaintRoutineEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintRoutineEditor.h; path = ../../Source/ComponentEditor/ui/jucer_PaintRoutineEditor.h; sourceTree = SOURCE_ROOT; }; + 4E8FE9B1B8C90FC28D56523B /* jucer_PaintElementEllipse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElementEllipse.h; path = ../../Source/ComponentEditor/paintelements/jucer_PaintElementEllipse.h; sourceTree = SOURCE_ROOT; }; + 4EBA5CEE07FB8B2DAA9A0315 /* juce_Timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Timer.h; path = ../../../JuceLibraryCode/modules/juce_events/timers/juce_Timer.h; sourceTree = SOURCE_ROOT; }; + 4F052A9DD4EFD3C761C7EBA2 /* juce_ApplicationCommandTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationCommandTarget.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h; sourceTree = SOURCE_ROOT; }; + 4F129F3B2CD7B03E97C2F168 /* juce_MouseInputSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseInputSource.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInputSource.h; sourceTree = SOURCE_ROOT; }; + 4F5572380B51C24AE8D34450 /* juce_MemoryOutputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MemoryOutputStream.h; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryOutputStream.h; sourceTree = SOURCE_ROOT; }; + 4F6365A0D2D51337151D85C3 /* jucer_ProjectTree_Group.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectTree_Group.h; path = ../../Source/Project/jucer_ProjectTree_Group.h; sourceTree = SOURCE_ROOT; }; + 4F687965FBE86EAFDB3ACFEC /* BinaryData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = SOURCE_ROOT; }; + 4F8DCA25AFAD089510C8B48B /* juce_DropShadower.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DropShadower.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_DropShadower.h; sourceTree = SOURCE_ROOT; }; + 5017AF048B9A8F840DA442A0 /* juce_Viewport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Viewport.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_Viewport.h; sourceTree = SOURCE_ROOT; }; + 502A6F378DA7D0BED1380D86 /* juce_AlertWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AlertWindow.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_AlertWindow.cpp; sourceTree = SOURCE_ROOT; }; + 50498FF6EA3901CBD58223B3 /* jucer_ObjectTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ObjectTypes.h; path = ../../Source/ComponentEditor/jucer_ObjectTypes.h; sourceTree = SOURCE_ROOT; }; + 507C2DFBFDA8AB08F71ED82D /* juce_FileListComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileListComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileListComponent.h; sourceTree = SOURCE_ROOT; }; + 5091B14CC87C6238CF044258 /* jucer_ElementSiblingComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ElementSiblingComponent.h; path = ../../Source/ComponentEditor/paintelements/jucer_ElementSiblingComponent.h; sourceTree = SOURCE_ROOT; }; + 513AF2A4DB37CC6F47E6CEF0 /* juce_RectanglePlacement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RectanglePlacement.h; path = ../../../JuceLibraryCode/modules/juce_graphics/placement/juce_RectanglePlacement.h; sourceTree = SOURCE_ROOT; }; + 514B0E8E2796ACE7385F6717 /* juce_AbstractFifo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AbstractFifo.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_AbstractFifo.h; sourceTree = SOURCE_ROOT; }; + 515FF6E74826E3E3F7273621 /* jucer_Icons.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_Icons.h; path = ../../Source/Utility/jucer_Icons.h; sourceTree = SOURCE_ROOT; }; + 519269C6218CA35F731ECA61 /* juce_DropShadowEffect.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DropShadowEffect.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/effects/juce_DropShadowEffect.cpp; sourceTree = SOURCE_ROOT; }; + 51D9906830CE2006B74DBFCC /* juce_CustomTypeface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CustomTypeface.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_CustomTypeface.cpp; sourceTree = SOURCE_ROOT; }; + 51DAFE574A52F68CC4A10274 /* juce_BufferedInputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BufferedInputStream.h; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_BufferedInputStream.h; sourceTree = SOURCE_ROOT; }; + 523B197F8A3BCA94C58C6DEF /* juce_URL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_URL.cpp; path = ../../../JuceLibraryCode/modules/juce_core/network/juce_URL.cpp; sourceTree = SOURCE_ROOT; }; + 5293C026D920F2E0E710447C /* juce_mac_FileChooser.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_FileChooser.mm; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_FileChooser.mm; sourceTree = SOURCE_ROOT; }; + 529B0A44694A54ED99444A0F /* juce_StringPool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StringPool.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_StringPool.h; sourceTree = SOURCE_ROOT; }; + 529B9F1BADEE58EA9F4F8C09 /* juce_android_FileChooser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_FileChooser.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_android_FileChooser.cpp; sourceTree = SOURCE_ROOT; }; + 530ADBF1045867FE90EB8F1F /* juce_win32_Messaging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Messaging.cpp; path = ../../../JuceLibraryCode/modules/juce_events/native/juce_win32_Messaging.cpp; sourceTree = SOURCE_ROOT; }; + 53151B683E11F420203E61C2 /* jucer_NewCppFileTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_NewCppFileTemplate.h; path = ../../Source/BinaryData/jucer_NewCppFileTemplate.h; sourceTree = SOURCE_ROOT; }; + 5377705718D6D60A6AA2848F /* juce_win32_ActiveXComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_ActiveXComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp; sourceTree = SOURCE_ROOT; }; + 5432B7B9B2CF2EAEC8B66D5C /* jucer_UtilityFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_UtilityFunctions.h; path = ../../Source/ComponentEditor/jucer_UtilityFunctions.h; sourceTree = SOURCE_ROOT; }; + 54652695DEEBAB24E462DDD9 /* juce_TimeSliceThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TimeSliceThread.cpp; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_TimeSliceThread.cpp; sourceTree = SOURCE_ROOT; }; + 553725A0E3A391651ED1731E /* jucer_FileHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FileHelpers.h; path = ../../Source/Utility/jucer_FileHelpers.h; sourceTree = SOURCE_ROOT; }; + 553F3388AADBF8B529B78824 /* juce_String.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_String.cpp; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_String.cpp; sourceTree = SOURCE_ROOT; }; + 55A56A4C2EC5DECEC307EC37 /* juce_TableHeaderComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TableHeaderComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp; sourceTree = SOURCE_ROOT; }; + 55B79C48660935077095DBFD /* juce_DrawableText.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableText.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableText.cpp; sourceTree = SOURCE_ROOT; }; + 5603954CFF21E81C86CCA1CB /* juce_AnimatedPosition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AnimatedPosition.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_AnimatedPosition.h; sourceTree = SOURCE_ROOT; }; + 563091B0916AD9AAA36C7DC5 /* jucer_OpenDocumentManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_OpenDocumentManager.h; path = ../../Source/Application/jucer_OpenDocumentManager.h; sourceTree = SOURCE_ROOT; }; + 5659718DF6BD054B2B0A875C /* juce_mac_SystemStats.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_SystemStats.mm; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_mac_SystemStats.mm; sourceTree = SOURCE_ROOT; }; + 56ECDE6643205406C32D1CE8 /* juce_ApplicationCommandManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationCommandManager.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h; sourceTree = SOURCE_ROOT; }; + 576D62C0C9C1BA4B7A514721 /* jucer_PositionPropertyBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PositionPropertyBase.h; path = ../../Source/ComponentEditor/properties/jucer_PositionPropertyBase.h; sourceTree = SOURCE_ROOT; }; + 5797A65A441D030729C6E886 /* juce_MultiTimer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MultiTimer.h; path = ../../../JuceLibraryCode/modules/juce_events/timers/juce_MultiTimer.h; sourceTree = SOURCE_ROOT; }; + 5801B222830CA1E1006968BA /* juce_ToggleButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ToggleButton.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.h; sourceTree = SOURCE_ROOT; }; + 5805FE3FCA0B3CD8E2851774 /* juce_ImageButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageButton.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ImageButton.h; sourceTree = SOURCE_ROOT; }; + 58139D8D454051C59E77609B /* RecentFilesMenuTemplate.nib */ = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = ../../Source/BinaryData/RecentFilesMenuTemplate.nib; sourceTree = SOURCE_ROOT; }; + 5823F1EE0F39AE16B560665A /* juce_LowLevelGraphicsSoftwareRenderer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LowLevelGraphicsSoftwareRenderer.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp; sourceTree = SOURCE_ROOT; }; + 5852830ECC222BA36A30EC20 /* jucer_NewFileWizard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_NewFileWizard.h; path = ../../Source/Project/jucer_NewFileWizard.h; sourceTree = SOURCE_ROOT; }; + 58FA9E2B67AED7330158A903 /* juce_LookAndFeel_V2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LookAndFeel_V2.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h; sourceTree = SOURCE_ROOT; }; + 5909E278D645E1F91C0AE2BB /* juce_ChildProcess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChildProcess.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_ChildProcess.h; sourceTree = SOURCE_ROOT; }; + 599957E884512B8314720BBD /* juce_MouseInactivityDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseInactivityDetector.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h; sourceTree = SOURCE_ROOT; }; + 5A11499F36DB882429253BA5 /* juce_ImageConvolutionKernel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImageConvolutionKernel.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp; sourceTree = SOURCE_ROOT; }; + 5B28BE68400342E97C084ACC /* juce_Variant.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Variant.cpp; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_Variant.cpp; sourceTree = SOURCE_ROOT; }; + 5B45BF234C7184BE28C59741 /* juce_TopLevelWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TopLevelWindow.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp; sourceTree = SOURCE_ROOT; }; + 5B8805BE8EFB29BFC7BD6D31 /* juce_LiveConstantEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LiveConstantEditor.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_LiveConstantEditor.h; sourceTree = SOURCE_ROOT; }; + 5B9EE26978797CC153F5E24F /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../../JuceLibraryCode/modules/juce_gui_basics/juce_module_info; sourceTree = SOURCE_ROOT; }; + 5BDAE5FD683C0005A609495E /* juce_TimeSliceThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TimeSliceThread.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_TimeSliceThread.h; sourceTree = SOURCE_ROOT; }; + 5BE9E1B6197D01AB97288253 /* juce_TooltipWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TooltipWindow.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TooltipWindow.h; sourceTree = SOURCE_ROOT; }; + 5C454FECFF7234355CEA17D4 /* juce_MultiDocumentPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MultiDocumentPanel.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h; sourceTree = SOURCE_ROOT; }; + 5C6893F610657B9383F9333F /* juce_ReadWriteLock.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ReadWriteLock.cpp; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_ReadWriteLock.cpp; sourceTree = SOURCE_ROOT; }; + 5C96DDE9CD90B82EA3CD6ED8 /* juce_StretchableObjectResizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_StretchableObjectResizer.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp; sourceTree = SOURCE_ROOT; }; + 5CD44EFDD7BA487CDF41760A /* juce_AsyncUpdater.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AsyncUpdater.cpp; path = ../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_AsyncUpdater.cpp; sourceTree = SOURCE_ROOT; }; + 5CE5E5132CEFADC6D48ECB08 /* juce_ApplicationProperties.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ApplicationProperties.cpp; path = ../../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp; sourceTree = SOURCE_ROOT; }; + 5D33FED578ADEEBAA8A4CFED /* juce_mac_Fonts.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_Fonts.mm; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_Fonts.mm; sourceTree = SOURCE_ROOT; }; + 5D77828FECF00CF108E16599 /* juce_DialogWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DialogWindow.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_DialogWindow.h; sourceTree = SOURCE_ROOT; }; + 5D9E7814B713670624F0028F /* jucer_ComponentTypeHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentTypeHandler.h; path = ../../Source/ComponentEditor/components/jucer_ComponentTypeHandler.h; sourceTree = SOURCE_ROOT; }; + 5EA02C28A509FAC9D2561AC5 /* juce_SystemStats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SystemStats.cpp; path = ../../../JuceLibraryCode/modules/juce_core/system/juce_SystemStats.cpp; sourceTree = SOURCE_ROOT; }; + 5EAA527023FD40745056F13B /* juce_ProgressBar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ProgressBar.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ProgressBar.h; sourceTree = SOURCE_ROOT; }; + 5EE461C6611D3669B36F639D /* juce_DrawableText.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableText.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableText.h; sourceTree = SOURCE_ROOT; }; + 5F4AF4400A9511B74E2425EE /* juce_CustomTypeface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CustomTypeface.h; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_CustomTypeface.h; sourceTree = SOURCE_ROOT; }; + 5F4F4EAB042F2730F94A1CEA /* AudioPluginXCodeScript.txt */ = {isa = PBXFileReference; lastKnownFileType = text.txt; name = AudioPluginXCodeScript.txt; path = ../../Source/BinaryData/AudioPluginXCodeScript.txt; sourceTree = SOURCE_ROOT; }; + 5F6584B675E30761521A9F42 /* colourscheme_light.xml */ = {isa = PBXFileReference; lastKnownFileType = file.xml; name = colourscheme_light.xml; path = ../../Source/BinaryData/colourscheme_light.xml; sourceTree = SOURCE_ROOT; }; + 5F99D905AAF0C3F89CEAD965 /* juce_AttributedString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AttributedString.h; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_AttributedString.h; sourceTree = SOURCE_ROOT; }; + 5FDE1D586B6984E67E3B1E19 /* juce_DrawablePath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawablePath.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawablePath.h; sourceTree = SOURCE_ROOT; }; + 60138E309DBA8366F9AA83A5 /* juce_RecentlyOpenedFilesList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RecentlyOpenedFilesList.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h; sourceTree = SOURCE_ROOT; }; + 60285932750263E48A18908C /* juce_ApplicationCommandManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ApplicationCommandManager.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp; sourceTree = SOURCE_ROOT; }; + 6059BA2EC2D80F1A58D047A2 /* juce_CaretComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CaretComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_CaretComponent.h; sourceTree = SOURCE_ROOT; }; + 61096C79B4C094699E9ED296 /* juce_android_Files.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Files.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_android_Files.cpp; sourceTree = SOURCE_ROOT; }; + 61151BEBE0F7E79DFA313076 /* juce_ToolbarItemPalette.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ToolbarItemPalette.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h; sourceTree = SOURCE_ROOT; }; + 61538AD86AB82CE59EF6C68D /* juce_posix_SharedCode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_posix_SharedCode.h; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_posix_SharedCode.h; sourceTree = SOURCE_ROOT; }; + 61804EF1D5DC1451EBDAF6C5 /* juce_PropertySet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PropertySet.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_PropertySet.h; sourceTree = SOURCE_ROOT; }; + 61A6870CF7A0DE01A70799B0 /* juce_MouseListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseListener.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.h; sourceTree = SOURCE_ROOT; }; + 61BE37E2B26C25056D9E8FE2 /* jucer_NewComponentTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_NewComponentTemplate.cpp; path = ../../Source/BinaryData/jucer_NewComponentTemplate.cpp; sourceTree = SOURCE_ROOT; }; + 61F8ED9B6C0D09E2665531D3 /* juce_ToolbarItemPalette.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ToolbarItemPalette.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp; sourceTree = SOURCE_ROOT; }; + 62112F8E435A750E1D2B28E0 /* juce_SplashScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SplashScreen.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SplashScreen.h; sourceTree = SOURCE_ROOT; }; + 6245DA2AC30B91552C12AD1F /* juce_CharPointer_UTF8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharPointer_UTF8.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF8.h; sourceTree = SOURCE_ROOT; }; + 630428D04F157F7162C05D59 /* juce_DrawablePath.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawablePath.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawablePath.cpp; sourceTree = SOURCE_ROOT; }; + 631983AA62673015F8D7453B /* jucer_StoredSettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_StoredSettings.cpp; path = ../../Source/Utility/jucer_StoredSettings.cpp; sourceTree = SOURCE_ROOT; }; + 633CC0CEF05B3ADCEEE1325E /* juce_mac_Threads.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_Threads.mm; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_mac_Threads.mm; sourceTree = SOURCE_ROOT; }; + 6350DFE5844B6CB31FB54A80 /* juce_mac_CoreGraphicsHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_mac_CoreGraphicsHelpers.h; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h; sourceTree = SOURCE_ROOT; }; + 63717F00538E1367E2B9D812 /* juce_Button.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Button.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_Button.h; sourceTree = SOURCE_ROOT; }; + 63754DF4DA5063BF038C359B /* juce_mac_Network.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_Network.mm; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_mac_Network.mm; sourceTree = SOURCE_ROOT; }; + 63A4A00461C033BC464E4D34 /* juce_win32_Files.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Files.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_win32_Files.cpp; sourceTree = SOURCE_ROOT; }; + 641338764B8C715715DA7351 /* juce_DrawableRectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableRectangle.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableRectangle.h; sourceTree = SOURCE_ROOT; }; + 641B57E5FAE6BEFDB6462921 /* jucer_ResourceEditorPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ResourceEditorPanel.h; path = ../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.h; sourceTree = SOURCE_ROOT; }; + 64520235EF5529F8C0E4A9A7 /* juce_PopupMenu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PopupMenu.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_PopupMenu.cpp; sourceTree = SOURCE_ROOT; }; + 647EBD8D1EAD21592951DD9B /* juce_Line.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Line.h; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Line.h; sourceTree = SOURCE_ROOT; }; + 64EDFDAE0755DC1451F181B8 /* juce_OptionalScopedPointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OptionalScopedPointer.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_OptionalScopedPointer.h; sourceTree = SOURCE_ROOT; }; + 659B75A15D70B8FE57D1A1BE /* juce_Toolbar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Toolbar.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Toolbar.h; sourceTree = SOURCE_ROOT; }; + 65C498761CE166072A202AA0 /* jucer_ComponentTypeHandler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ComponentTypeHandler.cpp; path = ../../Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp; sourceTree = SOURCE_ROOT; }; + 65E82ADF9AEE696576F43E92 /* juce_ComponentMovementWatcher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentMovementWatcher.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h; sourceTree = SOURCE_ROOT; }; + 65F4749184C84C2FDBB4C305 /* jucer_AudioPluginFilterTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AudioPluginFilterTemplate.cpp; path = ../../Source/BinaryData/jucer_AudioPluginFilterTemplate.cpp; sourceTree = SOURCE_ROOT; }; + 662C76394C5D1B56766FAFD9 /* jucer_ComponentDocument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ComponentDocument.cpp; path = ../../Source/ComponentEditor/documents/jucer_ComponentDocument.cpp; sourceTree = SOURCE_ROOT; }; + 66448E472FD5BB3D34B1509B /* juce_android_Messaging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Messaging.cpp; path = ../../../JuceLibraryCode/modules/juce_events/native/juce_android_Messaging.cpp; sourceTree = SOURCE_ROOT; }; + 665EDD760E47A6AD1A1DBC2D /* juce_MD5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MD5.h; path = ../../../JuceLibraryCode/modules/juce_cryptography/hashing/juce_MD5.h; sourceTree = SOURCE_ROOT; }; + 6678E9B3EEACAD47F438B264 /* RecentFilesMenuTemplate.nib */ = {isa = PBXFileReference; lastKnownFileType = file.nib; path = RecentFilesMenuTemplate.nib; sourceTree = SOURCE_ROOT; }; + 668D7FDE00212229DFCB2175 /* juce_FileTreeComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileTreeComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h; sourceTree = SOURCE_ROOT; }; + 66B49F08C5EC3E4974825FF8 /* jucer_PaintRoutine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintRoutine.h; path = ../../Source/ComponentEditor/jucer_PaintRoutine.h; sourceTree = SOURCE_ROOT; }; + 66B4C39694799AC85ADDBECC /* juce_StretchableLayoutManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_StretchableLayoutManager.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp; sourceTree = SOURCE_ROOT; }; + 6737B22BED56A0544E39FD15 /* juce_FileDragAndDropTarget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileDragAndDropTarget.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h; sourceTree = SOURCE_ROOT; }; + 67FF4A3F3E1CD9583EABE1F6 /* juce_CPlusPlusCodeTokeniser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CPlusPlusCodeTokeniser.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp; sourceTree = SOURCE_ROOT; }; + 68077882A46E2C4E398E4C99 /* juce_MouseCursor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseCursor.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseCursor.h; sourceTree = SOURCE_ROOT; }; + 68164EA5DFF5CE5AC2402670 /* juce_OutputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OutputStream.h; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_OutputStream.h; sourceTree = SOURCE_ROOT; }; + 689996FF463D52FEF125AFF3 /* juce_Process.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Process.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_Process.h; sourceTree = SOURCE_ROOT; }; + 69A1792C863C7957A80F6945 /* juce_DeletedAtShutdown.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DeletedAtShutdown.h; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_DeletedAtShutdown.h; sourceTree = SOURCE_ROOT; }; + 69A5D13490A62DAE9A7D5A22 /* jucer_NewProjectWizard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_NewProjectWizard.cpp; path = ../../Source/Project/jucer_NewProjectWizard.cpp; sourceTree = SOURCE_ROOT; }; + 69BB2D7A2EDAB1C87EA1F688 /* juce_CodeDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CodeDocument.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeDocument.h; sourceTree = SOURCE_ROOT; }; + 69F318BBA51FA30B777135B8 /* juce_TextEditorKeyMapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextEditorKeyMapper.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h; sourceTree = SOURCE_ROOT; }; + 6A337C69A928E3CE79C55457 /* jucer_ComponentChoiceProperty.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentChoiceProperty.h; path = ../../Source/ComponentEditor/properties/jucer_ComponentChoiceProperty.h; sourceTree = SOURCE_ROOT; }; + 6AC17B5D88D0ADBF77420048 /* juce_NativeMessageBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NativeMessageBox.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_NativeMessageBox.h; sourceTree = SOURCE_ROOT; }; + 6AC5756EBCB78FD82C15B829 /* juce_ScopedPointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScopedPointer.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_ScopedPointer.h; sourceTree = SOURCE_ROOT; }; + 6AC88EFC247C225CC5C11A43 /* jucer_BinaryResources.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_BinaryResources.h; path = ../../Source/ComponentEditor/jucer_BinaryResources.h; sourceTree = SOURCE_ROOT; }; + 6C25EB12F6DB9F5225E75667 /* juce_ImageButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImageButton.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ImageButton.cpp; sourceTree = SOURCE_ROOT; }; + 6C7A1929978639A482D5096D /* juce_TemporaryFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TemporaryFile.cpp; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_TemporaryFile.cpp; sourceTree = SOURCE_ROOT; }; + 6C867E1E3FEC31970950C620 /* juce_linux_CommonFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_CommonFile.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_linux_CommonFile.cpp; sourceTree = SOURCE_ROOT; }; + 6CA3455CFAA1A52891F55CEF /* juce_MemoryOutputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MemoryOutputStream.cpp; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryOutputStream.cpp; sourceTree = SOURCE_ROOT; }; + 6DB44C43D1260559163A47F0 /* juce_MemoryBlock.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MemoryBlock.cpp; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_MemoryBlock.cpp; sourceTree = SOURCE_ROOT; }; + 6E1D22B93CCB47AB339085E1 /* juce_ThreadWithProgressWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ThreadWithProgressWindow.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp; sourceTree = SOURCE_ROOT; }; + 6E2B6FE06BE3735AA969B526 /* juce_TableHeaderComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TableHeaderComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h; sourceTree = SOURCE_ROOT; }; + 6E6140969908E7619F858740 /* jucer_CommonHeaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CommonHeaders.h; path = ../../Source/Application/jucer_CommonHeaders.h; sourceTree = SOURCE_ROOT; }; + 6E7353DFEA8825B515049ABB /* jucer_ProjectExport_Android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectExport_Android.h; path = "../../Source/Project Saving/jucer_ProjectExport_Android.h"; sourceTree = SOURCE_ROOT; }; + 6ED2213CA4E7E418E74A91E4 /* juce_ThreadPool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ThreadPool.cpp; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_ThreadPool.cpp; sourceTree = SOURCE_ROOT; }; + 6F2DEA817E140C2659915138 /* juce_BubbleMessageComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BubbleMessageComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp; sourceTree = SOURCE_ROOT; }; + 6F4A2CF770F9E789E695825E /* juce_ios_Windowing.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_ios_Windowing.mm; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_ios_Windowing.mm; sourceTree = SOURCE_ROOT; }; + 6FB8B11C25BB74994A407113 /* juce_ComponentBoundsConstrainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentBoundsConstrainer.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h; sourceTree = SOURCE_ROOT; }; + 700138BDDB27754A06B56C87 /* juce_TreeView.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TreeView.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TreeView.cpp; sourceTree = SOURCE_ROOT; }; + 700F6188EAA73DD57767694F /* juce_ShapeButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ShapeButton.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ShapeButton.h; sourceTree = SOURCE_ROOT; }; + 7038159E5F04B3C75B6A7655 /* juce_PNGLoader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PNGLoader.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/image_formats/juce_PNGLoader.cpp; sourceTree = SOURCE_ROOT; }; + 70C4E93E7132BEEDDABFDA10 /* juce_JSON.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_JSON.cpp; path = ../../../JuceLibraryCode/modules/juce_core/javascript/juce_JSON.cpp; sourceTree = SOURCE_ROOT; }; + 7211101FFA28400ADBB1D47A /* jucer_Module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_Module.h; path = ../../Source/Project/jucer_Module.h; sourceTree = SOURCE_ROOT; }; + 727511F6927A7B2602A6C689 /* juce_GroupComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GroupComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_GroupComponent.cpp; sourceTree = SOURCE_ROOT; }; + 72A66FD9571871FFB455F8B5 /* juce_MessageListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MessageListener.h; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_MessageListener.h; sourceTree = SOURCE_ROOT; }; + 72BB08B37FC311C133A01F95 /* juce_Javascript.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Javascript.h; path = ../../../JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.h; sourceTree = SOURCE_ROOT; }; + 72EC62B05E134F85761E642E /* juce_CallbackMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CallbackMessage.h; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_CallbackMessage.h; sourceTree = SOURCE_ROOT; }; + 73425A7FACB8FEE3D7A7C567 /* juce_PathStrokeType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PathStrokeType.h; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathStrokeType.h; sourceTree = SOURCE_ROOT; }; + 73D0EA57406DF9583EE8FB3B /* juce_FileFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileFilter.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileFilter.h; sourceTree = SOURCE_ROOT; }; + 742B8388A246A9E984457C7A /* juce_mac_CarbonViewWrapperComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_mac_CarbonViewWrapperComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h; sourceTree = SOURCE_ROOT; }; + 75087C822B7871FA849D2909 /* juce_ResizableCornerComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ResizableCornerComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h; sourceTree = SOURCE_ROOT; }; + 7545BFF1C7C857A810B0483D /* juce_linux_Network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Network.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_linux_Network.cpp; sourceTree = SOURCE_ROOT; }; + 756D2E74350285D4082EFD8E /* juce_PerformanceCounter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PerformanceCounter.h; path = ../../../JuceLibraryCode/modules/juce_core/time/juce_PerformanceCounter.h; sourceTree = SOURCE_ROOT; }; + 7577BF4DE64CD865088A612E /* juce_AttributedString.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AttributedString.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_AttributedString.cpp; sourceTree = SOURCE_ROOT; }; + 760A535A2680C8B3C44B59C5 /* juce_Font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Font.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Font.cpp; sourceTree = SOURCE_ROOT; }; + 76E2E826701240CDD4DEDA57 /* juce_android_GraphicsContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_GraphicsContext.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_android_GraphicsContext.cpp; sourceTree = SOURCE_ROOT; }; + 76EF37EBCCA75161A3561F9D /* juce_DragAndDropContainer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DragAndDropContainer.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp; sourceTree = SOURCE_ROOT; }; + 785740092163D40EE36BDA5B /* juce_Typeface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Typeface.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Typeface.cpp; sourceTree = SOURCE_ROOT; }; + 786095D2FAF63CBC05B170C6 /* juce_RelativePoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativePoint.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePoint.h; sourceTree = SOURCE_ROOT; }; + 7861B7ACECC987D58C7D0309 /* juce_ScopedWriteLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScopedWriteLock.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_ScopedWriteLock.h; sourceTree = SOURCE_ROOT; }; + 786BAF436828865F45314440 /* jucer_PaintElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElement.h; path = ../../Source/ComponentEditor/paintelements/jucer_PaintElement.h; sourceTree = SOURCE_ROOT; }; + 78CA0E0F336229E2E2F111B0 /* jucer_SourceCodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_SourceCodeEditor.h; path = "../../Source/Code Editor/jucer_SourceCodeEditor.h"; sourceTree = SOURCE_ROOT; }; + 78D0DBC4798FF040FDB90F6D /* jucer_GeneratedCode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_GeneratedCode.cpp; path = ../../Source/ComponentEditor/jucer_GeneratedCode.cpp; sourceTree = SOURCE_ROOT; }; + 79366BF7CA160E7EFC7823C4 /* juce_MouseInactivityDetector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseInactivityDetector.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp; sourceTree = SOURCE_ROOT; }; + 79DF7512BC6437E5E29E3CFB /* juce_PropertiesFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PropertiesFile.cpp; path = ../../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp; sourceTree = SOURCE_ROOT; }; + 7A3E96D22F1C9EB4C739834F /* jucer_PointComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PointComponent.h; path = ../../Source/ComponentEditor/paintelements/jucer_PointComponent.h; sourceTree = SOURCE_ROOT; }; + 7AEAEEF9959046D9827CCB56 /* juce_ComponentPeer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentPeer.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp; sourceTree = SOURCE_ROOT; }; + 7B4E33B1E04139F359FB484B /* jucer_ConfigTree_Exporter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ConfigTree_Exporter.h; path = ../../Source/Project/jucer_ConfigTree_Exporter.h; sourceTree = SOURCE_ROOT; }; + 7BB3AB4907661D6FED799B7C /* juce_ComponentMovementWatcher.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentMovementWatcher.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp; sourceTree = SOURCE_ROOT; }; + 7BBA8AF8E7872672F190C1C7 /* juce_LookAndFeel_V3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LookAndFeel_V3.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h; sourceTree = SOURCE_ROOT; }; + 7BD4BCAA20B1ACED28EBBFD9 /* juce_mac_CoreGraphicsContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_mac_CoreGraphicsContext.h; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h; sourceTree = SOURCE_ROOT; }; + 7BD8AE7287AB53880575A757 /* juce_Drawable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Drawable.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_Drawable.cpp; sourceTree = SOURCE_ROOT; }; + 7C0528B4912955DA59C28356 /* juce_URL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_URL.h; path = ../../../JuceLibraryCode/modules/juce_core/network/juce_URL.h; sourceTree = SOURCE_ROOT; }; + 7D33879BE42FD18DA0E7833E /* juce_DocumentWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DocumentWindow.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_DocumentWindow.h; sourceTree = SOURCE_ROOT; }; + 7D6B19FB1AAA04D27716457B /* juce_CaretComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CaretComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp; sourceTree = SOURCE_ROOT; }; + 7DBCC7A6E5B251DA94AB0EE0 /* juce_DrawableRectangle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableRectangle.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp; sourceTree = SOURCE_ROOT; }; + 7E1CE53CFD909089387910AF /* juce_HeapBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_HeapBlock.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_HeapBlock.h; sourceTree = SOURCE_ROOT; }; + 7E47A29DD9817618F48068FF /* juce_ResizableEdgeComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResizableEdgeComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp; sourceTree = SOURCE_ROOT; }; + 7E8730C293CF253B56930440 /* juce_DrawableImage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableImage.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp; sourceTree = SOURCE_ROOT; }; + 7F3AE35521DFE092953385B6 /* juce_FileSearchPathListComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileSearchPathListComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h; sourceTree = SOURCE_ROOT; }; + 800206C482A2C7E62682C324 /* juce_ReadWriteLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ReadWriteLock.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_ReadWriteLock.h; sourceTree = SOURCE_ROOT; }; + 800B30FB2437B98A1423838A /* juce_XmlElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_XmlElement.h; path = ../../../JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.h; sourceTree = SOURCE_ROOT; }; + 801143A09B8A467EA47EBA27 /* juce_TextLayout.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TextLayout.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_TextLayout.cpp; sourceTree = SOURCE_ROOT; }; + 8090981F07A76E465DAAADF4 /* jucer_ValueSourceHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ValueSourceHelpers.h; path = ../../Source/Utility/jucer_ValueSourceHelpers.h; sourceTree = SOURCE_ROOT; }; + 8138A55052E9FC27284B74DD /* jucer_FontPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FontPropertyComponent.h; path = ../../Source/ComponentEditor/properties/jucer_FontPropertyComponent.h; sourceTree = SOURCE_ROOT; }; + 814A077ED7A54254415C309C /* juce_Initialisation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Initialisation.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/application/juce_Initialisation.h; sourceTree = SOURCE_ROOT; }; + 81704510C0CA45994B69AF05 /* juce_TopLevelWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TopLevelWindow.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TopLevelWindow.h; sourceTree = SOURCE_ROOT; }; + 81A3DED7F13085DF8C8190AB /* juce_Result.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Result.h; path = ../../../JuceLibraryCode/modules/juce_core/misc/juce_Result.h; sourceTree = SOURCE_ROOT; }; + 820291543BF93243B718F0EE /* jucer_JucerTreeViewBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_JucerTreeViewBase.h; path = ../../Source/Utility/jucer_JucerTreeViewBase.h; sourceTree = SOURCE_ROOT; }; + 8216291F3E0D0926D64AD98C /* juce_BufferedInputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BufferedInputStream.cpp; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_BufferedInputStream.cpp; sourceTree = SOURCE_ROOT; }; + 822A59FE23E0E962993EFF1C /* juce_android_Windowing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Windowing.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_android_Windowing.cpp; sourceTree = SOURCE_ROOT; }; + 825F21A8A32CC0FD20B845A6 /* juce_WebBrowserComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WebBrowserComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_WebBrowserComponent.h; sourceTree = SOURCE_ROOT; }; + 82976E18712BAE638A132F02 /* juce_InterProcessLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InterProcessLock.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_InterProcessLock.h; sourceTree = SOURCE_ROOT; }; + 82C7BF9F5E863E647438A8AA /* juce_MouseInputSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseInputSource.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp; sourceTree = SOURCE_ROOT; }; + 83C7547CCAFCBB88F791FED8 /* juce_PopupMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PopupMenu.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_PopupMenu.h; sourceTree = SOURCE_ROOT; }; + 84493A7AD6B0398B732461FB /* juce_DrawableImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableImage.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableImage.h; sourceTree = SOURCE_ROOT; }; + 849641B50DB4AE6CCA1C543F /* juce_ElementComparator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ElementComparator.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_ElementComparator.h; sourceTree = SOURCE_ROOT; }; + 84BC9171F02182D3AFD04F66 /* juce_RecentlyOpenedFilesList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RecentlyOpenedFilesList.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp; sourceTree = SOURCE_ROOT; }; + 84E06858791DF81E37B9A484 /* juce_CriticalSection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CriticalSection.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_CriticalSection.h; sourceTree = SOURCE_ROOT; }; + 84EB1282EE3C5F3A1DF70A54 /* juce_TooltipWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TooltipWindow.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp; sourceTree = SOURCE_ROOT; }; + 8531F4060FE4BEBEC2E8EF9F /* juce_RelativeParallelogram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeParallelogram.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h; sourceTree = SOURCE_ROOT; }; + 85B2B84227B39C31FE9D790A /* juce_TextEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextEditor.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TextEditor.h; sourceTree = SOURCE_ROOT; }; + 85B48563B4437E1E27ACABAD /* juce_ConnectedChildProcess.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ConnectedChildProcess.cpp; path = ../../../JuceLibraryCode/modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp; sourceTree = SOURCE_ROOT; }; + 865F57EEFDD6F194FCE3FD8F /* juce_PathIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PathIterator.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathIterator.cpp; sourceTree = SOURCE_ROOT; }; + 867952C0062DAA52FE4345B1 /* juce_DocumentWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DocumentWindow.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_DocumentWindow.cpp; sourceTree = SOURCE_ROOT; }; + 8681C46D7B7D05BEEB56E44E /* juce_ShapeButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ShapeButton.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp; sourceTree = SOURCE_ROOT; }; + 86E468DE6556BB2AD76A3D80 /* jucer_ProjectContentComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ProjectContentComponent.cpp; path = ../../Source/Project/jucer_ProjectContentComponent.cpp; sourceTree = SOURCE_ROOT; }; + 86E8A40E5A83781A8478454D /* jucer_MainTemplate_Window.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_MainTemplate_Window.cpp; path = ../../Source/BinaryData/jucer_MainTemplate_Window.cpp; sourceTree = SOURCE_ROOT; }; + 86EC32D1F0A4D7678B298631 /* juce_linux_Threads.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Threads.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_linux_Threads.cpp; sourceTree = SOURCE_ROOT; }; + 8702F43110E4CCA5E5F827F5 /* AppConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = SOURCE_ROOT; }; + 87B65D3DBFD7D35B15010226 /* juce_FileListComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileListComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp; sourceTree = SOURCE_ROOT; }; + 87C711AFE0DEEC1FA8AD9465 /* juce_Point.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Point.h; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Point.h; sourceTree = SOURCE_ROOT; }; + 880D1F031B50F965A56B7240 /* juce_Colours.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Colours.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/colour/juce_Colours.cpp; sourceTree = SOURCE_ROOT; }; + 88332B74FC9B9BE2F60D7EAB /* juce_GZIPDecompressorInputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GZIPDecompressorInputStream.h; path = ../../../JuceLibraryCode/modules/juce_core/zip/juce_GZIPDecompressorInputStream.h; sourceTree = SOURCE_ROOT; }; + 8887ADA2A339C0BD9AFF83DA /* juce_PropertiesFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PropertiesFile.h; path = ../../../JuceLibraryCode/modules/juce_data_structures/app_properties/juce_PropertiesFile.h; sourceTree = SOURCE_ROOT; }; + 88E1573706105D51541F4CA5 /* juce_SelectedItemSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SelectedItemSet.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_SelectedItemSet.h; sourceTree = SOURCE_ROOT; }; + 8B2E98629FB118FAAB8E2476 /* juce_mac_NSViewComponent.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_NSViewComponent.mm; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm; sourceTree = SOURCE_ROOT; }; + 8B5073191880BFFDF8B3BE6E /* juce_ResizableBorderComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResizableBorderComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp; sourceTree = SOURCE_ROOT; }; + 8C07D2E980420174DF513BEF /* juce_TextDiff.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TextDiff.cpp; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_TextDiff.cpp; sourceTree = SOURCE_ROOT; }; + 8C48F6C90CB6D2CBB19511B3 /* juce_CPlusPlusCodeTokeniser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CPlusPlusCodeTokeniser.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h; sourceTree = SOURCE_ROOT; }; + 8C52A3DDA62A746AA7A68535 /* jucer_Main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_Main.cpp; path = ../../Source/Application/jucer_Main.cpp; sourceTree = SOURCE_ROOT; }; + 8D89602169EF2FB7E38F8C0D /* juce_PreferencesPanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PreferencesPanel.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp; sourceTree = SOURCE_ROOT; }; + 8E673D43C2CD68894A10B99D /* juce_mac_MouseCursor.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_MouseCursor.mm; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_MouseCursor.mm; sourceTree = SOURCE_ROOT; }; + 8EE709A982B89A4C752303BC /* juce_PropertySet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PropertySet.cpp; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_PropertySet.cpp; sourceTree = SOURCE_ROOT; }; + 8F14D66EAF9B6219C5D1C510 /* juce_MACAddress.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MACAddress.cpp; path = ../../../JuceLibraryCode/modules/juce_core/network/juce_MACAddress.cpp; sourceTree = SOURCE_ROOT; }; + 8F30A53C7FE4BC65171FB3E2 /* jucer_JucerDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_JucerDocument.h; path = ../../Source/ComponentEditor/jucer_JucerDocument.h; sourceTree = SOURCE_ROOT; }; + 8F355E9A0D4E3B4DF00E7BA9 /* juce_ImageCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageCache.h; path = ../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageCache.h; sourceTree = SOURCE_ROOT; }; + 8F8BF1A7130D858E0A239F9E /* jucer_ConfigTree_Base.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ConfigTree_Base.h; path = ../../Source/Project/jucer_ConfigTree_Base.h; sourceTree = SOURCE_ROOT; }; + 9069981E414A631B036CC9AC /* jucer_MainWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_MainWindow.cpp; path = ../../Source/Application/jucer_MainWindow.cpp; sourceTree = SOURCE_ROOT; }; + 9091730D608EEEA35977BC1D /* juce_StretchableLayoutManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StretchableLayoutManager.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h; sourceTree = SOURCE_ROOT; }; + 909FCA929A162A919ABF6575 /* juce_DrawableComposite.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableComposite.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp; sourceTree = SOURCE_ROOT; }; + 90B9A4673FDC35841E5D4562 /* juce_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_core.h; path = ../../../JuceLibraryCode/modules/juce_core/juce_core.h; sourceTree = SOURCE_ROOT; }; + 914ADDB50ED7365F08BA91F9 /* jucer_CodeHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CodeHelpers.h; path = ../../Source/Utility/jucer_CodeHelpers.h; sourceTree = SOURCE_ROOT; }; + 914C0B02F52FA4C06116EDB1 /* juce_KeyPressMappingSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_KeyPressMappingSet.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h; sourceTree = SOURCE_ROOT; }; + 9153965AAA76A86DFCAEE86E /* juce_MemoryMappedFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MemoryMappedFile.h; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_MemoryMappedFile.h; sourceTree = SOURCE_ROOT; }; + 91A9050F591F2E03EA96203A /* juce_KeyboardFocusTraverser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_KeyboardFocusTraverser.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp; sourceTree = SOURCE_ROOT; }; + 921752D9B004A15973DDF56F /* jucer_TestComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_TestComponent.cpp; path = ../../Source/ComponentEditor/ui/jucer_TestComponent.cpp; sourceTree = SOURCE_ROOT; }; + 921FBD47F9842396F1CB22ED /* juce_mac_Windowing.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_Windowing.mm; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_Windowing.mm; sourceTree = SOURCE_ROOT; }; + 923B69234C15988DFF1E8423 /* juce_CharPointer_ASCII.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharPointer_ASCII.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_CharPointer_ASCII.h; sourceTree = SOURCE_ROOT; }; + 9245B8936083D87061E4FE15 /* juce_ApplicationBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationBase.h; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_ApplicationBase.h; sourceTree = SOURCE_ROOT; }; + 92B6276B30F89F742E78A265 /* juce_HighResolutionTimer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_HighResolutionTimer.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_HighResolutionTimer.h; sourceTree = SOURCE_ROOT; }; + 92BE7C40FE77D34FFF39D9BB /* juce_DropShadower.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DropShadower.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_DropShadower.cpp; sourceTree = SOURCE_ROOT; }; + 92E4C9A69A2DAD900D128A02 /* juce_HyperlinkButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_HyperlinkButton.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp; sourceTree = SOURCE_ROOT; }; + 92F91DC29B64AD85B1F508BD /* jucer_GenericComponentHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_GenericComponentHandler.h; path = ../../Source/ComponentEditor/components/jucer_GenericComponentHandler.h; sourceTree = SOURCE_ROOT; }; + 93B419190CCE92ACAB1ED25B /* jucer_ColouredElement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ColouredElement.cpp; path = ../../Source/ComponentEditor/paintelements/jucer_ColouredElement.cpp; sourceTree = SOURCE_ROOT; }; + 93B474F28D09D858DE16E881 /* juce_UnitTest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_UnitTest.cpp; path = ../../../JuceLibraryCode/modules/juce_core/unit_tests/juce_UnitTest.cpp; sourceTree = SOURCE_ROOT; }; + 93C5BEADA1AB1CFF7B167D2F /* juce_Random.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Random.cpp; path = ../../../JuceLibraryCode/modules/juce_core/maths/juce_Random.cpp; sourceTree = SOURCE_ROOT; }; + 93D03B2BC76998A3BDA747E8 /* jucer_AudioPluginModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginModule.h; path = ../../Source/Project/jucer_AudioPluginModule.h; sourceTree = SOURCE_ROOT; }; + 94232610F41512C7040EDA38 /* juce_MenuBarComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MenuBarComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarComponent.h; sourceTree = SOURCE_ROOT; }; + 945A4B296E9562BEFF95884A /* juce_ValueTree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ValueTree.h; path = ../../../JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTree.h; sourceTree = SOURCE_ROOT; }; + 94A8C75647A8777AC35F13FC /* juce_android_Threads.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Threads.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_android_Threads.cpp; sourceTree = SOURCE_ROOT; }; + 94E38DB823EBBA437181682F /* juce_MathsFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MathsFunctions.h; path = ../../../JuceLibraryCode/modules/juce_core/maths/juce_MathsFunctions.h; sourceTree = SOURCE_ROOT; }; + 951128CA33CCDEF570436B1C /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; path = Icon.icns; sourceTree = SOURCE_ROOT; }; + 95220AF02A9BEC790D84413E /* juce_win32_DirectWriteTypeface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_DirectWriteTypeface.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp; sourceTree = SOURCE_ROOT; }; + 9559DA09C937A41B88227D80 /* juce_ToolbarItemComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ToolbarItemComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h; sourceTree = SOURCE_ROOT; }; + 95604CB3BD2C7745FD8FDB74 /* juce_WaitableEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WaitableEvent.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_WaitableEvent.h; sourceTree = SOURCE_ROOT; }; + 957D4AC1FE338B82C790FDF7 /* juce_LeakedObjectDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LeakedObjectDetector.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_LeakedObjectDetector.h; sourceTree = SOURCE_ROOT; }; + 95A64B8A811BB2D78C6F13B9 /* juce_ApplicationCommandInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationCommandInfo.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h; sourceTree = SOURCE_ROOT; }; + 95BAFFF3DDCB31F1E4F5F807 /* juce_Colour.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Colour.h; path = ../../../JuceLibraryCode/modules/juce_graphics/colour/juce_Colour.h; sourceTree = SOURCE_ROOT; }; + 95CBFF7351F89C117E30292A /* juce_TextLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextLayout.h; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_TextLayout.h; sourceTree = SOURCE_ROOT; }; + 963891BF1C9BC566FCF433B7 /* juce_InterprocessConnection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_InterprocessConnection.cpp; path = ../../../JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnection.cpp; sourceTree = SOURCE_ROOT; }; + 963E0740B7B4D59EF2D16740 /* jucer_ComponentTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentTemplate.h; path = ../../Source/BinaryData/jucer_ComponentTemplate.h; sourceTree = SOURCE_ROOT; }; + 9683B04CA3BD7F73E8236FE2 /* jucer_ContentCompTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ContentCompTemplate.cpp; path = ../../Source/BinaryData/jucer_ContentCompTemplate.cpp; sourceTree = SOURCE_ROOT; }; + 96BD2AC4C892C245E04B8A93 /* juce_ChildProcess.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ChildProcess.cpp; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_ChildProcess.cpp; sourceTree = SOURCE_ROOT; }; + 97227974323F8526EB062F78 /* juce_FileChooserDialogBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileChooserDialogBox.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp; sourceTree = SOURCE_ROOT; }; + 974B862C51DA9A16CBBB3A29 /* jucer_ProjectExport_XCode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectExport_XCode.h; path = "../../Source/Project Saving/jucer_ProjectExport_XCode.h"; sourceTree = SOURCE_ROOT; }; + 97C816B1B6B7FBC38DF10303 /* juce_ApplicationCommandInfo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ApplicationCommandInfo.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp; sourceTree = SOURCE_ROOT; }; + 97E75A598791645465FEDCE1 /* jucer_EditingPanelBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_EditingPanelBase.h; path = ../../Source/ComponentEditor/ui/jucer_EditingPanelBase.h; sourceTree = SOURCE_ROOT; }; + 981A11A17B5DD50BC2A69F33 /* juce_CodeEditorComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CodeEditorComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp; sourceTree = SOURCE_ROOT; }; + 984CCFC22599870F2BC0611E /* juce_MouseEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseEvent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseEvent.cpp; sourceTree = SOURCE_ROOT; }; + 987490B430B80B4FA2792176 /* juce_ModalComponentManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ModalComponentManager.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_ModalComponentManager.cpp; sourceTree = SOURCE_ROOT; }; + 987C3D5A7CC55FB19AD24294 /* juce_StretchableLayoutResizerBar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_StretchableLayoutResizerBar.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp; sourceTree = SOURCE_ROOT; }; + 9899685BD109C2475BA4F8A1 /* juce_MessageManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MessageManager.h; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.h; sourceTree = SOURCE_ROOT; }; + 98F42686D9DAC974F2514217 /* jucer_EditingPanelBase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_EditingPanelBase.cpp; path = ../../Source/ComponentEditor/ui/jucer_EditingPanelBase.cpp; sourceTree = SOURCE_ROOT; }; + 993AD03D61870459F867B2F5 /* juce_ApplicationCommandID.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationCommandID.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandID.h; sourceTree = SOURCE_ROOT; }; + 99623EB9527119388EEDC8E6 /* juce_win32_Network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Network.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_win32_Network.cpp; sourceTree = SOURCE_ROOT; }; + 9993F2BAA90AA22D16B7F40B /* juce_graphics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_graphics.mm; path = ../../../JuceLibraryCode/modules/juce_graphics/juce_graphics.mm; sourceTree = SOURCE_ROOT; }; + 9A154A0F904C15BF6E1253F5 /* juce_FileFilter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileFilter.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileFilter.cpp; sourceTree = SOURCE_ROOT; }; + 9A7D5A94730758251DC8E4FD /* juce_DirectoryIterator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DirectoryIterator.h; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_DirectoryIterator.h; sourceTree = SOURCE_ROOT; }; + 9B3076A1D57D614DB7B4657E /* juce_ColourGradient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ColourGradient.h; path = ../../../JuceLibraryCode/modules/juce_graphics/colour/juce_ColourGradient.h; sourceTree = SOURCE_ROOT; }; + 9B4AAEAD95B93FA8F2348E27 /* juce_linux_Fonts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Fonts.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_linux_Fonts.cpp; sourceTree = SOURCE_ROOT; }; + 9B9CAD20E1243B4351B4C8D8 /* jucer_CodeHelpers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_CodeHelpers.cpp; path = ../../Source/Utility/jucer_CodeHelpers.cpp; sourceTree = SOURCE_ROOT; }; + 9BC8AE609A07657CEF587548 /* jucer_StoredSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_StoredSettings.h; path = ../../Source/Utility/jucer_StoredSettings.h; sourceTree = SOURCE_ROOT; }; + 9C04F9680F82BF279D528688 /* jucer_ProjectSaver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectSaver.h; path = "../../Source/Project Saving/jucer_ProjectSaver.h"; sourceTree = SOURCE_ROOT; }; + 9C1D8A8FAA2439A8EA2DD800 /* juce_MD5.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MD5.cpp; path = ../../../JuceLibraryCode/modules/juce_cryptography/hashing/juce_MD5.cpp; sourceTree = SOURCE_ROOT; }; + 9C51394634F102DEBBE6C9EB /* jucer_PaintElementText.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElementText.h; path = ../../Source/ComponentEditor/paintelements/jucer_PaintElementText.h; sourceTree = SOURCE_ROOT; }; + 9C7FA58D223674C4C2AC6595 /* jucer_JucerDocumentEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_JucerDocumentEditor.cpp; path = ../../Source/ComponentEditor/ui/jucer_JucerDocumentEditor.cpp; sourceTree = SOURCE_ROOT; }; + 9C803826E5E3FDB1B37660D5 /* jucer_ComponentDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentDocument.h; path = ../../Source/ComponentEditor/documents/jucer_ComponentDocument.h; sourceTree = SOURCE_ROOT; }; + 9CADF9A1F79D9D1ECC7147E9 /* juce_ComponentDragger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentDragger.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp; sourceTree = SOURCE_ROOT; }; + 9D7689451732AF8333402B3A /* jucer_ObjectTypes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ObjectTypes.cpp; path = ../../Source/ComponentEditor/jucer_ObjectTypes.cpp; sourceTree = SOURCE_ROOT; }; + 9DBDA8C274E693DF449FF525 /* juce_MemoryInputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MemoryInputStream.h; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_MemoryInputStream.h; sourceTree = SOURCE_ROOT; }; + 9DBE1CE382EE797178B3D35F /* juce_Message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Message.h; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_Message.h; sourceTree = SOURCE_ROOT; }; + 9E6BAEF28A55F7F349A15DDC /* juce_ios_MessageManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_ios_MessageManager.mm; path = ../../../JuceLibraryCode/modules/juce_events/native/juce_ios_MessageManager.mm; sourceTree = SOURCE_ROOT; }; + 9EDDEEBCF410FDF5B96FAD65 /* juce_StretchableObjectResizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StretchableObjectResizer.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h; sourceTree = SOURCE_ROOT; }; + 9EF583A6201DBC813C2F63C4 /* jucer_BinaryResources.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_BinaryResources.cpp; path = ../../Source/ComponentEditor/jucer_BinaryResources.cpp; sourceTree = SOURCE_ROOT; }; + 9EFCD465B3A75D9E2556DA0E /* juce_MouseListener.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseListener.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.cpp; sourceTree = SOURCE_ROOT; }; + 9EFFD9F226690A84BBA574C4 /* juce_win32_WebBrowserComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_WebBrowserComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; + 9F41F3338BF00D0FC74C6390 /* jucer_TestComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_TestComponent.h; path = ../../Source/ComponentEditor/ui/jucer_TestComponent.h; sourceTree = SOURCE_ROOT; }; + 9F58502C5ADE97059BD8BFE3 /* juce_RelativePointPath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativePointPath.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePointPath.h; sourceTree = SOURCE_ROOT; }; + 9F75811FE7B5F8D1321BEC69 /* jucer_ConfigTree_Modules.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ConfigTree_Modules.h; path = ../../Source/Project/jucer_ConfigTree_Modules.h; sourceTree = SOURCE_ROOT; }; + A039067FA15840674DB4CA0B /* juce_ImageCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImageCache.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageCache.cpp; sourceTree = SOURCE_ROOT; }; + A0951828C3BF47FA7E1E52F8 /* jucer_ViewportHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ViewportHandler.h; path = ../../Source/ComponentEditor/components/jucer_ViewportHandler.h; sourceTree = SOURCE_ROOT; }; + A191412DDC58FCC5A67373FD /* juce_ComponentAnimator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentAnimator.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp; sourceTree = SOURCE_ROOT; }; + A2B4202B1078374D5D0A2FA0 /* juce_XmlDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_XmlDocument.h; path = ../../../JuceLibraryCode/modules/juce_core/xml/juce_XmlDocument.h; sourceTree = SOURCE_ROOT; }; + A2F1EA2989EF154ADBFDC4C3 /* juce_RelativeParallelogram.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeParallelogram.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp; sourceTree = SOURCE_ROOT; }; + A350F5C1C50024670090021B /* juce_JPEGLoader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_JPEGLoader.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/image_formats/juce_JPEGLoader.cpp; sourceTree = SOURCE_ROOT; }; + A3632F10CD01DB5263F628F0 /* juce_ListBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ListBox.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ListBox.cpp; sourceTree = SOURCE_ROOT; }; + A36D9A1D559944BB4EAF2F5E /* juce_mac_NSViewComponentPeer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_NSViewComponentPeer.mm; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm; sourceTree = SOURCE_ROOT; }; + A3A4DC7DB79039626E4A311C /* juce_win32_Threads.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Threads.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_win32_Threads.cpp; sourceTree = SOURCE_ROOT; }; + A3AC7148A7357852CA7018AF /* juce_Application.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Application.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/application/juce_Application.cpp; sourceTree = SOURCE_ROOT; }; + A3F5671F82CBAC136EEA4D26 /* juce_FileChooser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileChooser.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp; sourceTree = SOURCE_ROOT; }; + A42E6A76BCFC6504676EBE8B /* juce_TextEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TextEditor.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TextEditor.cpp; sourceTree = SOURCE_ROOT; }; + A51E4D49C37A60CC0BCE4246 /* juce_AppleRemote.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AppleRemote.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_AppleRemote.h; sourceTree = SOURCE_ROOT; }; + A6B4EF8DBA1476D85FE0E927 /* juce_TemporaryFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TemporaryFile.h; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_TemporaryFile.h; sourceTree = SOURCE_ROOT; }; + A6D3D648059361F5836DE280 /* juce_ComponentListener.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentListener.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_ComponentListener.cpp; sourceTree = SOURCE_ROOT; }; + A73C997FBB6C26B632CBAE15 /* juce_Primes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Primes.cpp; path = ../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_Primes.cpp; sourceTree = SOURCE_ROOT; }; + A7DD1B727D226AE589E87E4A /* juce_Uuid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Uuid.cpp; path = ../../../JuceLibraryCode/modules/juce_core/misc/juce_Uuid.cpp; sourceTree = SOURCE_ROOT; }; + A8C8924ADBF29D01FDFD62BE /* juce_ImageFileFormat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImageFileFormat.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/images/juce_ImageFileFormat.cpp; sourceTree = SOURCE_ROOT; }; + A9208187F15083F4FC55E0E8 /* juce_Label.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Label.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Label.cpp; sourceTree = SOURCE_ROOT; }; + A947623ED5EA00C6C3FD8EBE /* juce_HyperlinkButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_HyperlinkButton.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_HyperlinkButton.h; sourceTree = SOURCE_ROOT; }; + A9888AA5368432DCA5F64910 /* juce_ComponentBoundsConstrainer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComponentBoundsConstrainer.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp; sourceTree = SOURCE_ROOT; }; + A99E772786C0A210E4CDF0D4 /* juce_FileSearchPathListComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileSearchPathListComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp; sourceTree = SOURCE_ROOT; }; + A9BAF0420FC4DC07011EA244 /* juce_CodeTokeniser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CodeTokeniser.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h; sourceTree = SOURCE_ROOT; }; + AA4578A9110E724AB87DF869 /* juce_TextDiff.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextDiff.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_TextDiff.h; sourceTree = SOURCE_ROOT; }; + AA8EED79F095953D2B5923B8 /* jucer_ComponentColourProperty.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentColourProperty.h; path = ../../Source/ComponentEditor/properties/jucer_ComponentColourProperty.h; sourceTree = SOURCE_ROOT; }; + AAC42C49D961A534FE64882E /* juce_MessageListener.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MessageListener.cpp; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_MessageListener.cpp; sourceTree = SOURCE_ROOT; }; + ABD9D1389B5591B2303990F9 /* juce_Timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Timer.cpp; path = ../../../JuceLibraryCode/modules/juce_events/timers/juce_Timer.cpp; sourceTree = SOURCE_ROOT; }; + AC544E614702255B972E1E8F /* juce_linux_SystemTrayIcon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_SystemTrayIcon.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp; sourceTree = SOURCE_ROOT; }; + AC70D9D3E27592DD5D19B935 /* juce_FileFilter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileFilter.cpp; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_FileFilter.cpp; sourceTree = SOURCE_ROOT; }; + AD828AEF8A826DCAD19095B7 /* juce_DirectoryContentsDisplayComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DirectoryContentsDisplayComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp; sourceTree = SOURCE_ROOT; }; + AE1BC6DCCFC1A18E2ACE23F1 /* jucer_MainTemplate_NoWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_MainTemplate_NoWindow.cpp; path = ../../Source/BinaryData/jucer_MainTemplate_NoWindow.cpp; sourceTree = SOURCE_ROOT; }; + AF51A8DC8E67D8EB660AD6D0 /* juce_Value.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Value.h; path = ../../../JuceLibraryCode/modules/juce_data_structures/values/juce_Value.h; sourceTree = SOURCE_ROOT; }; + AF9453BB7F2479400D4A144B /* juce_StringArray.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_StringArray.cpp; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_StringArray.cpp; sourceTree = SOURCE_ROOT; }; + AFEBD8423B07599B1DE175A3 /* jucer_ModulesPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ModulesPanel.h; path = ../../Source/Project/jucer_ModulesPanel.h; sourceTree = SOURCE_ROOT; }; + AFF72BA2B130F3F9AC029080 /* jucer_AudioPluginEditorTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginEditorTemplate.h; path = ../../Source/BinaryData/jucer_AudioPluginEditorTemplate.h; sourceTree = SOURCE_ROOT; }; + AFFC3BBF8BBC82DD09B25EEE /* juce_SystemClipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SystemClipboard.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_SystemClipboard.h; sourceTree = SOURCE_ROOT; }; + B00F60201606F195058BB575 /* jucer_ColourPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ColourPropertyComponent.h; path = ../../Source/ComponentEditor/properties/jucer_ColourPropertyComponent.h; sourceTree = SOURCE_ROOT; }; + B06C7C053DB0660CDA8B5C2C /* jucer_PaintRoutinePanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintRoutinePanel.h; path = ../../Source/ComponentEditor/ui/jucer_PaintRoutinePanel.h; sourceTree = SOURCE_ROOT; }; + B15E33E7342F6EB4F95C9B1D /* jucer_PaintRoutineEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_PaintRoutineEditor.cpp; path = ../../Source/ComponentEditor/ui/jucer_PaintRoutineEditor.cpp; sourceTree = SOURCE_ROOT; }; + B18059D88300EB8EF703A82B /* juce_TextButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TextButton.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_TextButton.cpp; sourceTree = SOURCE_ROOT; }; + B1963F0D8C0046E54FD9E023 /* jucer_ColouredElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ColouredElement.h; path = ../../Source/ComponentEditor/paintelements/jucer_ColouredElement.h; sourceTree = SOURCE_ROOT; }; + B1DF858F499D12D442679683 /* juce_MouseEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseEvent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseEvent.h; sourceTree = SOURCE_ROOT; }; + B271F77C266131705FF6F92B /* juce_cryptography.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_cryptography.h; path = ../../../JuceLibraryCode/modules/juce_cryptography/juce_cryptography.h; sourceTree = SOURCE_ROOT; }; + B290C6821BDC0912A94A1127 /* juce_Drawable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Drawable.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_Drawable.h; sourceTree = SOURCE_ROOT; }; + B292B170AC30407623358E6F /* juce_TableListBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TableListBox.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableListBox.h; sourceTree = SOURCE_ROOT; }; + B2CEB1DE8F290AFCDE9585BB /* juce_Random.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Random.h; path = ../../../JuceLibraryCode/modules/juce_core/maths/juce_Random.h; sourceTree = SOURCE_ROOT; }; + B388675858A6323C1A1F7BFE /* juce_TreeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TreeView.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TreeView.h; sourceTree = SOURCE_ROOT; }; + B420AC0E3CF485CCFFE5C625 /* juce_osx_MessageQueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_osx_MessageQueue.h; path = ../../../JuceLibraryCode/modules/juce_events/native/juce_osx_MessageQueue.h; sourceTree = SOURCE_ROOT; }; + B43D35488A61101480983DA3 /* juce_LowLevelGraphicsPostScriptRenderer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LowLevelGraphicsPostScriptRenderer.h; path = ../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h; sourceTree = SOURCE_ROOT; }; + B483D960309FAFC193F9CDA2 /* juce_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = juce_icon.png; path = ../../Source/BinaryData/juce_icon.png; sourceTree = SOURCE_ROOT; }; + B4E428E2D02619F18757BBF5 /* juce_JSON.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_JSON.h; path = ../../../JuceLibraryCode/modules/juce_core/javascript/juce_JSON.h; sourceTree = SOURCE_ROOT; }; + B53BBDA475207303A77FAD40 /* juce_linux_SystemStats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_SystemStats.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_linux_SystemStats.cpp; sourceTree = SOURCE_ROOT; }; + B54CB8DDB5000BDCBDECD8BA /* juce_TextPropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TextPropertyComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; + B5F94A37629F841C6C2B4CA7 /* juce_ScopedXLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScopedXLock.h; path = ../../../JuceLibraryCode/modules/juce_events/native/juce_ScopedXLock.h; sourceTree = SOURCE_ROOT; }; + B68B2E4185C6FDCEEE0DBA79 /* juce_WeakReference.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WeakReference.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_WeakReference.h; sourceTree = SOURCE_ROOT; }; + B72DAC469A62BD52C86102E7 /* juce_core.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_core.mm; path = ../../../JuceLibraryCode/modules/juce_core/juce_core.mm; sourceTree = SOURCE_ROOT; }; + B741170E45D74F30B7D5CDDF /* jucer_ComponentNameProperty.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentNameProperty.h; path = ../../Source/ComponentEditor/components/jucer_ComponentNameProperty.h; sourceTree = SOURCE_ROOT; }; + B7D930DDBE81040985D1B48C /* juce_LowLevelGraphicsSoftwareRenderer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LowLevelGraphicsSoftwareRenderer.h; path = ../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h; sourceTree = SOURCE_ROOT; }; + B8385E9A644BD3CD94876448 /* jucer_ProjectType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectType.h; path = ../../Source/Project/jucer_ProjectType.h; sourceTree = SOURCE_ROOT; }; + B83E41BC9767A790F2D04403 /* juce_DrawableButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableButton.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_DrawableButton.cpp; sourceTree = SOURCE_ROOT; }; + B895CACE6FF447C83DC7ABF1 /* juce_ToolbarButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ToolbarButton.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToolbarButton.h; sourceTree = SOURCE_ROOT; }; + B90DA9BF88AD7AA018CD1F6B /* juce_FileOutputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileOutputStream.h; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_FileOutputStream.h; sourceTree = SOURCE_ROOT; }; + B93A82D11582820D193C9131 /* juce_ScopedValueSetter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScopedValueSetter.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_ScopedValueSetter.h; sourceTree = SOURCE_ROOT; }; + B941446353FA94BCE78D001D /* juce_PropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_PropertyComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.h; sourceTree = SOURCE_ROOT; }; + B9B67E7AC6527BDB9D4D42D0 /* juce_ColourSelector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ColourSelector.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_ColourSelector.h; sourceTree = SOURCE_ROOT; }; + B9F917BA04B3A715B7E49128 /* juce_TooltipClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TooltipClient.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_TooltipClient.h; sourceTree = SOURCE_ROOT; }; + BA3CF913C966148DF5059C9F /* juce_ActionBroadcaster.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ActionBroadcaster.cpp; path = ../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp; sourceTree = SOURCE_ROOT; }; + BA61CF61BDB1194FF4A85DA7 /* juce_CallOutBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CallOutBox.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.cpp; sourceTree = SOURCE_ROOT; }; + BA9B833DA92A957DB959CECC /* juce_ios_UIViewComponent.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_ios_UIViewComponent.mm; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm; sourceTree = SOURCE_ROOT; }; + BAB603B7CA702368B2513074 /* juce_TabbedButtonBar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TabbedButtonBar.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp; sourceTree = SOURCE_ROOT; }; + BAC2D13A5ED7622DD43BF752 /* juce_GraphicsContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GraphicsContext.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_GraphicsContext.cpp; sourceTree = SOURCE_ROOT; }; + BAC43B20E14A340CCF14119C /* jucer_Project.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_Project.cpp; path = ../../Source/Project/jucer_Project.cpp; sourceTree = SOURCE_ROOT; }; + BB72D9AA25D5D5B090F16513 /* juce_events.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_events.mm; path = ../../../JuceLibraryCode/modules/juce_events/juce_events.mm; sourceTree = SOURCE_ROOT; }; + BBBBDB341B49EA3277A24D8C /* juce_ChoicePropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ChoicePropertyComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; + BC629A17FC45C9D48E2A383F /* juce_linux_Files.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Files.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_linux_Files.cpp; sourceTree = SOURCE_ROOT; }; + BC975A241710644E779FAB84 /* juce_Justification.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Justification.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/placement/juce_Justification.cpp; sourceTree = SOURCE_ROOT; }; + BCB8D7D4B1AFA15D3ACEFCEA /* juce_ComponentBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentBuilder.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBuilder.h; sourceTree = SOURCE_ROOT; }; + BCCFDFB2C02C4AA436C0ECF8 /* jucer_SliderHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_SliderHandler.h; path = ../../Source/ComponentEditor/components/jucer_SliderHandler.h; sourceTree = SOURCE_ROOT; }; + BDDD7A81586798621C6EF327 /* juce_Time.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Time.cpp; path = ../../../JuceLibraryCode/modules/juce_core/time/juce_Time.cpp; sourceTree = SOURCE_ROOT; }; + BE0926F2599AC33A59DF23E1 /* juce_ResizableBorderComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ResizableBorderComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h; sourceTree = SOURCE_ROOT; }; + BE4A96EF54B366C811255141 /* juce_GZIPCompressorOutputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GZIPCompressorOutputStream.h; path = ../../../JuceLibraryCode/modules/juce_core/zip/juce_GZIPCompressorOutputStream.h; sourceTree = SOURCE_ROOT; }; + BE6E4546B1A6458DEA0C7FD4 /* juce_posix_NamedPipe.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_posix_NamedPipe.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_posix_NamedPipe.cpp; sourceTree = SOURCE_ROOT; }; + BE876A77E905E3C0D9B66450 /* juce_OldSchoolLookAndFeel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_OldSchoolLookAndFeel.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.cpp; sourceTree = SOURCE_ROOT; }; + BED52FDD3843979E898DA4CE /* juce_String.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_String.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_String.h; sourceTree = SOURCE_ROOT; }; + BF09E9E179BA0B07203DC9FE /* juce_ChangeBroadcaster.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChangeBroadcaster.h; path = ../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeBroadcaster.h; sourceTree = SOURCE_ROOT; }; + BF1B82B8DD7429ECA96AD4C7 /* juce_StringPool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_StringPool.cpp; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_StringPool.cpp; sourceTree = SOURCE_ROOT; }; + BF24E0D37EAD41130FE149A3 /* juce_Identifier.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Identifier.cpp; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_Identifier.cpp; sourceTree = SOURCE_ROOT; }; + BF3CEF080FA013E2778DCE90 /* jucer_Project.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_Project.h; path = ../../Source/Project/jucer_Project.h; sourceTree = SOURCE_ROOT; }; + C017261AE701010986A93D34 /* juce_ThreadWithProgressWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ThreadWithProgressWindow.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h; sourceTree = SOURCE_ROOT; }; + C07856C24F305E7D50660F67 /* juce_SpinLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SpinLock.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_SpinLock.h; sourceTree = SOURCE_ROOT; }; + C094F3B6A65A79A6DF87C9C2 /* jucer_PaintElementGroup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElementGroup.h; path = ../../Source/ComponentEditor/paintelements/jucer_PaintElementGroup.h; sourceTree = SOURCE_ROOT; }; + C159CA71B03DCB9D7BC31A4E /* juce_ReferenceCountedObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ReferenceCountedObject.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_ReferenceCountedObject.h; sourceTree = SOURCE_ROOT; }; + C18696515B6681B033F06D44 /* juce_android_Fonts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Fonts.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_android_Fonts.cpp; sourceTree = SOURCE_ROOT; }; + C187718F7B9EBA88584B43F3 /* jucer_PaintRoutine.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_PaintRoutine.cpp; path = ../../Source/ComponentEditor/jucer_PaintRoutine.cpp; sourceTree = SOURCE_ROOT; }; + C21AD85C35257A4B9A74D522 /* juce_InterprocessConnection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_InterprocessConnection.h; path = ../../../JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnection.h; sourceTree = SOURCE_ROOT; }; + C2EEEB5E55C76817AC291BF0 /* juce_DirectoryContentsList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DirectoryContentsList.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h; sourceTree = SOURCE_ROOT; }; + C43808AF23AC4F25CB26733D /* juce_android_Network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Network.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_android_Network.cpp; sourceTree = SOURCE_ROOT; }; + C4B158D37FF6B3125BEED598 /* juce_GlowEffect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GlowEffect.h; path = ../../../JuceLibraryCode/modules/juce_graphics/effects/juce_GlowEffect.h; sourceTree = SOURCE_ROOT; }; + C5424781C756A8FF3D66670D /* juce_win32_SystemTrayIcon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_SystemTrayIcon.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp; sourceTree = SOURCE_ROOT; }; + C68D8C25B8BD332BA1DFB32E /* juce_LiveConstantEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LiveConstantEditor.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp; sourceTree = SOURCE_ROOT; }; + C695512ADA3E687DD1E55C0E /* juce_ZipFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ZipFile.h; path = ../../../JuceLibraryCode/modules/juce_core/zip/juce_ZipFile.h; sourceTree = SOURCE_ROOT; }; + C6ED030DED8F5A53636C4EBB /* juce_Path.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Path.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Path.cpp; sourceTree = SOURCE_ROOT; }; + C7608A3967D9AB9481848F2B /* jucer_DocumentEditorComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_DocumentEditorComponent.cpp; path = ../../Source/Application/jucer_DocumentEditorComponent.cpp; sourceTree = SOURCE_ROOT; }; + C7790615097597DFBFBFADC8 /* juce_RelativeCoordinate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeCoordinate.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h; sourceTree = SOURCE_ROOT; }; + C7B2FE883FA1401854BEDE8F /* juce_Thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Thread.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_Thread.h; sourceTree = SOURCE_ROOT; }; + C7B47372A9D5970E3D9A5400 /* jucer_GroupInformationComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_GroupInformationComponent.h; path = ../../Source/Project/jucer_GroupInformationComponent.h; sourceTree = SOURCE_ROOT; }; + C7B6983AD1896535B9B98F40 /* juce_MessageManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MessageManager.cpp; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.cpp; sourceTree = SOURCE_ROOT; }; + C7D4CFEA33205B2D33955B9E /* juce_CodeDocument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CodeDocument.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp; sourceTree = SOURCE_ROOT; }; + C81BC495F7C4B665C8856AA9 /* juce_ResizableWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResizableWindow.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp; sourceTree = SOURCE_ROOT; }; + C82094E39B4C9B4DE35A7EB4 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../../JuceLibraryCode/modules/juce_gui_extra/juce_module_info; sourceTree = SOURCE_ROOT; }; + C85BCA043B9CB378FA6876B5 /* juce_Toolbar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Toolbar.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Toolbar.cpp; sourceTree = SOURCE_ROOT; }; + C89684A359852FD2B16D705A /* juce_win32_DragAndDrop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_DragAndDrop.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp; sourceTree = SOURCE_ROOT; }; + C8A160E05C7F8F5CF534AC03 /* juce_ActionBroadcaster.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ActionBroadcaster.h; path = ../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionBroadcaster.h; sourceTree = SOURCE_ROOT; }; + C8A229ACD244F402C57286CD /* jucer_ProjectExport_MSVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectExport_MSVC.h; path = "../../Source/Project Saving/jucer_ProjectExport_MSVC.h"; sourceTree = SOURCE_ROOT; }; + C8DED829D0662D34D09A0C5B /* juce_ThreadLocalValue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ThreadLocalValue.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_ThreadLocalValue.h; sourceTree = SOURCE_ROOT; }; + C9441D8978D4B1F14F270228 /* juce_TabbedComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TabbedComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedComponent.h; sourceTree = SOURCE_ROOT; }; + C9616830BB2474066AC8C910 /* jucer_ResourceFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ResourceFile.h; path = "../../Source/Project Saving/jucer_ResourceFile.h"; sourceTree = SOURCE_ROOT; }; + C9CA4A5BF4D2A1109432BA49 /* juce_UndoManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_UndoManager.h; path = ../../../JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoManager.h; sourceTree = SOURCE_ROOT; }; + CAC9FBFB722FE3DA7CE3BE12 /* juce_mac_Files.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_Files.mm; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_mac_Files.mm; sourceTree = SOURCE_ROOT; }; + CB19A2F9C480B0739BC1D9F9 /* juce_FileBasedDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileBasedDocument.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/documents/juce_FileBasedDocument.h; sourceTree = SOURCE_ROOT; }; + CB37D7E91B0DA0927BA435F4 /* juce_KeyPress.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_KeyPress.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyPress.h; sourceTree = SOURCE_ROOT; }; + CB5760497CA6F044DA18D3A1 /* juce_KeyListener.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_KeyListener.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyListener.cpp; sourceTree = SOURCE_ROOT; }; + CCE50A531D751FD10817A9E7 /* juce_ConnectedChildProcess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ConnectedChildProcess.h; path = ../../../JuceLibraryCode/modules/juce_events/interprocess/juce_ConnectedChildProcess.h; sourceTree = SOURCE_ROOT; }; + CD0146FF182F74D52D481EB7 /* juce_LookAndFeel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LookAndFeel.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp; sourceTree = SOURCE_ROOT; }; + CD9FC835C7A1DE440792F5B4 /* juce_BubbleComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BubbleComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/misc/juce_BubbleComponent.h; sourceTree = SOURCE_ROOT; }; + CE08955E457642C4D6DFBA30 /* juce_GIFLoader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GIFLoader.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/image_formats/juce_GIFLoader.cpp; sourceTree = SOURCE_ROOT; }; + CE4A609A9FB2403D506B3068 /* juce_Slider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Slider.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Slider.cpp; sourceTree = SOURCE_ROOT; }; + CF21D9DB3AEC0A4DCAB36A99 /* jucer_Icons.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_Icons.cpp; path = ../../Source/Utility/jucer_Icons.cpp; sourceTree = SOURCE_ROOT; }; + CF4BDE076A0E86E887C842BD /* juce_ProgressBar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ProgressBar.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ProgressBar.cpp; sourceTree = SOURCE_ROOT; }; + CF4C51480A8E95AC5F107FF3 /* juce_BasicNativeHeaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BasicNativeHeaders.h; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_BasicNativeHeaders.h; sourceTree = SOURCE_ROOT; }; + CF6C8BD0DA3D8CD4E99EBADA /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; + CF736AF0DD24273D1F1FF37A /* juce_RelativePointPath.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativePointPath.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp; sourceTree = SOURCE_ROOT; }; + CF7F48D267805732933DF82C /* juce_Image.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Image.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/images/juce_Image.cpp; sourceTree = SOURCE_ROOT; }; + CF8011B3C67B609032974DA5 /* jucer_NewCppFileTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_NewCppFileTemplate.cpp; path = ../../Source/BinaryData/jucer_NewCppFileTemplate.cpp; sourceTree = SOURCE_ROOT; }; + CFBF253B95F793D399C7C7BE /* juce_AffineTransform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AffineTransform.h; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_AffineTransform.h; sourceTree = SOURCE_ROOT; }; + D00F311BFC3C2625C457CB9B /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; + D03B334EFDF780C2C0FE33B8 /* juce_android_WebBrowserComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_WebBrowserComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; + D052CBF83BDE89CDEDD3CA53 /* juce_DynamicObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DynamicObject.cpp; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_DynamicObject.cpp; sourceTree = SOURCE_ROOT; }; + D0B6A9AF3EC42C025B11894D /* juce_linux_FileChooser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_FileChooser.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp; sourceTree = SOURCE_ROOT; }; + D0D8B580D0689FFF4B9B823B /* jucer_StrokeType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_StrokeType.h; path = ../../Source/ComponentEditor/paintelements/jucer_StrokeType.h; sourceTree = SOURCE_ROOT; }; + D0EB880DBD68B9C44734E26F /* juce_SubregionStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SubregionStream.cpp; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_SubregionStream.cpp; sourceTree = SOURCE_ROOT; }; + D10D51A0A2D63F38B4D86A60 /* jucer_ResourceFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ResourceFile.cpp; path = "../../Source/Project Saving/jucer_ResourceFile.cpp"; sourceTree = SOURCE_ROOT; }; + D1A54DEEAD15A98719002174 /* juce_AsyncUpdater.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_AsyncUpdater.h; path = ../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_AsyncUpdater.h; sourceTree = SOURCE_ROOT; }; + D1B7039DE915ECD72000679E /* juce_OutputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_OutputStream.cpp; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_OutputStream.cpp; sourceTree = SOURCE_ROOT; }; + D1F9B0E9F5D54FE48BEB46EA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + D27D257731AF8F925F652C8F /* juce_FileBasedDocument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileBasedDocument.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp; sourceTree = SOURCE_ROOT; }; + D2A888E0C5D10BE75BD69E46 /* juce_InterprocessConnectionServer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_InterprocessConnectionServer.cpp; path = ../../../JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp; sourceTree = SOURCE_ROOT; }; + D374DC78AAC02504576AA9B3 /* jucer_GroupComponentHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_GroupComponentHandler.h; path = ../../Source/ComponentEditor/components/jucer_GroupComponentHandler.h; sourceTree = SOURCE_ROOT; }; + D3C9856B677A34F8C60469F2 /* juce_MultiDocumentPanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MultiDocumentPanel.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp; sourceTree = SOURCE_ROOT; }; + D3E139185095C486DD3D61F2 /* jucer_TranslationTool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_TranslationTool.h; path = ../../Source/Utility/jucer_TranslationTool.h; sourceTree = SOURCE_ROOT; }; + D409BCF0D1C42B2761F89C6F /* juce_LuaCodeTokeniser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LuaCodeTokeniser.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h; sourceTree = SOURCE_ROOT; }; + D41524385F8D560212C9D798 /* juce_LassoComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LassoComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_LassoComponent.h; sourceTree = SOURCE_ROOT; }; + D439FCBFE0FCAA2C67548362 /* juce_linux_WebBrowserComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_WebBrowserComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; + D4444EC6342A2A7BC4F7BC46 /* jucer_ComponentTextProperty.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentTextProperty.h; path = ../../Source/ComponentEditor/properties/jucer_ComponentTextProperty.h; sourceTree = SOURCE_ROOT; }; + D526C38D581425949BA0E4AC /* jucer_FilePreviewComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FilePreviewComponent.h; path = ../../Source/Application/jucer_FilePreviewComponent.h; sourceTree = SOURCE_ROOT; }; + D52AF2D2AB5FD27AD5DFF753 /* juce_Socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Socket.h; path = ../../../JuceLibraryCode/modules/juce_core/network/juce_Socket.h; sourceTree = SOURCE_ROOT; }; + D57E1008C51B8D4B9A70535F /* juce_ComponentListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentListener.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_ComponentListener.h; sourceTree = SOURCE_ROOT; }; + D58E5FDB639B07A0B6350657 /* juce_LocalisedStrings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_LocalisedStrings.cpp; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_LocalisedStrings.cpp; sourceTree = SOURCE_ROOT; }; + D6070A7CF3873DFD1B1A53A5 /* juce_gui_extra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_gui_extra.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.h; sourceTree = SOURCE_ROOT; }; + D61B5AB0906CF9228E8360BF /* juce_SliderPropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SliderPropertyComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; + D6520F83A0AD0B5BC024CB9F /* juce_GlowEffect.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GlowEffect.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/effects/juce_GlowEffect.cpp; sourceTree = SOURCE_ROOT; }; + D673EFEA126BD37BE8DD8D78 /* juce_IPAddress.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_IPAddress.cpp; path = ../../../JuceLibraryCode/modules/juce_core/network/juce_IPAddress.cpp; sourceTree = SOURCE_ROOT; }; + D70400A648DD2EE1FB29ED0A /* juce_CharPointer_UTF16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharPointer_UTF16.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF16.h; sourceTree = SOURCE_ROOT; }; + D7C052388BB7D6FAE4A15999 /* juce_ResizableWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ResizableWindow.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_ResizableWindow.h; sourceTree = SOURCE_ROOT; }; + D7F64C0E6B3CBA49A9F0341C /* juce_Font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Font.h; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_Font.h; sourceTree = SOURCE_ROOT; }; + D87FC8F6834E9DC9C8E88B94 /* jucer_JustificationProperty.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_JustificationProperty.h; path = ../../Source/ComponentEditor/properties/jucer_JustificationProperty.h; sourceTree = SOURCE_ROOT; }; + D8FA66DEA9117C2D0239B11B /* juce_ScopedLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ScopedLock.h; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_ScopedLock.h; sourceTree = SOURCE_ROOT; }; + D902B5961F78F2A6DFBF4B7F /* juce_UIViewComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_UIViewComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/embedding/juce_UIViewComponent.h; sourceTree = SOURCE_ROOT; }; + D92A6E9404A30EED32DCE4ED /* jucer_RelativePositionedRectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_RelativePositionedRectangle.h; path = ../../Source/ComponentEditor/ui/jucer_RelativePositionedRectangle.h; sourceTree = SOURCE_ROOT; }; + D96D764ABA74D392B9F7C30E /* juce_File.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_File.cpp; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_File.cpp; sourceTree = SOURCE_ROOT; }; + D9F50E5D2A0644E9DF20B1BA /* juce_IPAddress.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_IPAddress.h; path = ../../../JuceLibraryCode/modules/juce_core/network/juce_IPAddress.h; sourceTree = SOURCE_ROOT; }; + DA345D5B9DABD049F90DC96F /* jucer_GeneratedCode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_GeneratedCode.h; path = ../../Source/ComponentEditor/jucer_GeneratedCode.h; sourceTree = SOURCE_ROOT; }; + DA52CB613FB5AEB736624AB1 /* juce_win32_Fonts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Fonts.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_win32_Fonts.cpp; sourceTree = SOURCE_ROOT; }; + DABFA41975B51A33C19FD7C2 /* juce_XmlElement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_XmlElement.cpp; path = ../../../JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.cpp; sourceTree = SOURCE_ROOT; }; + DADCCD453FA0BCBE7E423FAA /* juce_ToolbarItemFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ToolbarItemFactory.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h; sourceTree = SOURCE_ROOT; }; + DAF84A553D264705FA6EB6FF /* jucer_TreeViewHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_TreeViewHandler.h; path = ../../Source/ComponentEditor/components/jucer_TreeViewHandler.h; sourceTree = SOURCE_ROOT; }; + DB5C7AA110B217372A52159A /* juce_ApplicationCommandTarget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ApplicationCommandTarget.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp; sourceTree = SOURCE_ROOT; }; + DBC8F8E3236577FB623E1F69 /* juce_Value.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Value.cpp; path = ../../../JuceLibraryCode/modules/juce_data_structures/values/juce_Value.cpp; sourceTree = SOURCE_ROOT; }; + DBE0CDE1B017190ABBFF557C /* jucer_ProjectExport_CodeBlocks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectExport_CodeBlocks.h; path = "../../Source/Project Saving/jucer_ProjectExport_CodeBlocks.h"; sourceTree = SOURCE_ROOT; }; + DC922C6A65D260C18E888E49 /* jucer_ComponentTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ComponentTemplate.cpp; path = ../../Source/BinaryData/jucer_ComponentTemplate.cpp; sourceTree = SOURCE_ROOT; }; + DD36B6A35D7350B32D2BF727 /* juce_FileInputStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FileInputStream.h; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_FileInputStream.h; sourceTree = SOURCE_ROOT; }; + DD5E98AA79A9883B74F5D38A /* juce_SliderPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SliderPropertyComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h; sourceTree = SOURCE_ROOT; }; + DD737A82676BCF9CD2F2B367 /* juce_graphics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_graphics.h; path = ../../../JuceLibraryCode/modules/juce_graphics/juce_graphics.h; sourceTree = SOURCE_ROOT; }; + DD95F4D24DEADB6030D5959E /* juce_ImageComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ImageComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ImageComponent.h; sourceTree = SOURCE_ROOT; }; + DDA9B189B27A9FA240CC04EA /* juce_SubregionStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SubregionStream.h; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_SubregionStream.h; sourceTree = SOURCE_ROOT; }; + DDDAD9BCDC99DBAE63B106DC /* juce_ApplicationBase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ApplicationBase.cpp; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_ApplicationBase.cpp; sourceTree = SOURCE_ROOT; }; + DDDCB9E999C4FF41EE6859DA /* juce_TabbedComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_TabbedComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedComponent.cpp; sourceTree = SOURCE_ROOT; }; + DDF2C578191FFE07300541E8 /* juce_gui_extra.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_gui_extra.mm; path = ../../../JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.mm; sourceTree = SOURCE_ROOT; }; + DEDF05B176E4165376AC6D4F /* juce_win32_HiddenMessageWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_win32_HiddenMessageWindow.h; path = ../../../JuceLibraryCode/modules/juce_events/native/juce_win32_HiddenMessageWindow.h; sourceTree = SOURCE_ROOT; }; + DF12EEE63E6D19610B89CA22 /* juce_win32_ComSmartPtr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_win32_ComSmartPtr.h; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_win32_ComSmartPtr.h; sourceTree = SOURCE_ROOT; }; + DF1E044516CA91C20B31FB6F /* juce_Logger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Logger.h; path = ../../../JuceLibraryCode/modules/juce_core/logging/juce_Logger.h; sourceTree = SOURCE_ROOT; }; + DF45CF7F287FC822F45A5AA9 /* juce_Label.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Label.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Label.h; sourceTree = SOURCE_ROOT; }; + DF725A596B7BCD7520CC0A9F /* jucer_ResourceEditorPanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ResourceEditorPanel.cpp; path = ../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.cpp; sourceTree = SOURCE_ROOT; }; + DF8FBA0269590E5FAC7FE213 /* juce_GZIPDecompressorInputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GZIPDecompressorInputStream.cpp; path = ../../../JuceLibraryCode/modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp; sourceTree = SOURCE_ROOT; }; + E0366FD0E45684229CBF9775 /* juce_Path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Path.h; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_Path.h; sourceTree = SOURCE_ROOT; }; + E0E99D3CFACF9CB9B503EDD8 /* juce_StretchableLayoutResizerBar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StretchableLayoutResizerBar.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h; sourceTree = SOURCE_ROOT; }; + E0F9CA57E44F7F7E7E217E47 /* jucer_ComponentUndoableAction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentUndoableAction.h; path = ../../Source/ComponentEditor/components/jucer_ComponentUndoableAction.h; sourceTree = SOURCE_ROOT; }; + E1139B64E290711F9DE2DCDE /* juce_DialogWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DialogWindow.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_DialogWindow.cpp; sourceTree = SOURCE_ROOT; }; + E1D39D158E760B202DBEDA81 /* juce_BubbleMessageComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BubbleMessageComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h; sourceTree = SOURCE_ROOT; }; + E224B3D37F624F7AE682E499 /* juce_CharacterFunctions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CharacterFunctions.cpp; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_CharacterFunctions.cpp; sourceTree = SOURCE_ROOT; }; + E2374E15D65425C4101237E2 /* jucer_NewComponentTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_NewComponentTemplate.h; path = ../../Source/BinaryData/jucer_NewComponentTemplate.h; sourceTree = SOURCE_ROOT; }; + E24325B47AEC8B77DDC456F6 /* juce_Component.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Component.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_Component.h; sourceTree = SOURCE_ROOT; }; + E2E00F66C14EEAE78119C0C6 /* juce_StandardHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StandardHeader.h; path = ../../../JuceLibraryCode/modules/juce_core/system/juce_StandardHeader.h; sourceTree = SOURCE_ROOT; }; + E3051371FE51A993DBFC9338 /* juce_SparseSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_SparseSet.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_SparseSet.h; sourceTree = SOURCE_ROOT; }; + E32210D5760697609D084C93 /* juce_RSAKey.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RSAKey.h; path = ../../../JuceLibraryCode/modules/juce_cryptography/encryption/juce_RSAKey.h; sourceTree = SOURCE_ROOT; }; + E39C4DD3100879AC614060C2 /* juce_MACAddress.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MACAddress.h; path = ../../../JuceLibraryCode/modules/juce_core/network/juce_MACAddress.h; sourceTree = SOURCE_ROOT; }; + E39CCC282936B2F3062E9143 /* juce_Time.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Time.h; path = ../../../JuceLibraryCode/modules/juce_core/time/juce_Time.h; sourceTree = SOURCE_ROOT; }; + E3E08397D63E4E96CECB2569 /* juce_MenuBarModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MenuBarModel.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarModel.h; sourceTree = SOURCE_ROOT; }; + E4389603AF8A3143883BFCE8 /* juce_StringPairArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_StringPairArray.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_StringPairArray.h; sourceTree = SOURCE_ROOT; }; + E44D93C93617D6314424CB46 /* juce_mac_MessageManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_MessageManager.mm; path = ../../../JuceLibraryCode/modules/juce_events/native/juce_mac_MessageManager.mm; sourceTree = SOURCE_ROOT; }; + E4BB22E27C5AA4B666F265BD /* jucer_TextButtonHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_TextButtonHandler.h; path = ../../Source/ComponentEditor/components/jucer_TextButtonHandler.h; sourceTree = SOURCE_ROOT; }; + E5030E4FB09EEFDEC6E17F33 /* juce_GlyphArrangement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GlyphArrangement.h; path = ../../../JuceLibraryCode/modules/juce_graphics/fonts/juce_GlyphArrangement.h; sourceTree = SOURCE_ROOT; }; + E509DD48975A90978E116EBD /* juce_gui_basics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_gui_basics.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h; sourceTree = SOURCE_ROOT; }; + E5C0F0324C408196C1E3AB24 /* juce_ColourGradient.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ColourGradient.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/colour/juce_ColourGradient.cpp; sourceTree = SOURCE_ROOT; }; + E5D6C36496F5BC84D7213BE8 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + E60E28D1B7491047DEA236AE /* jucer_ProjectContentComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectContentComponent.h; path = ../../Source/Project/jucer_ProjectContentComponent.h; sourceTree = SOURCE_ROOT; }; + E626D36E7158BA472EF89AD5 /* juce_DrawableComposite.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableComposite.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableComposite.h; sourceTree = SOURCE_ROOT; }; + E65A820D34BF39478B7C5925 /* jucer_DocumentEditorComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_DocumentEditorComponent.h; path = ../../Source/Application/jucer_DocumentEditorComponent.h; sourceTree = SOURCE_ROOT; }; + E6697A0594C3625F9025FD3B /* juce_freetype_Fonts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_freetype_Fonts.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_freetype_Fonts.cpp; sourceTree = SOURCE_ROOT; }; + E69046467FD9DC88B664447B /* juce_osx_ObjCHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_osx_ObjCHelpers.h; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_osx_ObjCHelpers.h; sourceTree = SOURCE_ROOT; }; + E691B76C2F16D0E4A2BFABC2 /* juce_ZipFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ZipFile.cpp; path = ../../../JuceLibraryCode/modules/juce_core/zip/juce_ZipFile.cpp; sourceTree = SOURCE_ROOT; }; + E6C8D5E6CB5649F8181F3663 /* juce_ImageComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ImageComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ImageComponent.cpp; sourceTree = SOURCE_ROOT; }; + E70CA21960A64CCB835725FF /* jucer_ProjectType.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ProjectType.cpp; path = ../../Source/Project/jucer_ProjectType.cpp; sourceTree = SOURCE_ROOT; }; + E76DA0073983CF90CCE4096B /* juce_KeyPressMappingSet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_KeyPressMappingSet.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp; sourceTree = SOURCE_ROOT; }; + E791EF4AE50CCD190A8BC5D0 /* juce_CachedComponentImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CachedComponentImage.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_CachedComponentImage.h; sourceTree = SOURCE_ROOT; }; + E794F8DCA1BD195F1D0BC64B /* juce_SplashScreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_SplashScreen.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_SplashScreen.cpp; sourceTree = SOURCE_ROOT; }; + E83203CFAA037EF461E3ACBD /* juce_NamedPipe.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_NamedPipe.cpp; path = ../../../JuceLibraryCode/modules/juce_core/network/juce_NamedPipe.cpp; sourceTree = SOURCE_ROOT; }; + E85876BF1128CB4E29D7CB64 /* juce_PerformanceCounter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PerformanceCounter.cpp; path = ../../../JuceLibraryCode/modules/juce_core/time/juce_PerformanceCounter.cpp; sourceTree = SOURCE_ROOT; }; + E96597BBC6A98255B51B94DC /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + EA362B80219C97D85ED267A9 /* juce_RectangleList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RectangleList.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_RectangleList.cpp; sourceTree = SOURCE_ROOT; }; + EA48567DDE6E64CF4DB9B23A /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../../JuceLibraryCode/modules/juce_events/juce_module_info; sourceTree = SOURCE_ROOT; }; + EA5EA4BEAC60FE65FC18B26E /* juce_Memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Memory.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_Memory.h; sourceTree = SOURCE_ROOT; }; + EA8D7BB28F79E1545758D636 /* juce_GroupComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GroupComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/layout/juce_GroupComponent.h; sourceTree = SOURCE_ROOT; }; + EAA4FD2E9CB12F1B946D2A62 /* juce_Slider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Slider.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Slider.h; sourceTree = SOURCE_ROOT; }; + EB1F11E213640441C36CDD21 /* juce_CodeEditorComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CodeEditorComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h; sourceTree = SOURCE_ROOT; }; + EB71BA07D6F667E69721E577 /* jucer_GradientPointComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_GradientPointComponent.h; path = ../../Source/ComponentEditor/paintelements/jucer_GradientPointComponent.h; sourceTree = SOURCE_ROOT; }; + EBB34E4A7C7DE86F68EE7A7E /* juce_FilenameComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FilenameComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp; sourceTree = SOURCE_ROOT; }; + EC1A0BD441203369A933D00C /* juce_ListBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ListBox.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ListBox.h; sourceTree = SOURCE_ROOT; }; + EC2E7A527518F2A8F8DEC27C /* juce_Atomic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Atomic.h; path = ../../../JuceLibraryCode/modules/juce_core/memory/juce_Atomic.h; sourceTree = SOURCE_ROOT; }; + EC736CD3AAE2E052E7D95076 /* juce_Initialisation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Initialisation.h; path = ../../../JuceLibraryCode/modules/juce_events/messages/juce_Initialisation.h; sourceTree = SOURCE_ROOT; }; + EE34B44EC8BF50DF2A1EADA6 /* juce_RelativePoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativePoint.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePoint.cpp; sourceTree = SOURCE_ROOT; }; + EE690110171E1648FF2118B8 /* jucer_Application.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_Application.h; path = ../../Source/Application/jucer_Application.h; sourceTree = SOURCE_ROOT; }; + EEA69803BC87FC7DF32A9816 /* juce_MouseCursor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseCursor.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseCursor.cpp; sourceTree = SOURCE_ROOT; }; + EEF2B5CF27493A0E5432F495 /* juce_mac_CoreGraphicsContext.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_mac_CoreGraphicsContext.mm; path = ../../../JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm; sourceTree = SOURCE_ROOT; }; + EF24C96CD12FC8589756DEF1 /* juce_KeyMappingEditorComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_KeyMappingEditorComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp; sourceTree = SOURCE_ROOT; }; + EF30A74B566A461A171BBF83 /* jucer_ComponentLayoutEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ComponentLayoutEditor.cpp; path = ../../Source/ComponentEditor/ui/jucer_ComponentLayoutEditor.cpp; sourceTree = SOURCE_ROOT; }; + EFA8CF715611D845AB284500 /* jucer_JucerComponentHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_JucerComponentHandler.h; path = ../../Source/ComponentEditor/components/jucer_JucerComponentHandler.h; sourceTree = SOURCE_ROOT; }; + F004FD803D0EDAAB81667345 /* juce_DrawableShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_DrawableShape.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableShape.cpp; sourceTree = SOURCE_ROOT; }; + F03E2BDD36E6F4F53AB767A8 /* jucer_Headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_Headers.h; path = ../../Source/jucer_Headers.h; sourceTree = SOURCE_ROOT; }; + F0781CFA5B984F75F7F56443 /* juce_WildcardFileFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_WildcardFileFilter.h; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_WildcardFileFilter.h; sourceTree = SOURCE_ROOT; }; + F0793C460694102BA8D6D293 /* juce_win32_SystemStats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_SystemStats.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_win32_SystemStats.cpp; sourceTree = SOURCE_ROOT; }; + F0A49FF985A114AC31ED8F87 /* juce_NSViewComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NSViewComponent.h; path = ../../../JuceLibraryCode/modules/juce_gui_extra/embedding/juce_NSViewComponent.h; sourceTree = SOURCE_ROOT; }; + F0D0CC4696419D4606EF5AE6 /* juce_NewLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NewLine.h; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_NewLine.h; sourceTree = SOURCE_ROOT; }; + F1163B7856FDABA413A88D90 /* jucer_NewFileWizard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_NewFileWizard.cpp; path = ../../Source/Project/jucer_NewFileWizard.cpp; sourceTree = SOURCE_ROOT; }; + F18AE75F1831D13FF53A8CCC /* jucer_PaintElementRectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElementRectangle.h; path = ../../Source/ComponentEditor/paintelements/jucer_PaintElementRectangle.h; sourceTree = SOURCE_ROOT; }; + F2A27DDB3055518A62BA7C25 /* juce_android_JNIHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_android_JNIHelpers.h; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_android_JNIHelpers.h; sourceTree = SOURCE_ROOT; }; + F361B20780764ADD61B1B692 /* juce_ios_UIViewComponentPeer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_ios_UIViewComponentPeer.mm; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm; sourceTree = SOURCE_ROOT; }; + F3ABB8336986650F0B800F7B /* juce_ArrayAllocationBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ArrayAllocationBase.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_ArrayAllocationBase.h; sourceTree = SOURCE_ROOT; }; + F3F4D8AEFD5290E8FDF0623E /* juce_LowLevelGraphicsContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_LowLevelGraphicsContext.h; path = ../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h; sourceTree = SOURCE_ROOT; }; + F4418E2C7AD718FE942DDF0A /* juce_EdgeTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_EdgeTable.h; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_EdgeTable.h; sourceTree = SOURCE_ROOT; }; + F4A450ECDFAAFE68DA0FB6C6 /* juce_ModalComponentManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ModalComponentManager.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/components/juce_ModalComponentManager.h; sourceTree = SOURCE_ROOT; }; + F4C1A19AAC280B0A58F73FAD /* juce_TextButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TextButton.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_TextButton.h; sourceTree = SOURCE_ROOT; }; + F4E3F9ED208CDD495BA720F9 /* juce_NamedPipe.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_NamedPipe.h; path = ../../../JuceLibraryCode/modules/juce_core/network/juce_NamedPipe.h; sourceTree = SOURCE_ROOT; }; + F54E3F6CA70967D469913C48 /* juce_PropertyComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PropertyComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; + F561D4822324D6D1650221FA /* juce_Thread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Thread.cpp; path = ../../../JuceLibraryCode/modules/juce_core/threads/juce_Thread.cpp; sourceTree = SOURCE_ROOT; }; + F59077841FC17DD07060A2A9 /* jucer_TextEditorHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_TextEditorHandler.h; path = ../../Source/ComponentEditor/components/jucer_TextEditorHandler.h; sourceTree = SOURCE_ROOT; }; + F61D66D41025A0E4F9CDBE7A /* juce_linux_Windowing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_linux_Windowing.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_Windowing.cpp; sourceTree = SOURCE_ROOT; }; + F6AE2E230EF9FF9F3387394A /* juce_ComponentDragger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentDragger.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/mouse/juce_ComponentDragger.h; sourceTree = SOURCE_ROOT; }; + F6BD39AD06B0E7E7C9D8B0CE /* juce_FileInputSource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileInputSource.cpp; path = ../../../JuceLibraryCode/modules/juce_core/streams/juce_FileInputSource.cpp; sourceTree = SOURCE_ROOT; }; + F6D3F208B6EE2A50CE1F0A18 /* jucer_JucerCommandIDs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_JucerCommandIDs.h; path = ../../Source/ComponentEditor/ui/jucer_JucerCommandIDs.h; sourceTree = SOURCE_ROOT; }; + F71AF6D2DF3E652F8B51EBAB /* jucer_ProjectExporter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ProjectExporter.cpp; path = "../../Source/Project Saving/jucer_ProjectExporter.cpp"; sourceTree = SOURCE_ROOT; }; + F73142334238E8D5B5D3E3B1 /* juce_EdgeTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_EdgeTable.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_EdgeTable.cpp; sourceTree = SOURCE_ROOT; }; + F74B09C0BC8F9038B7464F74 /* juce_ComboBox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ComboBox.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ComboBox.cpp; sourceTree = SOURCE_ROOT; }; + F784E90F14BB554B2D97A4E7 /* juce_module_info */ = {isa = PBXFileReference; lastKnownFileType = text; name = juce_module_info; path = ../../../JuceLibraryCode/modules/juce_graphics/juce_module_info; sourceTree = SOURCE_ROOT; }; + F797071D88542C813CF7222A /* jucer_Module.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_Module.cpp; path = ../../Source/Project/jucer_Module.cpp; sourceTree = SOURCE_ROOT; }; + F7A91434FEFBE9AC130CD814 /* jucer_NewProjectWizard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_NewProjectWizard.h; path = ../../Source/Project/jucer_NewProjectWizard.h; sourceTree = SOURCE_ROOT; }; + F7CAB5BC15EE351949D3F2C3 /* jucer_NewInlineComponentTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_NewInlineComponentTemplate.h; path = ../../Source/BinaryData/jucer_NewInlineComponentTemplate.h; sourceTree = SOURCE_ROOT; }; + F80B253C502FB1EB649082E9 /* juce_FileInputStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileInputStream.cpp; path = ../../../JuceLibraryCode/modules/juce_core/files/juce_FileInputStream.cpp; sourceTree = SOURCE_ROOT; }; + F9505DCCE2815E8238BB88B7 /* juce_FileTreeComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_FileTreeComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp; sourceTree = SOURCE_ROOT; }; + F98D95171F5605A4905E6516 /* juce_GraphicsContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GraphicsContext.h; path = ../../../JuceLibraryCode/modules/juce_graphics/contexts/juce_GraphicsContext.h; sourceTree = SOURCE_ROOT; }; + F9B4B5E9595EC2CD47736BAC /* juce_DrawableShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableShape.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableShape.h; sourceTree = SOURCE_ROOT; }; + F9CFCE9A63B208A180F2AC3A /* juce_android_Misc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Misc.cpp; path = ../../../JuceLibraryCode/modules/juce_core/native/juce_android_Misc.cpp; sourceTree = SOURCE_ROOT; }; + FA04E39EE7E83D445AF9E406 /* jucer_FillType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FillType.h; path = ../../Source/ComponentEditor/paintelements/jucer_FillType.h; sourceTree = SOURCE_ROOT; }; + FA72B8D84B97CAC1AD24DA22 /* juce_StringPairArray.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_StringPairArray.cpp; path = ../../../JuceLibraryCode/modules/juce_core/text/juce_StringPairArray.cpp; sourceTree = SOURCE_ROOT; }; + FA9E4210846A6425A2B54856 /* juce_FillType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_FillType.h; path = ../../../JuceLibraryCode/modules/juce_graphics/colour/juce_FillType.h; sourceTree = SOURCE_ROOT; }; + FB6BACB4F1E834A6934E4DC2 /* juce_ChangeListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ChangeListener.h; path = ../../../JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeListener.h; sourceTree = SOURCE_ROOT; }; + FBBDD70D47163D341B2F0A8D /* jucer_ComponentOverlayComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentOverlayComponent.h; path = ../../Source/ComponentEditor/ui/jucer_ComponentOverlayComponent.h; sourceTree = SOURCE_ROOT; }; + FBD5E2A21019AF2EAD45BAD1 /* juce_ToolbarItemComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ToolbarItemComponent.cpp; path = ../../../JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp; sourceTree = SOURCE_ROOT; }; + FBDAD6DDA8200BF53FCB5734 /* juce_PathStrokeType.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PathStrokeType.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_PathStrokeType.cpp; sourceTree = SOURCE_ROOT; }; + FDF068E783DD784E3C2221C5 /* juce_AffineTransform.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AffineTransform.cpp; path = ../../../JuceLibraryCode/modules/juce_graphics/geometry/juce_AffineTransform.cpp; sourceTree = SOURCE_ROOT; }; + FE6AA1851DA877743D606FC0 /* juce_ValueTree.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ValueTree.cpp; path = ../../../JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTree.cpp; sourceTree = SOURCE_ROOT; }; + FEBB5ECA2C071F61AFD9A9D2 /* juce_DrawableButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_DrawableButton.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/buttons/juce_DrawableButton.h; sourceTree = SOURCE_ROOT; }; + FF11D6B512FDC5D887E06F66 /* jucer_PaintElementImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElementImage.h; path = ../../Source/ComponentEditor/paintelements/jucer_PaintElementImage.h; sourceTree = SOURCE_ROOT; }; + FF1E5535A2AC41B9B355A1B6 /* juce_OwnedArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_OwnedArray.h; path = ../../../JuceLibraryCode/modules/juce_core/containers/juce_OwnedArray.h; sourceTree = SOURCE_ROOT; }; + FF320FE35050A585E08FF993 /* juce_RelativeCoordinatePositioner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeCoordinatePositioner.h; path = ../../../JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h; sourceTree = SOURCE_ROOT; }; + FF94FF5C4BEC605E56149EFC /* jucer_LabelHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LabelHandler.h; path = ../../Source/ComponentEditor/components/jucer_LabelHandler.h; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B8D802107FEE6AD60F5309A3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1E76E36772355E2A43CF4961 /* Carbon.framework in Frameworks */, + 241F29FCBB7A17BB44A0B10C /* Cocoa.framework in Frameworks */, + 49C22786B54C5DC94E4654B8 /* IOKit.framework in Frameworks */, + 11D42F7EC6E6539D79A7F4B1 /* QuartzCore.framework in Frameworks */, + B980464FA2761CCD64B1FAD6 /* WebKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00C2E5EAA46FC2E94B735C42 /* filebrowser */ = { + isa = PBXGroup; + children = ( + AD828AEF8A826DCAD19095B7 /* juce_DirectoryContentsDisplayComponent.cpp */, + 0FAD42641F0AAC0B7E906D18 /* juce_DirectoryContentsDisplayComponent.h */, + 334E3DFFA297DD18AD57F40F /* juce_DirectoryContentsList.cpp */, + C2EEEB5E55C76817AC291BF0 /* juce_DirectoryContentsList.h */, + 0F9DBA4AB2BD63773528D805 /* juce_FileBrowserComponent.cpp */, + 33B2073D379E18BC2919FA07 /* juce_FileBrowserComponent.h */, + 27C16EA8D243AC7934DF11B1 /* juce_FileBrowserListener.h */, + A3F5671F82CBAC136EEA4D26 /* juce_FileChooser.cpp */, + 2875464712C12E9BFCCEE57D /* juce_FileChooser.h */, + 97227974323F8526EB062F78 /* juce_FileChooserDialogBox.cpp */, + 1270CC27AD4D0805DD4BA465 /* juce_FileChooserDialogBox.h */, + 9A154A0F904C15BF6E1253F5 /* juce_FileFilter.cpp */, + 73D0EA57406DF9583EE8FB3B /* juce_FileFilter.h */, + 87B65D3DBFD7D35B15010226 /* juce_FileListComponent.cpp */, + 507C2DFBFDA8AB08F71ED82D /* juce_FileListComponent.h */, + EBB34E4A7C7DE86F68EE7A7E /* juce_FilenameComponent.cpp */, + 3131C94D973A735EA68C1C77 /* juce_FilenameComponent.h */, + 4E2A191756179C6616D50B58 /* juce_FilePreviewComponent.h */, + A99E772786C0A210E4CDF0D4 /* juce_FileSearchPathListComponent.cpp */, + 7F3AE35521DFE092953385B6 /* juce_FileSearchPathListComponent.h */, + F9505DCCE2815E8238BB88B7 /* juce_FileTreeComponent.cpp */, + 668D7FDE00212229DFCB2175 /* juce_FileTreeComponent.h */, + 2802BE05CAC2BE78EFD5A239 /* juce_ImagePreviewComponent.cpp */, + 36F06F123E9717834A627F8D /* juce_ImagePreviewComponent.h */, + 39698748BDD86977C4474DE4 /* juce_WildcardFileFilter.cpp */, + 44F454FF28C39CC641FF410B /* juce_WildcardFileFilter.h */, + ); + name = filebrowser; + sourceTree = "<group>"; + }; + 01C121A5814A16A7CB907FB9 /* memory */ = { + isa = PBXGroup; + children = ( + EC2E7A527518F2A8F8DEC27C /* juce_Atomic.h */, + 257104EA81085B98E8AFCFB3 /* juce_ByteOrder.h */, + 439A60BB029251ED3752A69A /* juce_ContainerDeletePolicy.h */, + 7E1CE53CFD909089387910AF /* juce_HeapBlock.h */, + 957D4AC1FE338B82C790FDF7 /* juce_LeakedObjectDetector.h */, + EA5EA4BEAC60FE65FC18B26E /* juce_Memory.h */, + 6DB44C43D1260559163A47F0 /* juce_MemoryBlock.cpp */, + 4DAF01670050184A3BAAA93B /* juce_MemoryBlock.h */, + 64EDFDAE0755DC1451F181B8 /* juce_OptionalScopedPointer.h */, + C159CA71B03DCB9D7BC31A4E /* juce_ReferenceCountedObject.h */, + 6AC5756EBCB78FD82C15B829 /* juce_ScopedPointer.h */, + 4064AE577A11F735B2CE87F0 /* juce_SharedResourcePointer.h */, + 28E9116333CAD9E8164008A9 /* juce_Singleton.h */, + B68B2E4185C6FDCEEE0DBA79 /* juce_WeakReference.h */, + ); + name = memory; + sourceTree = "<group>"; + }; + 06D5C2B5F1F4E37AF1C7A425 /* streams */ = { + isa = PBXGroup; + children = ( + 8216291F3E0D0926D64AD98C /* juce_BufferedInputStream.cpp */, + 51DAFE574A52F68CC4A10274 /* juce_BufferedInputStream.h */, + F6BD39AD06B0E7E7C9D8B0CE /* juce_FileInputSource.cpp */, + 4301D29792107D6471F29FDF /* juce_FileInputSource.h */, + 16C7EFDF9ED765D02DA12C55 /* juce_InputSource.h */, + 39D907284C634E6A9FC45E3E /* juce_InputStream.cpp */, + 14BE817BFCB5B1CF2799C860 /* juce_InputStream.h */, + 2CF191F1A61F2C167FF2DADA /* juce_MemoryInputStream.cpp */, + 9DBDA8C274E693DF449FF525 /* juce_MemoryInputStream.h */, + 6CA3455CFAA1A52891F55CEF /* juce_MemoryOutputStream.cpp */, + 4F5572380B51C24AE8D34450 /* juce_MemoryOutputStream.h */, + D1B7039DE915ECD72000679E /* juce_OutputStream.cpp */, + 68164EA5DFF5CE5AC2402670 /* juce_OutputStream.h */, + D0EB880DBD68B9C44734E26F /* juce_SubregionStream.cpp */, + DDA9B189B27A9FA240CC04EA /* juce_SubregionStream.h */, + ); + name = streams; + sourceTree = "<group>"; + }; + 084F5B9CA3F5822A7D9156AF /* interprocess */ = { + isa = PBXGroup; + children = ( + 85B48563B4437E1E27ACABAD /* juce_ConnectedChildProcess.cpp */, + CCE50A531D751FD10817A9E7 /* juce_ConnectedChildProcess.h */, + 963891BF1C9BC566FCF433B7 /* juce_InterprocessConnection.cpp */, + C21AD85C35257A4B9A74D522 /* juce_InterprocessConnection.h */, + D2A888E0C5D10BE75BD69E46 /* juce_InterprocessConnectionServer.cpp */, + 1233E258E4C1FD4AAA7A6D1A /* juce_InterprocessConnectionServer.h */, + ); + name = interprocess; + sourceTree = "<group>"; + }; + 0B795464B0BFEE19C4F89F0F /* files */ = { + isa = PBXGroup; + children = ( + 3ED948823F776108CD873C68 /* juce_DirectoryIterator.cpp */, + 9A7D5A94730758251DC8E4FD /* juce_DirectoryIterator.h */, + D96D764ABA74D392B9F7C30E /* juce_File.cpp */, + 1BE0A264A6AA494EF75B582B /* juce_File.h */, + AC70D9D3E27592DD5D19B935 /* juce_FileFilter.cpp */, + 3CF3F730EA232DA860D1B79D /* juce_FileFilter.h */, + F80B253C502FB1EB649082E9 /* juce_FileInputStream.cpp */, + DD36B6A35D7350B32D2BF727 /* juce_FileInputStream.h */, + 36E341F289B15DB1B7FA7528 /* juce_FileOutputStream.cpp */, + B90DA9BF88AD7AA018CD1F6B /* juce_FileOutputStream.h */, + 46515892E00E0D91D920B90C /* juce_FileSearchPath.cpp */, + 1848EB565B679F72C560EBAD /* juce_FileSearchPath.h */, + 9153965AAA76A86DFCAEE86E /* juce_MemoryMappedFile.h */, + 6C7A1929978639A482D5096D /* juce_TemporaryFile.cpp */, + A6B4EF8DBA1476D85FE0E927 /* juce_TemporaryFile.h */, + 4A19E61C47E844D661C34DDD /* juce_WildcardFileFilter.cpp */, + F0781CFA5B984F75F7F56443 /* juce_WildcardFileFilter.h */, + ); + name = files; + sourceTree = "<group>"; + }; + 0FFEF043CA89142B18C79ABE /* Frameworks */ = { + isa = PBXGroup; + children = ( + D00F311BFC3C2625C457CB9B /* Carbon.framework */, + D1F9B0E9F5D54FE48BEB46EA /* Cocoa.framework */, + E96597BBC6A98255B51B94DC /* IOKit.framework */, + E5D6C36496F5BC84D7213BE8 /* QuartzCore.framework */, + CF6C8BD0DA3D8CD4E99EBADA /* WebKit.framework */, + ); + name = Frameworks; + sourceTree = "<group>"; + }; + 101599FA5E724FC0C78144B3 /* containers */ = { + isa = PBXGroup; + children = ( + 385426A4A6D3BFC4B2FD310C /* juce_AbstractFifo.cpp */, + 514B0E8E2796ACE7385F6717 /* juce_AbstractFifo.h */, + 2C5E67AA30FCCE2E09C8CB6B /* juce_Array.h */, + F3ABB8336986650F0B800F7B /* juce_ArrayAllocationBase.h */, + D052CBF83BDE89CDEDD3CA53 /* juce_DynamicObject.cpp */, + 1F869D818F79BE6EEE2305FD /* juce_DynamicObject.h */, + 849641B50DB4AE6CCA1C543F /* juce_ElementComparator.h */, + 497E5C615BFF59384CB2284C /* juce_HashMap.h */, + 0153A6801552D0B4C21BE911 /* juce_LinkedListPointer.h */, + 1FDBC89D596C6E959E7A8825 /* juce_NamedValueSet.cpp */, + 231F4AC6660B650E08EF1E54 /* juce_NamedValueSet.h */, + FF1E5535A2AC41B9B355A1B6 /* juce_OwnedArray.h */, + 8EE709A982B89A4C752303BC /* juce_PropertySet.cpp */, + 61804EF1D5DC1451EBDAF6C5 /* juce_PropertySet.h */, + 159A5AC2CAF01A7A17ECA0A0 /* juce_ReferenceCountedArray.h */, + B93A82D11582820D193C9131 /* juce_ScopedValueSetter.h */, + 3FDA82F89379E99C9E3B5C64 /* juce_SortedSet.h */, + E3051371FE51A993DBFC9338 /* juce_SparseSet.h */, + 5B28BE68400342E97C084ACC /* juce_Variant.cpp */, + 1F04ABB8C6FA1598902FE33A /* juce_Variant.h */, + ); + name = containers; + sourceTree = "<group>"; + }; + 1183520311BFD05477F94ECA /* menus */ = { + isa = PBXGroup; + children = ( + 04A2C05B7935B8D335B5FD39 /* juce_MenuBarComponent.cpp */, + 94232610F41512C7040EDA38 /* juce_MenuBarComponent.h */, + 2E183952277F99D860EEB3F3 /* juce_MenuBarModel.cpp */, + E3E08397D63E4E96CECB2569 /* juce_MenuBarModel.h */, + 64520235EF5529F8C0E4A9A7 /* juce_PopupMenu.cpp */, + 83C7547CCAFCBB88F791FED8 /* juce_PopupMenu.h */, + ); + name = menus; + sourceTree = "<group>"; + }; + 14995D34FE0826A52FA5262D /* placement */ = { + isa = PBXGroup; + children = ( + BC975A241710644E779FAB84 /* juce_Justification.cpp */, + 241A48F1D188BF19314065C2 /* juce_Justification.h */, + 27F7865BD6FE03B970B8DBFB /* juce_RectanglePlacement.cpp */, + 513AF2A4DB37CC6F47E6CEF0 /* juce_RectanglePlacement.h */, + ); + name = placement; + sourceTree = "<group>"; + }; + 1D09D8A2B803860D8927C366 /* documents */ = { + isa = PBXGroup; + children = ( + D27D257731AF8F925F652C8F /* juce_FileBasedDocument.cpp */, + CB19A2F9C480B0739BC1D9F9 /* juce_FileBasedDocument.h */, + ); + name = documents; + sourceTree = "<group>"; + }; + 1EB4CE7119697D9CCE604271 /* hashing */ = { + isa = PBXGroup; + children = ( + 9C1D8A8FAA2439A8EA2DD800 /* juce_MD5.cpp */, + 665EDD760E47A6AD1A1DBC2D /* juce_MD5.h */, + 24D73A13CD0F89E299E11B0E /* juce_SHA256.cpp */, + 482C35BB3B7DDE1B452C8455 /* juce_SHA256.h */, + ); + name = hashing; + sourceTree = "<group>"; + }; + 20F9DB293E2CC9F98F43758C /* network */ = { + isa = PBXGroup; + children = ( + D673EFEA126BD37BE8DD8D78 /* juce_IPAddress.cpp */, + D9F50E5D2A0644E9DF20B1BA /* juce_IPAddress.h */, + 8F14D66EAF9B6219C5D1C510 /* juce_MACAddress.cpp */, + E39C4DD3100879AC614060C2 /* juce_MACAddress.h */, + E83203CFAA037EF461E3ACBD /* juce_NamedPipe.cpp */, + F4E3F9ED208CDD495BA720F9 /* juce_NamedPipe.h */, + 4BF00AE19C332EF226420C57 /* juce_Socket.cpp */, + D52AF2D2AB5FD27AD5DFF753 /* juce_Socket.h */, + 523B197F8A3BCA94C58C6DEF /* juce_URL.cpp */, + 7C0528B4912955DA59C28356 /* juce_URL.h */, + ); + name = network; + sourceTree = "<group>"; + }; + 2287744248275B6237708450 /* messages */ = { + isa = PBXGroup; + children = ( + DDDAD9BCDC99DBAE63B106DC /* juce_ApplicationBase.cpp */, + 9245B8936083D87061E4FE15 /* juce_ApplicationBase.h */, + 72EC62B05E134F85761E642E /* juce_CallbackMessage.h */, + 43BFDF9214946C6B76CA666D /* juce_DeletedAtShutdown.cpp */, + 69A1792C863C7957A80F6945 /* juce_DeletedAtShutdown.h */, + EC736CD3AAE2E052E7D95076 /* juce_Initialisation.h */, + 9DBE1CE382EE797178B3D35F /* juce_Message.h */, + AAC42C49D961A534FE64882E /* juce_MessageListener.cpp */, + 72A66FD9571871FFB455F8B5 /* juce_MessageListener.h */, + C7B6983AD1896535B9B98F40 /* juce_MessageManager.cpp */, + 9899685BD109C2475BA4F8A1 /* juce_MessageManager.h */, + 043FC175E80305E3D95ECAF8 /* juce_NotificationType.h */, + ); + name = messages; + sourceTree = "<group>"; + }; + 248A3D6E995D23F2AFDBF78B /* unit_tests */ = { + isa = PBXGroup; + children = ( + 93B474F28D09D858DE16E881 /* juce_UnitTest.cpp */, + 4467B3824742815D1355DB81 /* juce_UnitTest.h */, + ); + name = unit_tests; + sourceTree = "<group>"; + }; + 2A27F41171A44038C2A1CB56 /* juce_gui_basics */ = { + isa = PBXGroup; + children = ( + 2CEAE8B236FEF5E06317EF3B /* components */, + CD1AFCF4DFA46BA5BACBB1CB /* mouse */, + A186EF5D092D513F30A4FE23 /* keyboard */, + 617C7A87C00C7357D6B4CA43 /* widgets */, + FDA3E07A3631D25DFEA73850 /* windows */, + 1183520311BFD05477F94ECA /* menus */, + 3644BF38DFC789105B7D80FB /* layout */, + 58CA858FC033FD1F47ADA039 /* buttons */, + A3BF94AE00810C812E121816 /* positioning */, + 69E5820210E99179A52F1A77 /* drawables */, + B2243BBE276C148522C5987E /* properties */, + C2A68B1BEC638D0513BF25C1 /* lookandfeel */, + 00C2E5EAA46FC2E94B735C42 /* filebrowser */, + 952AFE51A503A04FFF4B0EF7 /* commands */, + 76F28FCB72DD5943D08F3342 /* misc */, + DD0FDFC530E403BD51C86315 /* application */, + 8EAF68A83656BC02B4B7C9C9 /* native */, + 5B9EE26978797CC153F5E24F /* juce_module_info */, + E509DD48975A90978E116EBD /* juce_gui_basics.h */, + ); + name = juce_gui_basics; + sourceTree = "<group>"; + }; + 2A8293EA2395BFFCA229F799 /* values */ = { + isa = PBXGroup; + children = ( + DBC8F8E3236577FB623E1F69 /* juce_Value.cpp */, + AF51A8DC8E67D8EB660AD6D0 /* juce_Value.h */, + FE6AA1851DA877743D606FC0 /* juce_ValueTree.cpp */, + 945A4B296E9562BEFF95884A /* juce_ValueTree.h */, + ); + name = values; + sourceTree = "<group>"; + }; + 2BA1ACF18E7E078C7171B162 /* documents */ = { + isa = PBXGroup; + children = ( + 3E03B7C7A19E63A724EB79F4 /* jucer_ButtonDocument.cpp */, + 1FA92F8F2B26C6CEC8B1D737 /* jucer_ButtonDocument.h */, + 662C76394C5D1B56766FAFD9 /* jucer_ComponentDocument.cpp */, + 9C803826E5E3FDB1B37660D5 /* jucer_ComponentDocument.h */, + ); + name = documents; + sourceTree = "<group>"; + }; + 2C6746F66EF4444F53B3221F /* Juce Library Code */ = { + isa = PBXGroup; + children = ( + 8702F43110E4CCA5E5F827F5 /* AppConfig.h */, + 472F9A90F685220D730EBF6C /* BinaryData.cpp */, + 4F687965FBE86EAFDB3ACFEC /* BinaryData.h */, + B72DAC469A62BD52C86102E7 /* juce_core.mm */, + 2D5E55D7E0BC08AAF7B6E150 /* juce_cryptography.mm */, + 2C53E412EF7FC1036E4B11AC /* juce_data_structures.mm */, + BB72D9AA25D5D5B090F16513 /* juce_events.mm */, + 9993F2BAA90AA22D16B7F40B /* juce_graphics.mm */, + 20EABC08F7EFE741D7C3B622 /* juce_gui_basics.mm */, + DDF2C578191FFE07300541E8 /* juce_gui_extra.mm */, + 364D1A9B113320407A7E57B9 /* JuceHeader.h */, + ); + name = "Juce Library Code"; + sourceTree = "<group>"; + }; + 2CEAE8B236FEF5E06317EF3B /* components */ = { + isa = PBXGroup; + children = ( + E791EF4AE50CCD190A8BC5D0 /* juce_CachedComponentImage.h */, + 46F449C23355573E967D351F /* juce_Component.cpp */, + E24325B47AEC8B77DDC456F6 /* juce_Component.h */, + A6D3D648059361F5836DE280 /* juce_ComponentListener.cpp */, + D57E1008C51B8D4B9A70535F /* juce_ComponentListener.h */, + 3706C20941A79E5A8DE08DE4 /* juce_Desktop.cpp */, + 149020249A77110311411E15 /* juce_Desktop.h */, + 987490B430B80B4FA2792176 /* juce_ModalComponentManager.cpp */, + F4A450ECDFAAFE68DA0FB6C6 /* juce_ModalComponentManager.h */, + ); + name = components; + sourceTree = "<group>"; + }; + 334607E7051C2D75E0AC85F6 /* native */ = { + isa = PBXGroup; + children = ( + 66448E472FD5BB3D34B1509B /* juce_android_Messaging.cpp */, + 9E6BAEF28A55F7F349A15DDC /* juce_ios_MessageManager.mm */, + 33E0A6C9F0AE53BEC8778775 /* juce_linux_Messaging.cpp */, + E44D93C93617D6314424CB46 /* juce_mac_MessageManager.mm */, + B420AC0E3CF485CCFFE5C625 /* juce_osx_MessageQueue.h */, + B5F94A37629F841C6C2B4CA7 /* juce_ScopedXLock.h */, + DEDF05B176E4165376AC6D4F /* juce_win32_HiddenMessageWindow.h */, + 530ADBF1045867FE90EB8F1F /* juce_win32_Messaging.cpp */, + ); + name = native; + sourceTree = "<group>"; + }; + 3644BF38DFC789105B7D80FB /* layout */ = { + isa = PBXGroup; + children = ( + 5603954CFF21E81C86CCA1CB /* juce_AnimatedPosition.h */, + 2C0D1EB0AE7676CE3458764C /* juce_AnimatedPositionBehaviours.h */, + A191412DDC58FCC5A67373FD /* juce_ComponentAnimator.cpp */, + 3A3CD53AEB64CF57B6CADB59 /* juce_ComponentAnimator.h */, + A9888AA5368432DCA5F64910 /* juce_ComponentBoundsConstrainer.cpp */, + 6FB8B11C25BB74994A407113 /* juce_ComponentBoundsConstrainer.h */, + 32184C99C6A9A997E6534029 /* juce_ComponentBuilder.cpp */, + BCB8D7D4B1AFA15D3ACEFCEA /* juce_ComponentBuilder.h */, + 7BB3AB4907661D6FED799B7C /* juce_ComponentMovementWatcher.cpp */, + 65E82ADF9AEE696576F43E92 /* juce_ComponentMovementWatcher.h */, + 43ACFC660A375B2DEDFE2274 /* juce_ConcertinaPanel.cpp */, + 10F328BCD86EF125C5DDA33D /* juce_ConcertinaPanel.h */, + 727511F6927A7B2602A6C689 /* juce_GroupComponent.cpp */, + EA8D7BB28F79E1545758D636 /* juce_GroupComponent.h */, + D3C9856B677A34F8C60469F2 /* juce_MultiDocumentPanel.cpp */, + 5C454FECFF7234355CEA17D4 /* juce_MultiDocumentPanel.h */, + 8B5073191880BFFDF8B3BE6E /* juce_ResizableBorderComponent.cpp */, + BE0926F2599AC33A59DF23E1 /* juce_ResizableBorderComponent.h */, + 0ACD709DE0EBA4A3D73325FD /* juce_ResizableCornerComponent.cpp */, + 75087C822B7871FA849D2909 /* juce_ResizableCornerComponent.h */, + 7E47A29DD9817618F48068FF /* juce_ResizableEdgeComponent.cpp */, + 4C8154CEB5C33EFB9E5CB8DC /* juce_ResizableEdgeComponent.h */, + 0A6652042F8E043F43239E75 /* juce_ScrollBar.cpp */, + 16E61715753895412F61F93B /* juce_ScrollBar.h */, + 66B4C39694799AC85ADDBECC /* juce_StretchableLayoutManager.cpp */, + 9091730D608EEEA35977BC1D /* juce_StretchableLayoutManager.h */, + 987C3D5A7CC55FB19AD24294 /* juce_StretchableLayoutResizerBar.cpp */, + E0E99D3CFACF9CB9B503EDD8 /* juce_StretchableLayoutResizerBar.h */, + 5C96DDE9CD90B82EA3CD6ED8 /* juce_StretchableObjectResizer.cpp */, + 9EDDEEBCF410FDF5B96FAD65 /* juce_StretchableObjectResizer.h */, + BAB603B7CA702368B2513074 /* juce_TabbedButtonBar.cpp */, + 0737A6A737019EFC6BC4CED0 /* juce_TabbedButtonBar.h */, + DDDCB9E999C4FF41EE6859DA /* juce_TabbedComponent.cpp */, + C9441D8978D4B1F14F270228 /* juce_TabbedComponent.h */, + 48F1E4DDD3B2B8E5CC410EE1 /* juce_Viewport.cpp */, + 5017AF048B9A8F840DA442A0 /* juce_Viewport.h */, + ); + name = layout; + sourceTree = "<group>"; + }; + 3CC531922CC2D398E283A845 /* Source */ = { + isa = PBXGroup; + children = ( + D3109994DA6AD871BE85C4E2 /* The Introjucer */, + 8A24D1B6925535A868974986 /* Juce Modules */, + 2C6746F66EF4444F53B3221F /* Juce Library Code */, + 8180B5894A78501084B8F133 /* Resources */, + 0FFEF043CA89142B18C79ABE /* Frameworks */, + 92ABB8016546F41128399E9D /* Products */, + ); + name = Source; + sourceTree = "<group>"; + }; + 43F993699B5DE3F1B3D3C905 /* native */ = { + isa = PBXGroup; + children = ( + 61096C79B4C094699E9ED296 /* juce_android_Files.cpp */, + F2A27DDB3055518A62BA7C25 /* juce_android_JNIHelpers.h */, + F9CFCE9A63B208A180F2AC3A /* juce_android_Misc.cpp */, + C43808AF23AC4F25CB26733D /* juce_android_Network.cpp */, + 40B9BA6D711F58DEB6E871BF /* juce_android_SystemStats.cpp */, + 94A8C75647A8777AC35F13FC /* juce_android_Threads.cpp */, + CF4C51480A8E95AC5F107FF3 /* juce_BasicNativeHeaders.h */, + 6C867E1E3FEC31970950C620 /* juce_linux_CommonFile.cpp */, + BC629A17FC45C9D48E2A383F /* juce_linux_Files.cpp */, + 7545BFF1C7C857A810B0483D /* juce_linux_Network.cpp */, + B53BBDA475207303A77FAD40 /* juce_linux_SystemStats.cpp */, + 86EC32D1F0A4D7678B298631 /* juce_linux_Threads.cpp */, + CAC9FBFB722FE3DA7CE3BE12 /* juce_mac_Files.mm */, + 63754DF4DA5063BF038C359B /* juce_mac_Network.mm */, + 29FD4A27890434E137DBC3B9 /* juce_mac_Strings.mm */, + 5659718DF6BD054B2B0A875C /* juce_mac_SystemStats.mm */, + 633CC0CEF05B3ADCEEE1325E /* juce_mac_Threads.mm */, + E69046467FD9DC88B664447B /* juce_osx_ObjCHelpers.h */, + BE6E4546B1A6458DEA0C7FD4 /* juce_posix_NamedPipe.cpp */, + 61538AD86AB82CE59EF6C68D /* juce_posix_SharedCode.h */, + DF12EEE63E6D19610B89CA22 /* juce_win32_ComSmartPtr.h */, + 63A4A00461C033BC464E4D34 /* juce_win32_Files.cpp */, + 99623EB9527119388EEDC8E6 /* juce_win32_Network.cpp */, + 40B4AB02D26ED520104B9363 /* juce_win32_Registry.cpp */, + F0793C460694102BA8D6D293 /* juce_win32_SystemStats.cpp */, + A3A4DC7DB79039626E4A311C /* juce_win32_Threads.cpp */, + ); + name = native; + sourceTree = "<group>"; + }; + 4C0BD8F18173E3D675D03872 /* native */ = { + isa = PBXGroup; + children = ( + D03B334EFDF780C2C0FE33B8 /* juce_android_WebBrowserComponent.cpp */, + BA9B833DA92A957DB959CECC /* juce_ios_UIViewComponent.mm */, + AC544E614702255B972E1E8F /* juce_linux_SystemTrayIcon.cpp */, + D439FCBFE0FCAA2C67548362 /* juce_linux_WebBrowserComponent.cpp */, + 4BE6A47DF33CCD5619DFE82A /* juce_mac_AppleRemote.mm */, + 742B8388A246A9E984457C7A /* juce_mac_CarbonViewWrapperComponent.h */, + 8B2E98629FB118FAAB8E2476 /* juce_mac_NSViewComponent.mm */, + 0B9187D02C50D0A3C4516DC4 /* juce_mac_SystemTrayIcon.cpp */, + 2FAD2E774B5F20B781D5AEB2 /* juce_mac_WebBrowserComponent.mm */, + 5377705718D6D60A6AA2848F /* juce_win32_ActiveXComponent.cpp */, + C5424781C756A8FF3D66670D /* juce_win32_SystemTrayIcon.cpp */, + 9EFFD9F226690A84BBA574C4 /* juce_win32_WebBrowserComponent.cpp */, + ); + name = native; + sourceTree = "<group>"; + }; + 4FDE8BC3A59AA207C6CE77F8 /* ui */ = { + isa = PBXGroup; + children = ( + EF30A74B566A461A171BBF83 /* jucer_ComponentLayoutEditor.cpp */, + 263D9041F9B7D6A79DC38CD6 /* jucer_ComponentLayoutEditor.h */, + 3514E78B58A08F4C98F54C5A /* jucer_ComponentLayoutPanel.h */, + 4E191CDCE7565DB726CF7065 /* jucer_ComponentOverlayComponent.cpp */, + FBBDD70D47163D341B2F0A8D /* jucer_ComponentOverlayComponent.h */, + 98F42686D9DAC974F2514217 /* jucer_EditingPanelBase.cpp */, + 97E75A598791645465FEDCE1 /* jucer_EditingPanelBase.h */, + F6D3F208B6EE2A50CE1F0A18 /* jucer_JucerCommandIDs.h */, + 9C7FA58D223674C4C2AC6595 /* jucer_JucerDocumentEditor.cpp */, + 1125D1B2AE54AEF2EB3D51C0 /* jucer_JucerDocumentEditor.h */, + B15E33E7342F6EB4F95C9B1D /* jucer_PaintRoutineEditor.cpp */, + 4E60769DE992CA7FC1A4A486 /* jucer_PaintRoutineEditor.h */, + 16203C6791259C9718A04C3A /* jucer_PaintRoutinePanel.cpp */, + B06C7C053DB0660CDA8B5C2C /* jucer_PaintRoutinePanel.h */, + D92A6E9404A30EED32DCE4ED /* jucer_RelativePositionedRectangle.h */, + DF725A596B7BCD7520CC0A9F /* jucer_ResourceEditorPanel.cpp */, + 641B57E5FAE6BEFDB6462921 /* jucer_ResourceEditorPanel.h */, + 3A5B5DC92BE6D22CA15B9671 /* jucer_SnapGridPainter.h */, + 921752D9B004A15973DDF56F /* jucer_TestComponent.cpp */, + 9F41F3338BF00D0FC74C6390 /* jucer_TestComponent.h */, + ); + name = ui; + sourceTree = "<group>"; + }; + 58CA858FC033FD1F47ADA039 /* buttons */ = { + isa = PBXGroup; + children = ( + 240283D05A8E1886987E07F2 /* juce_ArrowButton.cpp */, + 3B059A5FF36DA71C1433CA60 /* juce_ArrowButton.h */, + 33644BFBB02CBC8EFB61C5D2 /* juce_Button.cpp */, + 63717F00538E1367E2B9D812 /* juce_Button.h */, + B83E41BC9767A790F2D04403 /* juce_DrawableButton.cpp */, + FEBB5ECA2C071F61AFD9A9D2 /* juce_DrawableButton.h */, + 92E4C9A69A2DAD900D128A02 /* juce_HyperlinkButton.cpp */, + A947623ED5EA00C6C3FD8EBE /* juce_HyperlinkButton.h */, + 6C25EB12F6DB9F5225E75667 /* juce_ImageButton.cpp */, + 5805FE3FCA0B3CD8E2851774 /* juce_ImageButton.h */, + 8681C46D7B7D05BEEB56E44E /* juce_ShapeButton.cpp */, + 700F6188EAA73DD57767694F /* juce_ShapeButton.h */, + B18059D88300EB8EF703A82B /* juce_TextButton.cpp */, + F4C1A19AAC280B0A58F73FAD /* juce_TextButton.h */, + 22C0EC04F7C30AAE16E632A7 /* juce_ToggleButton.cpp */, + 5801B222830CA1E1006968BA /* juce_ToggleButton.h */, + 2DE3560E8DB420766D385023 /* juce_ToolbarButton.cpp */, + B895CACE6FF447C83DC7ABF1 /* juce_ToolbarButton.h */, + ); + name = buttons; + sourceTree = "<group>"; + }; + 59884479C6FFC940D3992EE6 /* zip */ = { + isa = PBXGroup; + children = ( + 37C65F13D7CF8A718D1569AE /* juce_GZIPCompressorOutputStream.cpp */, + BE4A96EF54B366C811255141 /* juce_GZIPCompressorOutputStream.h */, + DF8FBA0269590E5FAC7FE213 /* juce_GZIPDecompressorInputStream.cpp */, + 88332B74FC9B9BE2F60D7EAB /* juce_GZIPDecompressorInputStream.h */, + E691B76C2F16D0E4A2BFABC2 /* juce_ZipFile.cpp */, + C695512ADA3E687DD1E55C0E /* juce_ZipFile.h */, + ); + name = zip; + sourceTree = "<group>"; + }; + 59C2687AA614A77DA150AFAB /* fonts */ = { + isa = PBXGroup; + children = ( + 7577BF4DE64CD865088A612E /* juce_AttributedString.cpp */, + 5F99D905AAF0C3F89CEAD965 /* juce_AttributedString.h */, + 51D9906830CE2006B74DBFCC /* juce_CustomTypeface.cpp */, + 5F4AF4400A9511B74E2425EE /* juce_CustomTypeface.h */, + 760A535A2680C8B3C44B59C5 /* juce_Font.cpp */, + D7F64C0E6B3CBA49A9F0341C /* juce_Font.h */, + 0FD7364EC64E25AE854E9A9D /* juce_GlyphArrangement.cpp */, + E5030E4FB09EEFDEC6E17F33 /* juce_GlyphArrangement.h */, + 801143A09B8A467EA47EBA27 /* juce_TextLayout.cpp */, + 95CBFF7351F89C117E30292A /* juce_TextLayout.h */, + 785740092163D40EE36BDA5B /* juce_Typeface.cpp */, + 419A5389244CCE7390877F1D /* juce_Typeface.h */, + ); + name = fonts; + sourceTree = "<group>"; + }; + 617C7A87C00C7357D6B4CA43 /* widgets */ = { + isa = PBXGroup; + children = ( + F74B09C0BC8F9038B7464F74 /* juce_ComboBox.cpp */, + 3EFC8EEA0D7714261BB90A41 /* juce_ComboBox.h */, + E6C8D5E6CB5649F8181F3663 /* juce_ImageComponent.cpp */, + DD95F4D24DEADB6030D5959E /* juce_ImageComponent.h */, + A9208187F15083F4FC55E0E8 /* juce_Label.cpp */, + DF45CF7F287FC822F45A5AA9 /* juce_Label.h */, + A3632F10CD01DB5263F628F0 /* juce_ListBox.cpp */, + EC1A0BD441203369A933D00C /* juce_ListBox.h */, + CF4BDE076A0E86E887C842BD /* juce_ProgressBar.cpp */, + 5EAA527023FD40745056F13B /* juce_ProgressBar.h */, + CE4A609A9FB2403D506B3068 /* juce_Slider.cpp */, + EAA4FD2E9CB12F1B946D2A62 /* juce_Slider.h */, + 55A56A4C2EC5DECEC307EC37 /* juce_TableHeaderComponent.cpp */, + 6E2B6FE06BE3735AA969B526 /* juce_TableHeaderComponent.h */, + 2D035221BF4D4B8C56FA3653 /* juce_TableListBox.cpp */, + B292B170AC30407623358E6F /* juce_TableListBox.h */, + A42E6A76BCFC6504676EBE8B /* juce_TextEditor.cpp */, + 85B2B84227B39C31FE9D790A /* juce_TextEditor.h */, + C85BCA043B9CB378FA6876B5 /* juce_Toolbar.cpp */, + 659B75A15D70B8FE57D1A1BE /* juce_Toolbar.h */, + FBD5E2A21019AF2EAD45BAD1 /* juce_ToolbarItemComponent.cpp */, + 9559DA09C937A41B88227D80 /* juce_ToolbarItemComponent.h */, + DADCCD453FA0BCBE7E423FAA /* juce_ToolbarItemFactory.h */, + 61F8ED9B6C0D09E2665531D3 /* juce_ToolbarItemPalette.cpp */, + 61151BEBE0F7E79DFA313076 /* juce_ToolbarItemPalette.h */, + 700138BDDB27754A06B56C87 /* juce_TreeView.cpp */, + B388675858A6323C1A1F7BFE /* juce_TreeView.h */, + ); + name = widgets; + sourceTree = "<group>"; + }; + 69E5820210E99179A52F1A77 /* drawables */ = { + isa = PBXGroup; + children = ( + 7BD8AE7287AB53880575A757 /* juce_Drawable.cpp */, + B290C6821BDC0912A94A1127 /* juce_Drawable.h */, + 909FCA929A162A919ABF6575 /* juce_DrawableComposite.cpp */, + E626D36E7158BA472EF89AD5 /* juce_DrawableComposite.h */, + 7E8730C293CF253B56930440 /* juce_DrawableImage.cpp */, + 84493A7AD6B0398B732461FB /* juce_DrawableImage.h */, + 630428D04F157F7162C05D59 /* juce_DrawablePath.cpp */, + 5FDE1D586B6984E67E3B1E19 /* juce_DrawablePath.h */, + 7DBCC7A6E5B251DA94AB0EE0 /* juce_DrawableRectangle.cpp */, + 641338764B8C715715DA7351 /* juce_DrawableRectangle.h */, + F004FD803D0EDAAB81667345 /* juce_DrawableShape.cpp */, + F9B4B5E9595EC2CD47736BAC /* juce_DrawableShape.h */, + 55B79C48660935077095DBFD /* juce_DrawableText.cpp */, + 5EE461C6611D3669B36F639D /* juce_DrawableText.h */, + 1FEE53F170737A23D412C425 /* juce_SVGParser.cpp */, + ); + name = drawables; + sourceTree = "<group>"; + }; + 6A6672A570C2C2418F926C82 /* juce_data_structures */ = { + isa = PBXGroup; + children = ( + 2A8293EA2395BFFCA229F799 /* values */, + 8E7A1020B8096653D203C38A /* undomanager */, + BD9E9E80DDC81539B00DCAB6 /* app_properties */, + 2CB1AA089385D7399AC615CE /* juce_module_info */, + 4760F25A96CAB18E75573C0B /* juce_data_structures.h */, + ); + name = juce_data_structures; + sourceTree = "<group>"; + }; + 6CA37BA48005B8EF0478B69E /* native */ = { + isa = PBXGroup; + children = ( + C18696515B6681B033F06D44 /* juce_android_Fonts.cpp */, + 76E2E826701240CDD4DEDA57 /* juce_android_GraphicsContext.cpp */, + E6697A0594C3625F9025FD3B /* juce_freetype_Fonts.cpp */, + 9B4AAEAD95B93FA8F2348E27 /* juce_linux_Fonts.cpp */, + 7BD4BCAA20B1ACED28EBBFD9 /* juce_mac_CoreGraphicsContext.h */, + EEF2B5CF27493A0E5432F495 /* juce_mac_CoreGraphicsContext.mm */, + 6350DFE5844B6CB31FB54A80 /* juce_mac_CoreGraphicsHelpers.h */, + 5D33FED578ADEEBAA8A4CFED /* juce_mac_Fonts.mm */, + 479E55D2A68FC2E14FF2E39A /* juce_RenderingHelpers.h */, + 09BB016660D64FDCD2A9866F /* juce_win32_Direct2DGraphicsContext.cpp */, + 95220AF02A9BEC790D84413E /* juce_win32_DirectWriteTypeface.cpp */, + 21822729E1EF7CC3D3528BFE /* juce_win32_DirectWriteTypeLayout.cpp */, + DA52CB613FB5AEB736624AB1 /* juce_win32_Fonts.cpp */, + ); + name = native; + sourceTree = "<group>"; + }; + 76F28FCB72DD5943D08F3342 /* misc */ = { + isa = PBXGroup; + children = ( + 2D6B797AC8B1B5E7C8E7D1E9 /* juce_BubbleComponent.cpp */, + CD9FC835C7A1DE440792F5B4 /* juce_BubbleComponent.h */, + 92BE7C40FE77D34FFF39D9BB /* juce_DropShadower.cpp */, + 4F8DCA25AFAD089510C8B48B /* juce_DropShadower.h */, + ); + name = misc; + sourceTree = "<group>"; + }; + 815C2090B70E6EECD913C0CA /* threads */ = { + isa = PBXGroup; + children = ( + 96BD2AC4C892C245E04B8A93 /* juce_ChildProcess.cpp */, + 5909E278D645E1F91C0AE2BB /* juce_ChildProcess.h */, + 84E06858791DF81E37B9A484 /* juce_CriticalSection.h */, + 1320D638B7BACCADEDA5ABD2 /* juce_DynamicLibrary.h */, + 3D577E9A14625124F5933387 /* juce_HighResolutionTimer.cpp */, + 92B6276B30F89F742E78A265 /* juce_HighResolutionTimer.h */, + 82976E18712BAE638A132F02 /* juce_InterProcessLock.h */, + 689996FF463D52FEF125AFF3 /* juce_Process.h */, + 5C6893F610657B9383F9333F /* juce_ReadWriteLock.cpp */, + 800206C482A2C7E62682C324 /* juce_ReadWriteLock.h */, + D8FA66DEA9117C2D0239B11B /* juce_ScopedLock.h */, + 34D4199F01C019ED54544C1E /* juce_ScopedReadLock.h */, + 7861B7ACECC987D58C7D0309 /* juce_ScopedWriteLock.h */, + C07856C24F305E7D50660F67 /* juce_SpinLock.h */, + F561D4822324D6D1650221FA /* juce_Thread.cpp */, + C7B2FE883FA1401854BEDE8F /* juce_Thread.h */, + C8DED829D0662D34D09A0C5B /* juce_ThreadLocalValue.h */, + 6ED2213CA4E7E418E74A91E4 /* juce_ThreadPool.cpp */, + 1C94985541E125A49C70C07C /* juce_ThreadPool.h */, + 54652695DEEBAB24E462DDD9 /* juce_TimeSliceThread.cpp */, + 5BDAE5FD683C0005A609495E /* juce_TimeSliceThread.h */, + 95604CB3BD2C7745FD8FDB74 /* juce_WaitableEvent.h */, + ); + name = threads; + sourceTree = "<group>"; + }; + 8180B5894A78501084B8F133 /* Resources */ = { + isa = PBXGroup; + children = ( + 4CA1C3E6585D7694AA9C309F /* Info.plist */, + 6678E9B3EEACAD47F438B264 /* RecentFilesMenuTemplate.nib */, + 951128CA33CCDEF570436B1C /* Icon.icns */, + B483D960309FAFC193F9CDA2 /* juce_icon.png */, + ); + name = Resources; + sourceTree = "<group>"; + }; + 825956EA572E23B506C8236F /* ComponentEditor */ = { + isa = PBXGroup; + children = ( + DA3DF56D3295CCD84DA4E882 /* components */, + 2BA1ACF18E7E078C7171B162 /* documents */, + B3DB7CF28491BD6FFAAC716A /* paintelements */, + AECCE15B651C9EBBD07B925F /* properties */, + 4FDE8BC3A59AA207C6CE77F8 /* ui */, + 9EF583A6201DBC813C2F63C4 /* jucer_BinaryResources.cpp */, + 6AC88EFC247C225CC5C11A43 /* jucer_BinaryResources.h */, + 133F1E428260C5ADDF496DF9 /* jucer_ComponentLayout.cpp */, + 3F9D4C7F6E5779D4E4AE655D /* jucer_ComponentLayout.h */, + 78D0DBC4798FF040FDB90F6D /* jucer_GeneratedCode.cpp */, + DA345D5B9DABD049F90DC96F /* jucer_GeneratedCode.h */, + 269A454F1FF081DA67FFD578 /* jucer_JucerDocument.cpp */, + 8F30A53C7FE4BC65171FB3E2 /* jucer_JucerDocument.h */, + 9D7689451732AF8333402B3A /* jucer_ObjectTypes.cpp */, + 50498FF6EA3901CBD58223B3 /* jucer_ObjectTypes.h */, + C187718F7B9EBA88584B43F3 /* jucer_PaintRoutine.cpp */, + 66B49F08C5EC3E4974825FF8 /* jucer_PaintRoutine.h */, + 5432B7B9B2CF2EAEC8B66D5C /* jucer_UtilityFunctions.h */, + ); + name = ComponentEditor; + sourceTree = "<group>"; + }; + 83DEE68BC6A9B685C3E75FEA /* timers */ = { + isa = PBXGroup; + children = ( + 4CC9356FA92F5C94E4DC65D9 /* juce_MultiTimer.cpp */, + 5797A65A441D030729C6E886 /* juce_MultiTimer.h */, + ABD9D1389B5591B2303990F9 /* juce_Timer.cpp */, + 4EBA5CEE07FB8B2DAA9A0315 /* juce_Timer.h */, + ); + name = timers; + sourceTree = "<group>"; + }; + 88DFD62CB6545EE8CA5C485B /* BinaryData */ = { + isa = PBXGroup; + children = ( + 5F4F4EAB042F2730F94A1CEA /* AudioPluginXCodeScript.txt */, + 301592EBAC0FFF6F5B268E99 /* background_tile.png */, + 41105E536155E394E54BDD35 /* colourscheme_dark.xml */, + 5F6584B675E30761521A9F42 /* colourscheme_light.xml */, + B483D960309FAFC193F9CDA2 /* juce_icon.png */, + 0075C5208947159AF2802F3B /* jucer_AudioPluginEditorTemplate.cpp */, + AFF72BA2B130F3F9AC029080 /* jucer_AudioPluginEditorTemplate.h */, + 65F4749184C84C2FDBB4C305 /* jucer_AudioPluginFilterTemplate.cpp */, + 03D3053EDE47FED1919C6674 /* jucer_AudioPluginFilterTemplate.h */, + DC922C6A65D260C18E888E49 /* jucer_ComponentTemplate.cpp */, + 963E0740B7B4D59EF2D16740 /* jucer_ComponentTemplate.h */, + 9683B04CA3BD7F73E8236FE2 /* jucer_ContentCompTemplate.cpp */, + 35E6EE1E98DD7050DDFECD9B /* jucer_ContentCompTemplate.h */, + 24C34D0578AE6C7A3EA18781 /* jucer_InlineComponentTemplate.h */, + 18D9EBA1DAE45EEF81FD5C8F /* jucer_MainConsoleAppTemplate.cpp */, + AE1BC6DCCFC1A18E2ACE23F1 /* jucer_MainTemplate_NoWindow.cpp */, + 86E8A40E5A83781A8478454D /* jucer_MainTemplate_Window.cpp */, + 61BE37E2B26C25056D9E8FE2 /* jucer_NewComponentTemplate.cpp */, + E2374E15D65425C4101237E2 /* jucer_NewComponentTemplate.h */, + CF8011B3C67B609032974DA5 /* jucer_NewCppFileTemplate.cpp */, + 53151B683E11F420203E61C2 /* jucer_NewCppFileTemplate.h */, + F7CAB5BC15EE351949D3F2C3 /* jucer_NewInlineComponentTemplate.h */, + 58139D8D454051C59E77609B /* RecentFilesMenuTemplate.nib */, + ); + name = BinaryData; + sourceTree = "<group>"; + }; + 891F84627A03FA733F37A199 /* Project */ = { + isa = PBXGroup; + children = ( + 93D03B2BC76998A3BDA747E8 /* jucer_AudioPluginModule.h */, + 8F8BF1A7130D858E0A239F9E /* jucer_ConfigTree_Base.h */, + 7B4E33B1E04139F359FB484B /* jucer_ConfigTree_Exporter.h */, + 9F75811FE7B5F8D1321BEC69 /* jucer_ConfigTree_Modules.h */, + C7B47372A9D5970E3D9A5400 /* jucer_GroupInformationComponent.h */, + F797071D88542C813CF7222A /* jucer_Module.cpp */, + 7211101FFA28400ADBB1D47A /* jucer_Module.h */, + AFEBD8423B07599B1DE175A3 /* jucer_ModulesPanel.h */, + F1163B7856FDABA413A88D90 /* jucer_NewFileWizard.cpp */, + 5852830ECC222BA36A30EC20 /* jucer_NewFileWizard.h */, + 69A5D13490A62DAE9A7D5A22 /* jucer_NewProjectWizard.cpp */, + F7A91434FEFBE9AC130CD814 /* jucer_NewProjectWizard.h */, + BAC43B20E14A340CCF14119C /* jucer_Project.cpp */, + BF3CEF080FA013E2778DCE90 /* jucer_Project.h */, + 86E468DE6556BB2AD76A3D80 /* jucer_ProjectContentComponent.cpp */, + E60E28D1B7491047DEA236AE /* jucer_ProjectContentComponent.h */, + 375AFDF06A908D89DEC5205F /* jucer_ProjectTree_Base.h */, + 47B49049B85EED74D29C9906 /* jucer_ProjectTree_File.h */, + 4F6365A0D2D51337151D85C3 /* jucer_ProjectTree_Group.h */, + E70CA21960A64CCB835725FF /* jucer_ProjectType.cpp */, + B8385E9A644BD3CD94876448 /* jucer_ProjectType.h */, + ); + name = Project; + sourceTree = "<group>"; + }; + 8A24D1B6925535A868974986 /* Juce Modules */ = { + isa = PBXGroup; + children = ( + 8BA5B0B5CBCE8D29F02D341A /* juce_core */, + E58F94F6CDB786C1ED488C9C /* juce_cryptography */, + 6A6672A570C2C2418F926C82 /* juce_data_structures */, + DE7F542DC0967F8EDCC4DCD0 /* juce_events */, + E9819C83D0B797FC71811B1B /* juce_graphics */, + 2A27F41171A44038C2A1CB56 /* juce_gui_basics */, + DFC8A876133A671741A5FCA2 /* juce_gui_extra */, + ); + name = "Juce Modules"; + sourceTree = "<group>"; + }; + 8BA5B0B5CBCE8D29F02D341A /* juce_core */ = { + isa = PBXGroup; + children = ( + ED7BB3F297250D7B43B2A536 /* text */, + F824830BD560E7906A8CD82B /* maths */, + 01C121A5814A16A7CB907FB9 /* memory */, + 101599FA5E724FC0C78144B3 /* containers */, + 815C2090B70E6EECD913C0CA /* threads */, + D385600698057B290BC2AEF7 /* time */, + 0B795464B0BFEE19C4F89F0F /* files */, + 20F9DB293E2CC9F98F43758C /* network */, + 06D5C2B5F1F4E37AF1C7A425 /* streams */, + CBF105D9162BB597EBC1B981 /* logging */, + ABD92B739720D08778AF88F8 /* system */, + F6C04F077B187FD605483DEB /* xml */, + E659B9C71FCEAA788CFEF8F0 /* javascript */, + 59884479C6FFC940D3992EE6 /* zip */, + 248A3D6E995D23F2AFDBF78B /* unit_tests */, + A09D1A158BCD0A396549C1F3 /* misc */, + 43F993699B5DE3F1B3D3C905 /* native */, + 00E86D533C0149A56F21D804 /* juce_module_info */, + 90B9A4673FDC35841E5D4562 /* juce_core.h */, + ); + name = juce_core; + sourceTree = "<group>"; + }; + 8E7A1020B8096653D203C38A /* undomanager */ = { + isa = PBXGroup; + children = ( + 199E3F67A1E48F7D95AC6E1E /* juce_UndoableAction.h */, + 1602D140D6F478765ACEA660 /* juce_UndoManager.cpp */, + C9CA4A5BF4D2A1109432BA49 /* juce_UndoManager.h */, + ); + name = undomanager; + sourceTree = "<group>"; + }; + 8EAF68A83656BC02B4B7C9C9 /* native */ = { + isa = PBXGroup; + children = ( + 529B9F1BADEE58EA9F4F8C09 /* juce_android_FileChooser.cpp */, + 822A59FE23E0E962993EFF1C /* juce_android_Windowing.cpp */, + F361B20780764ADD61B1B692 /* juce_ios_UIViewComponentPeer.mm */, + 6F4A2CF770F9E789E695825E /* juce_ios_Windowing.mm */, + 27E909E8C27DFBF0F184DCBD /* juce_linux_Clipboard.cpp */, + D0B6A9AF3EC42C025B11894D /* juce_linux_FileChooser.cpp */, + F61D66D41025A0E4F9CDBE7A /* juce_linux_Windowing.cpp */, + 5293C026D920F2E0E710447C /* juce_mac_FileChooser.mm */, + 08AF500230E8F8644B3682F5 /* juce_mac_MainMenu.mm */, + 8E673D43C2CD68894A10B99D /* juce_mac_MouseCursor.mm */, + A36D9A1D559944BB4EAF2F5E /* juce_mac_NSViewComponentPeer.mm */, + 921FBD47F9842396F1CB22ED /* juce_mac_Windowing.mm */, + 101572E83E487C91969D671C /* juce_MultiTouchMapper.h */, + C89684A359852FD2B16D705A /* juce_win32_DragAndDrop.cpp */, + 0F4EFF11F984ED5E2A2045A1 /* juce_win32_FileChooser.cpp */, + 3832E22BBFD9A9A1E9EEED6F /* juce_win32_Windowing.cpp */, + ); + name = native; + sourceTree = "<group>"; + }; + 8EB51FAF42AAEC7AC357396B /* effects */ = { + isa = PBXGroup; + children = ( + 519269C6218CA35F731ECA61 /* juce_DropShadowEffect.cpp */, + 46392AD7FE5D6BFED1BE827C /* juce_DropShadowEffect.h */, + D6520F83A0AD0B5BC024CB9F /* juce_GlowEffect.cpp */, + C4B158D37FF6B3125BEED598 /* juce_GlowEffect.h */, + 136A3229F6535E2FBB9993E2 /* juce_ImageEffectFilter.h */, + ); + name = effects; + sourceTree = "<group>"; + }; + 92ABB8016546F41128399E9D /* Products */ = { + isa = PBXGroup; + children = ( + 25F52316D256B4534BED16D1 /* Introjucer.app */, + ); + name = Products; + sourceTree = "<group>"; + }; + 952AFE51A503A04FFF4B0EF7 /* commands */ = { + isa = PBXGroup; + children = ( + 993AD03D61870459F867B2F5 /* juce_ApplicationCommandID.h */, + 97C816B1B6B7FBC38DF10303 /* juce_ApplicationCommandInfo.cpp */, + 95A64B8A811BB2D78C6F13B9 /* juce_ApplicationCommandInfo.h */, + 60285932750263E48A18908C /* juce_ApplicationCommandManager.cpp */, + 56ECDE6643205406C32D1CE8 /* juce_ApplicationCommandManager.h */, + DB5C7AA110B217372A52159A /* juce_ApplicationCommandTarget.cpp */, + 4F052A9DD4EFD3C761C7EBA2 /* juce_ApplicationCommandTarget.h */, + E76DA0073983CF90CCE4096B /* juce_KeyPressMappingSet.cpp */, + 914C0B02F52FA4C06116EDB1 /* juce_KeyPressMappingSet.h */, + ); + name = commands; + sourceTree = "<group>"; + }; + 9DEFBE65118D0527555955A2 /* code_editor */ = { + isa = PBXGroup; + children = ( + C7D4CFEA33205B2D33955B9E /* juce_CodeDocument.cpp */, + 69BB2D7A2EDAB1C87EA1F688 /* juce_CodeDocument.h */, + 981A11A17B5DD50BC2A69F33 /* juce_CodeEditorComponent.cpp */, + EB1F11E213640441C36CDD21 /* juce_CodeEditorComponent.h */, + A9BAF0420FC4DC07011EA244 /* juce_CodeTokeniser.h */, + 67FF4A3F3E1CD9583EABE1F6 /* juce_CPlusPlusCodeTokeniser.cpp */, + 8C48F6C90CB6D2CBB19511B3 /* juce_CPlusPlusCodeTokeniser.h */, + 0E24C59E408559F9DF1DC31A /* juce_CPlusPlusCodeTokeniserFunctions.h */, + 421BFE95D4EE1C5D12BBB848 /* juce_LuaCodeTokeniser.cpp */, + D409BCF0D1C42B2761F89C6F /* juce_LuaCodeTokeniser.h */, + 3F9D0CEF873510CCD254A9C5 /* juce_XMLCodeTokeniser.cpp */, + 28E80FBE60ED3FE73CCAB834 /* juce_XMLCodeTokeniser.h */, + ); + name = code_editor; + sourceTree = "<group>"; + }; + A09D1A158BCD0A396549C1F3 /* misc */ = { + isa = PBXGroup; + children = ( + 084171D9475B3491A4EFAB5F /* juce_Result.cpp */, + 81A3DED7F13085DF8C8190AB /* juce_Result.h */, + A7DD1B727D226AE589E87E4A /* juce_Uuid.cpp */, + 333B1D00E46AF5A642C1DCDE /* juce_Uuid.h */, + 34705FA6042CBE98AAF77B61 /* juce_WindowsRegistry.h */, + ); + name = misc; + sourceTree = "<group>"; + }; + A186EF5D092D513F30A4FE23 /* keyboard */ = { + isa = PBXGroup; + children = ( + 7D6B19FB1AAA04D27716457B /* juce_CaretComponent.cpp */, + 6059BA2EC2D80F1A58D047A2 /* juce_CaretComponent.h */, + 91A9050F591F2E03EA96203A /* juce_KeyboardFocusTraverser.cpp */, + 104463B9110789FCDA7BD4FB /* juce_KeyboardFocusTraverser.h */, + CB5760497CA6F044DA18D3A1 /* juce_KeyListener.cpp */, + 09F93EBC7C2C877F3446A0C7 /* juce_KeyListener.h */, + 2FF61C42E37986022C189531 /* juce_KeyPress.cpp */, + CB37D7E91B0DA0927BA435F4 /* juce_KeyPress.h */, + 1B4284167C1A10170537305A /* juce_ModifierKeys.cpp */, + 0FB3551C6845EF0E9312F850 /* juce_ModifierKeys.h */, + AFFC3BBF8BBC82DD09B25EEE /* juce_SystemClipboard.h */, + 69F318BBA51FA30B777135B8 /* juce_TextEditorKeyMapper.h */, + 4BD96E9231831D77755CC803 /* juce_TextInputTarget.h */, + ); + name = keyboard; + sourceTree = "<group>"; + }; + A1B124604F7F471E01D8AA6E /* embedding */ = { + isa = PBXGroup; + children = ( + 189BC87D79A9670E686ACE00 /* juce_ActiveXControlComponent.h */, + F0A49FF985A114AC31ED8F87 /* juce_NSViewComponent.h */, + D902B5961F78F2A6DFBF4B7F /* juce_UIViewComponent.h */, + ); + name = embedding; + sourceTree = "<group>"; + }; + A3BF94AE00810C812E121816 /* positioning */ = { + isa = PBXGroup; + children = ( + 405388248E6EF4212019AC65 /* juce_MarkerList.cpp */, + 393E7A4E9BEC14AFC441E73F /* juce_MarkerList.h */, + 18AAAE2846B4512094CF9E64 /* juce_RelativeCoordinate.cpp */, + C7790615097597DFBFBFADC8 /* juce_RelativeCoordinate.h */, + 4108E23948D43A46FB88B23E /* juce_RelativeCoordinatePositioner.cpp */, + FF320FE35050A585E08FF993 /* juce_RelativeCoordinatePositioner.h */, + A2F1EA2989EF154ADBFDC4C3 /* juce_RelativeParallelogram.cpp */, + 8531F4060FE4BEBEC2E8EF9F /* juce_RelativeParallelogram.h */, + EE34B44EC8BF50DF2A1EADA6 /* juce_RelativePoint.cpp */, + 786095D2FAF63CBC05B170C6 /* juce_RelativePoint.h */, + CF736AF0DD24273D1F1FF37A /* juce_RelativePointPath.cpp */, + 9F58502C5ADE97059BD8BFE3 /* juce_RelativePointPath.h */, + 3AC808D92D13832338534F7F /* juce_RelativeRectangle.cpp */, + 4AD7BBD9D7EA422981A8C536 /* juce_RelativeRectangle.h */, + ); + name = positioning; + sourceTree = "<group>"; + }; + ABD92B739720D08778AF88F8 /* system */ = { + isa = PBXGroup; + children = ( + 10AC5E5349AFAF11362E4199 /* juce_PlatformDefs.h */, + E2E00F66C14EEAE78119C0C6 /* juce_StandardHeader.h */, + 5EA02C28A509FAC9D2561AC5 /* juce_SystemStats.cpp */, + 1DC3F7820AA6D950B2C6D628 /* juce_SystemStats.h */, + 318467BF5A24F08E30FB78DF /* juce_TargetPlatform.h */, + ); + name = system; + sourceTree = "<group>"; + }; + ACBAFA7D92DD82AD44ABE68A /* Application */ = { + isa = PBXGroup; + children = ( + 441CFEA771BAA50E187342E9 /* jucer_AppearanceSettings.cpp */, + 223C4209F18A221EB183A056 /* jucer_AppearanceSettings.h */, + EE690110171E1648FF2118B8 /* jucer_Application.h */, + 23A8DE16C0CDB8EED18B008B /* jucer_CommandIDs.h */, + 0400CB0E056A1D840304D2DE /* jucer_CommandLine.cpp */, + 2EEB1C074162F363C6599282 /* jucer_CommandLine.h */, + 6E6140969908E7619F858740 /* jucer_CommonHeaders.h */, + C7608A3967D9AB9481848F2B /* jucer_DocumentEditorComponent.cpp */, + E65A820D34BF39478B7C5925 /* jucer_DocumentEditorComponent.h */, + D526C38D581425949BA0E4AC /* jucer_FilePreviewComponent.h */, + F03E2BDD36E6F4F53AB767A8 /* jucer_Headers.h */, + 8C52A3DDA62A746AA7A68535 /* jucer_Main.cpp */, + 9069981E414A631B036CC9AC /* jucer_MainWindow.cpp */, + 2CD34A70B4032C0426F7AA10 /* jucer_MainWindow.h */, + 2247EE920DF0610CAF9F4513 /* jucer_OpenDocumentManager.cpp */, + 563091B0916AD9AAA36C7DC5 /* jucer_OpenDocumentManager.h */, + ); + name = Application; + sourceTree = "<group>"; + }; + AECCE15B651C9EBBD07B925F /* properties */ = { + isa = PBXGroup; + children = ( + B00F60201606F195058BB575 /* jucer_ColourPropertyComponent.h */, + 04C1267B2BD11A6ECCCA654C /* jucer_ComponentBooleanProperty.h */, + 6A337C69A928E3CE79C55457 /* jucer_ComponentChoiceProperty.h */, + AA8EED79F095953D2B5923B8 /* jucer_ComponentColourProperty.h */, + D4444EC6342A2A7BC4F7BC46 /* jucer_ComponentTextProperty.h */, + 295A9B126C98FE15F5A8B81E /* jucer_FilePropertyComponent.h */, + 8138A55052E9FC27284B74DD /* jucer_FontPropertyComponent.h */, + D87FC8F6834E9DC9C8E88B94 /* jucer_JustificationProperty.h */, + 576D62C0C9C1BA4B7A514721 /* jucer_PositionPropertyBase.h */, + ); + name = properties; + sourceTree = "<group>"; + }; + B2243BBE276C148522C5987E /* properties */ = { + isa = PBXGroup; + children = ( + 486683F365BE1E8CEE34D4D3 /* juce_BooleanPropertyComponent.cpp */, + 2249F79A9B7FFE48DACC14CF /* juce_BooleanPropertyComponent.h */, + 4CA96F577DD15FB5085518E9 /* juce_ButtonPropertyComponent.cpp */, + 29C79CFD0760D5BEF0C11D4D /* juce_ButtonPropertyComponent.h */, + BBBBDB341B49EA3277A24D8C /* juce_ChoicePropertyComponent.cpp */, + 09261261800229B6438A9A5B /* juce_ChoicePropertyComponent.h */, + F54E3F6CA70967D469913C48 /* juce_PropertyComponent.cpp */, + B941446353FA94BCE78D001D /* juce_PropertyComponent.h */, + 0E06FB23B05CE46487F509C8 /* juce_PropertyPanel.cpp */, + 2F9762C3866D161E38B4FD00 /* juce_PropertyPanel.h */, + D61B5AB0906CF9228E8360BF /* juce_SliderPropertyComponent.cpp */, + DD5E98AA79A9883B74F5D38A /* juce_SliderPropertyComponent.h */, + B54CB8DDB5000BDCBDECD8BA /* juce_TextPropertyComponent.cpp */, + 43B30439D7A63B0D2CF12AC9 /* juce_TextPropertyComponent.h */, + ); + name = properties; + sourceTree = "<group>"; + }; + B3DB7CF28491BD6FFAAC716A /* paintelements */ = { + isa = PBXGroup; + children = ( + 93B419190CCE92ACAB1ED25B /* jucer_ColouredElement.cpp */, + B1963F0D8C0046E54FD9E023 /* jucer_ColouredElement.h */, + 5091B14CC87C6238CF044258 /* jucer_ElementSiblingComponent.h */, + FA04E39EE7E83D445AF9E406 /* jucer_FillType.h */, + EB71BA07D6F667E69721E577 /* jucer_GradientPointComponent.h */, + 3F00C034B140193B3754969B /* jucer_ImageResourceProperty.h */, + 1C216FE9B7A5209C5CCF2517 /* jucer_PaintElement.cpp */, + 786BAF436828865F45314440 /* jucer_PaintElement.h */, + 4E8FE9B1B8C90FC28D56523B /* jucer_PaintElementEllipse.h */, + C094F3B6A65A79A6DF87C9C2 /* jucer_PaintElementGroup.h */, + FF11D6B512FDC5D887E06F66 /* jucer_PaintElementImage.h */, + 0169ACAA0FAE70CCEEE4F650 /* jucer_PaintElementPath.cpp */, + 1D3D6A19A60F0B03DE2F1C14 /* jucer_PaintElementPath.h */, + F18AE75F1831D13FF53A8CCC /* jucer_PaintElementRectangle.h */, + 41CA95403E264AA7457A61F4 /* jucer_PaintElementRoundedRectangle.h */, + 9C51394634F102DEBBE6C9EB /* jucer_PaintElementText.h */, + 27A2B025813B7E54E0862642 /* jucer_PaintElementUndoableAction.h */, + 7A3E96D22F1C9EB4C739834F /* jucer_PointComponent.h */, + D0D8B580D0689FFF4B9B823B /* jucer_StrokeType.h */, + ); + name = paintelements; + sourceTree = "<group>"; + }; + BD9E9E80DDC81539B00DCAB6 /* app_properties */ = { + isa = PBXGroup; + children = ( + 5CE5E5132CEFADC6D48ECB08 /* juce_ApplicationProperties.cpp */, + 12ABAFDD4C4BCA2B8313F1CE /* juce_ApplicationProperties.h */, + 79DF7512BC6437E5E29E3CFB /* juce_PropertiesFile.cpp */, + 8887ADA2A339C0BD9AFF83DA /* juce_PropertiesFile.h */, + ); + name = app_properties; + sourceTree = "<group>"; + }; + C2A68B1BEC638D0513BF25C1 /* lookandfeel */ = { + isa = PBXGroup; + children = ( + CD0146FF182F74D52D481EB7 /* juce_LookAndFeel.cpp */, + 12D78FB671BC817D433079B1 /* juce_LookAndFeel.h */, + 498E9D7F6E7F61A84E0D7792 /* juce_LookAndFeel_V1.cpp */, + 2412E1E63124369CE418894D /* juce_LookAndFeel_V1.h */, + 23D5A9D86894973926E3EFB8 /* juce_LookAndFeel_V2.cpp */, + 58FA9E2B67AED7330158A903 /* juce_LookAndFeel_V2.h */, + 0AE2B4F22C863455A366D251 /* juce_LookAndFeel_V3.cpp */, + 7BBA8AF8E7872672F190C1C7 /* juce_LookAndFeel_V3.h */, + ); + name = lookandfeel; + sourceTree = "<group>"; + }; + C3FB0CB81D460B4263689CAF /* colour */ = { + isa = PBXGroup; + children = ( + 2FD9D5944388186AAA32FEE2 /* juce_Colour.cpp */, + 95BAFFF3DDCB31F1E4F5F807 /* juce_Colour.h */, + E5C0F0324C408196C1E3AB24 /* juce_ColourGradient.cpp */, + 9B3076A1D57D614DB7B4657E /* juce_ColourGradient.h */, + 880D1F031B50F965A56B7240 /* juce_Colours.cpp */, + 00CBA904DE3B8686A6F569CD /* juce_Colours.h */, + 45AE1D139D938D43891501E1 /* juce_FillType.cpp */, + FA9E4210846A6425A2B54856 /* juce_FillType.h */, + 1908920B3166E7B7A7A095BC /* juce_PixelFormats.h */, + ); + name = colour; + sourceTree = "<group>"; + }; + CBF105D9162BB597EBC1B981 /* logging */ = { + isa = PBXGroup; + children = ( + 12875173A50B701B72E68F90 /* juce_FileLogger.cpp */, + 4C80A175986D336D4E1044A7 /* juce_FileLogger.h */, + 24319DEF365C8368FD3AA4EC /* juce_Logger.cpp */, + DF1E044516CA91C20B31FB6F /* juce_Logger.h */, + ); + name = logging; + sourceTree = "<group>"; + }; + CD1AFCF4DFA46BA5BACBB1CB /* mouse */ = { + isa = PBXGroup; + children = ( + 9CADF9A1F79D9D1ECC7147E9 /* juce_ComponentDragger.cpp */, + F6AE2E230EF9FF9F3387394A /* juce_ComponentDragger.h */, + 76EF37EBCCA75161A3561F9D /* juce_DragAndDropContainer.cpp */, + 48ADBB0A2A258CF72F04891A /* juce_DragAndDropContainer.h */, + 174CE62B43D97B83AF1D3338 /* juce_DragAndDropTarget.h */, + 6737B22BED56A0544E39FD15 /* juce_FileDragAndDropTarget.h */, + D41524385F8D560212C9D798 /* juce_LassoComponent.h */, + EEA69803BC87FC7DF32A9816 /* juce_MouseCursor.cpp */, + 68077882A46E2C4E398E4C99 /* juce_MouseCursor.h */, + 984CCFC22599870F2BC0611E /* juce_MouseEvent.cpp */, + B1DF858F499D12D442679683 /* juce_MouseEvent.h */, + 79366BF7CA160E7EFC7823C4 /* juce_MouseInactivityDetector.cpp */, + 599957E884512B8314720BBD /* juce_MouseInactivityDetector.h */, + 82C7BF9F5E863E647438A8AA /* juce_MouseInputSource.cpp */, + 4F129F3B2CD7B03E97C2F168 /* juce_MouseInputSource.h */, + 9EFCD465B3A75D9E2556DA0E /* juce_MouseListener.cpp */, + 61A6870CF7A0DE01A70799B0 /* juce_MouseListener.h */, + 88E1573706105D51541F4CA5 /* juce_SelectedItemSet.h */, + 17173DDA0532B81C71D95B05 /* juce_TextDragAndDropTarget.h */, + B9F917BA04B3A715B7E49128 /* juce_TooltipClient.h */, + ); + name = mouse; + sourceTree = "<group>"; + }; + D3109994DA6AD871BE85C4E2 /* The Introjucer */ = { + isa = PBXGroup; + children = ( + ACBAFA7D92DD82AD44ABE68A /* Application */, + 891F84627A03FA733F37A199 /* Project */, + E345840128627D533DF908AC /* Project Saving */, + D93DED1F5F1B0E49E10A6760 /* Utility */, + FC22321797D433148500EDDA /* Code Editor */, + 825956EA572E23B506C8236F /* ComponentEditor */, + 88DFD62CB6545EE8CA5C485B /* BinaryData */, + ); + name = "The Introjucer"; + sourceTree = "<group>"; + }; + D385600698057B290BC2AEF7 /* time */ = { + isa = PBXGroup; + children = ( + E85876BF1128CB4E29D7CB64 /* juce_PerformanceCounter.cpp */, + 756D2E74350285D4082EFD8E /* juce_PerformanceCounter.h */, + 3A9ACE7B66413BF99882ECC6 /* juce_RelativeTime.cpp */, + 4B138A2FD1EF34BB254F7C7A /* juce_RelativeTime.h */, + BDDD7A81586798621C6EF327 /* juce_Time.cpp */, + E39CCC282936B2F3062E9143 /* juce_Time.h */, + ); + name = time; + sourceTree = "<group>"; + }; + D93DED1F5F1B0E49E10A6760 /* Utility */ = { + isa = PBXGroup; + children = ( + 9B9CAD20E1243B4351B4C8D8 /* jucer_CodeHelpers.cpp */, + 914ADDB50ED7365F08BA91F9 /* jucer_CodeHelpers.h */, + 188D03A4247F4BC0539F5C49 /* jucer_Colours.h */, + 1729AEDC34001C31B8CC357C /* jucer_FileHelpers.cpp */, + 553725A0E3A391651ED1731E /* jucer_FileHelpers.h */, + CF21D9DB3AEC0A4DCAB36A99 /* jucer_Icons.cpp */, + 515FF6E74826E3E3F7273621 /* jucer_Icons.h */, + 47DD50A5A9091F9900E0EAD9 /* jucer_JucerTreeViewBase.cpp */, + 820291543BF93243B718F0EE /* jucer_JucerTreeViewBase.h */, + 0F249640243FBD5717F6ADD9 /* jucer_MiscUtilities.cpp */, + 4A41FD3066D0979DB48691E5 /* jucer_MiscUtilities.h */, + 1AF7EFBE4961C7B6C834BF54 /* jucer_PresetIDs.h */, + 1F421199C40092BFEE0658C2 /* jucer_RelativePath.h */, + 631983AA62673015F8D7453B /* jucer_StoredSettings.cpp */, + 9BC8AE609A07657CEF587548 /* jucer_StoredSettings.h */, + D3E139185095C486DD3D61F2 /* jucer_TranslationTool.h */, + 8090981F07A76E465DAAADF4 /* jucer_ValueSourceHelpers.h */, + ); + name = Utility; + sourceTree = "<group>"; + }; + DA3DF56D3295CCD84DA4E882 /* components */ = { + isa = PBXGroup; + children = ( + 0FF1C6905150EAAB1AE081A7 /* jucer_ButtonHandler.h */, + 008C8B2C2328CFBB9375397D /* jucer_ComboBoxHandler.h */, + B741170E45D74F30B7D5CDDF /* jucer_ComponentNameProperty.h */, + 65C498761CE166072A202AA0 /* jucer_ComponentTypeHandler.cpp */, + 5D9E7814B713670624F0028F /* jucer_ComponentTypeHandler.h */, + E0F9CA57E44F7F7E7E217E47 /* jucer_ComponentUndoableAction.h */, + 92F91DC29B64AD85B1F508BD /* jucer_GenericComponentHandler.h */, + D374DC78AAC02504576AA9B3 /* jucer_GroupComponentHandler.h */, + 1F9BBDFA52513AD34D906D2A /* jucer_HyperlinkButtonHandler.h */, + 4C2093BCD3528ACEDC7A2B33 /* jucer_ImageButtonHandler.h */, + EFA8CF715611D845AB284500 /* jucer_JucerComponentHandler.h */, + FF94FF5C4BEC605E56149EFC /* jucer_LabelHandler.h */, + BCCFDFB2C02C4AA436C0ECF8 /* jucer_SliderHandler.h */, + 400E4C67ABCDDB1D49EBB85E /* jucer_TabbedComponentHandler.h */, + E4BB22E27C5AA4B666F265BD /* jucer_TextButtonHandler.h */, + F59077841FC17DD07060A2A9 /* jucer_TextEditorHandler.h */, + 084C0070BC67BC893B967EF1 /* jucer_ToggleButtonHandler.h */, + DAF84A553D264705FA6EB6FF /* jucer_TreeViewHandler.h */, + A0951828C3BF47FA7E1E52F8 /* jucer_ViewportHandler.h */, + ); + name = components; + sourceTree = "<group>"; + }; + DCBE58B4AFE058653EBBBAAE /* broadcasters */ = { + isa = PBXGroup; + children = ( + BA3CF913C966148DF5059C9F /* juce_ActionBroadcaster.cpp */, + C8A160E05C7F8F5CF534AC03 /* juce_ActionBroadcaster.h */, + 2AB28295C237EC79481F5F9D /* juce_ActionListener.h */, + 5CD44EFDD7BA487CDF41760A /* juce_AsyncUpdater.cpp */, + D1A54DEEAD15A98719002174 /* juce_AsyncUpdater.h */, + 37AD2C828C069B17DB0C70EE /* juce_ChangeBroadcaster.cpp */, + BF09E9E179BA0B07203DC9FE /* juce_ChangeBroadcaster.h */, + FB6BACB4F1E834A6934E4DC2 /* juce_ChangeListener.h */, + 26B7487E9A0CB5C6CA5ACE58 /* juce_ListenerList.h */, + ); + name = broadcasters; + sourceTree = "<group>"; + }; + DD0FDFC530E403BD51C86315 /* application */ = { + isa = PBXGroup; + children = ( + A3AC7148A7357852CA7018AF /* juce_Application.cpp */, + 323BA212B37224C61A9C1740 /* juce_Application.h */, + 814A077ED7A54254415C309C /* juce_Initialisation.h */, + ); + name = application; + sourceTree = "<group>"; + }; + DD35BF639F13CB10E9ACF910 /* lookandfeel */ = { + isa = PBXGroup; + children = ( + BE876A77E905E3C0D9B66450 /* juce_OldSchoolLookAndFeel.cpp */, + 258C17078206C550B08DD0F4 /* juce_OldSchoolLookAndFeel.h */, + ); + name = lookandfeel; + sourceTree = "<group>"; + }; + DE7F542DC0967F8EDCC4DCD0 /* juce_events */ = { + isa = PBXGroup; + children = ( + 2287744248275B6237708450 /* messages */, + 83DEE68BC6A9B685C3E75FEA /* timers */, + DCBE58B4AFE058653EBBBAAE /* broadcasters */, + 084F5B9CA3F5822A7D9156AF /* interprocess */, + 334607E7051C2D75E0AC85F6 /* native */, + EA48567DDE6E64CF4DB9B23A /* juce_module_info */, + 2101B4CC3E5BDC7BD806678B /* juce_events.h */, + ); + name = juce_events; + sourceTree = "<group>"; + }; + DECB572AE46DB4A77186D494 /* images */ = { + isa = PBXGroup; + children = ( + CF7F48D267805732933DF82C /* juce_Image.cpp */, + 4C2394A14C140490F5F4E9BD /* juce_Image.h */, + A039067FA15840674DB4CA0B /* juce_ImageCache.cpp */, + 8F355E9A0D4E3B4DF00E7BA9 /* juce_ImageCache.h */, + 5A11499F36DB882429253BA5 /* juce_ImageConvolutionKernel.cpp */, + 3FB2A9225024422947E6E654 /* juce_ImageConvolutionKernel.h */, + A8C8924ADBF29D01FDFD62BE /* juce_ImageFileFormat.cpp */, + 43E13FBEEA6CF191A0D501E5 /* juce_ImageFileFormat.h */, + ); + name = images; + sourceTree = "<group>"; + }; + DFC8A876133A671741A5FCA2 /* juce_gui_extra */ = { + isa = PBXGroup; + children = ( + 9DEFBE65118D0527555955A2 /* code_editor */, + 1D09D8A2B803860D8927C366 /* documents */, + A1B124604F7F471E01D8AA6E /* embedding */, + DD35BF639F13CB10E9ACF910 /* lookandfeel */, + F50C1ADB9086D61160516CB7 /* misc */, + 4C0BD8F18173E3D675D03872 /* native */, + C82094E39B4C9B4DE35A7EB4 /* juce_module_info */, + D6070A7CF3873DFD1B1A53A5 /* juce_gui_extra.h */, + ); + name = juce_gui_extra; + sourceTree = "<group>"; + }; + E345840128627D533DF908AC /* Project Saving */ = { + isa = PBXGroup; + children = ( + 6E7353DFEA8825B515049ABB /* jucer_ProjectExport_Android.h */, + DBE0CDE1B017190ABBFF557C /* jucer_ProjectExport_CodeBlocks.h */, + 05076CDF1511A5F8A8E18F1D /* jucer_ProjectExport_Make.h */, + C8A229ACD244F402C57286CD /* jucer_ProjectExport_MSVC.h */, + 974B862C51DA9A16CBBB3A29 /* jucer_ProjectExport_XCode.h */, + F71AF6D2DF3E652F8B51EBAB /* jucer_ProjectExporter.cpp */, + 35CB48D497F35BF3F6998F5D /* jucer_ProjectExporter.h */, + 9C04F9680F82BF279D528688 /* jucer_ProjectSaver.h */, + D10D51A0A2D63F38B4D86A60 /* jucer_ResourceFile.cpp */, + C9616830BB2474066AC8C910 /* jucer_ResourceFile.h */, + ); + name = "Project Saving"; + sourceTree = "<group>"; + }; + E45B4DA7B49FC8D397F1EA56 /* encryption */ = { + isa = PBXGroup; + children = ( + 22B29C61E4EB0C2FC4E54378 /* juce_BlowFish.cpp */, + 1F86FB8B8336D44337AE7119 /* juce_BlowFish.h */, + A73C997FBB6C26B632CBAE15 /* juce_Primes.cpp */, + 0329C05B4EE23CBB5578BF02 /* juce_Primes.h */, + 20D0FBDE77A58A302859A206 /* juce_RSAKey.cpp */, + E32210D5760697609D084C93 /* juce_RSAKey.h */, + ); + name = encryption; + sourceTree = "<group>"; + }; + E58F94F6CDB786C1ED488C9C /* juce_cryptography */ = { + isa = PBXGroup; + children = ( + E45B4DA7B49FC8D397F1EA56 /* encryption */, + 1EB4CE7119697D9CCE604271 /* hashing */, + 2C9ED03E1C345D9A81BEB361 /* juce_module_info */, + B271F77C266131705FF6F92B /* juce_cryptography.h */, + ); + name = juce_cryptography; + sourceTree = "<group>"; + }; + E659B9C71FCEAA788CFEF8F0 /* javascript */ = { + isa = PBXGroup; + children = ( + 3970C8444A2A081455299CE8 /* juce_Javascript.cpp */, + 72BB08B37FC311C133A01F95 /* juce_Javascript.h */, + 70C4E93E7132BEEDDABFDA10 /* juce_JSON.cpp */, + B4E428E2D02619F18757BBF5 /* juce_JSON.h */, + ); + name = javascript; + sourceTree = "<group>"; + }; + E9819C83D0B797FC71811B1B /* juce_graphics */ = { + isa = PBXGroup; + children = ( + C3FB0CB81D460B4263689CAF /* colour */, + F417C2CB1A694D2C1A892F63 /* contexts */, + DECB572AE46DB4A77186D494 /* images */, + F3174EF36ADC4DC23BB304F2 /* image_formats */, + EEE23FCA48A7F9A0152A68EE /* geometry */, + 14995D34FE0826A52FA5262D /* placement */, + 59C2687AA614A77DA150AFAB /* fonts */, + 8EB51FAF42AAEC7AC357396B /* effects */, + 6CA37BA48005B8EF0478B69E /* native */, + F784E90F14BB554B2D97A4E7 /* juce_module_info */, + DD737A82676BCF9CD2F2B367 /* juce_graphics.h */, + ); + name = juce_graphics; + sourceTree = "<group>"; + }; + ED7BB3F297250D7B43B2A536 /* text */ = { + isa = PBXGroup; + children = ( + E224B3D37F624F7AE682E499 /* juce_CharacterFunctions.cpp */, + 0A8D062EF44529B793CC5098 /* juce_CharacterFunctions.h */, + 923B69234C15988DFF1E8423 /* juce_CharPointer_ASCII.h */, + 6245DA2AC30B91552C12AD1F /* juce_CharPointer_UTF8.h */, + D70400A648DD2EE1FB29ED0A /* juce_CharPointer_UTF16.h */, + 237496FB515C526B510BB0C3 /* juce_CharPointer_UTF32.h */, + BF24E0D37EAD41130FE149A3 /* juce_Identifier.cpp */, + 2D6B77C09B5AF1BBD821D224 /* juce_Identifier.h */, + D58E5FDB639B07A0B6350657 /* juce_LocalisedStrings.cpp */, + 056E44027E3F3AFAB32FBC44 /* juce_LocalisedStrings.h */, + F0D0CC4696419D4606EF5AE6 /* juce_NewLine.h */, + 553F3388AADBF8B529B78824 /* juce_String.cpp */, + BED52FDD3843979E898DA4CE /* juce_String.h */, + AF9453BB7F2479400D4A144B /* juce_StringArray.cpp */, + 2A7B44B9D6C81585064098C3 /* juce_StringArray.h */, + FA72B8D84B97CAC1AD24DA22 /* juce_StringPairArray.cpp */, + E4389603AF8A3143883BFCE8 /* juce_StringPairArray.h */, + BF1B82B8DD7429ECA96AD4C7 /* juce_StringPool.cpp */, + 529B0A44694A54ED99444A0F /* juce_StringPool.h */, + 4DEBB89A00FBD2C11515FD07 /* juce_StringRef.h */, + 8C07D2E980420174DF513BEF /* juce_TextDiff.cpp */, + AA4578A9110E724AB87DF869 /* juce_TextDiff.h */, + ); + name = text; + sourceTree = "<group>"; + }; + EEE23FCA48A7F9A0152A68EE /* geometry */ = { + isa = PBXGroup; + children = ( + FDF068E783DD784E3C2221C5 /* juce_AffineTransform.cpp */, + CFBF253B95F793D399C7C7BE /* juce_AffineTransform.h */, + 4DFDC4E1F50427FBAF0B8F81 /* juce_BorderSize.h */, + F73142334238E8D5B5D3E3B1 /* juce_EdgeTable.cpp */, + F4418E2C7AD718FE942DDF0A /* juce_EdgeTable.h */, + 647EBD8D1EAD21592951DD9B /* juce_Line.h */, + C6ED030DED8F5A53636C4EBB /* juce_Path.cpp */, + E0366FD0E45684229CBF9775 /* juce_Path.h */, + 865F57EEFDD6F194FCE3FD8F /* juce_PathIterator.cpp */, + 06BB2D547BF07A31E8D46977 /* juce_PathIterator.h */, + FBDAD6DDA8200BF53FCB5734 /* juce_PathStrokeType.cpp */, + 73425A7FACB8FEE3D7A7C567 /* juce_PathStrokeType.h */, + 87C711AFE0DEEC1FA8AD9465 /* juce_Point.h */, + 28C9E13B1A70FDC728770C6E /* juce_Rectangle.h */, + EA362B80219C97D85ED267A9 /* juce_RectangleList.cpp */, + 2D9E9803A9DF82BBA42294E9 /* juce_RectangleList.h */, + ); + name = geometry; + sourceTree = "<group>"; + }; + F3174EF36ADC4DC23BB304F2 /* image_formats */ = { + isa = PBXGroup; + children = ( + CE08955E457642C4D6DFBA30 /* juce_GIFLoader.cpp */, + A350F5C1C50024670090021B /* juce_JPEGLoader.cpp */, + 7038159E5F04B3C75B6A7655 /* juce_PNGLoader.cpp */, + ); + name = image_formats; + sourceTree = "<group>"; + }; + F417C2CB1A694D2C1A892F63 /* contexts */ = { + isa = PBXGroup; + children = ( + BAC2D13A5ED7622DD43BF752 /* juce_GraphicsContext.cpp */, + F98D95171F5605A4905E6516 /* juce_GraphicsContext.h */, + F3F4D8AEFD5290E8FDF0623E /* juce_LowLevelGraphicsContext.h */, + 28A5DF3CEA69B587C9CA7C4A /* juce_LowLevelGraphicsPostScriptRenderer.cpp */, + B43D35488A61101480983DA3 /* juce_LowLevelGraphicsPostScriptRenderer.h */, + 5823F1EE0F39AE16B560665A /* juce_LowLevelGraphicsSoftwareRenderer.cpp */, + B7D930DDBE81040985D1B48C /* juce_LowLevelGraphicsSoftwareRenderer.h */, + ); + name = contexts; + sourceTree = "<group>"; + }; + F50C1ADB9086D61160516CB7 /* misc */ = { + isa = PBXGroup; + children = ( + A51E4D49C37A60CC0BCE4246 /* juce_AppleRemote.h */, + 6F2DEA817E140C2659915138 /* juce_BubbleMessageComponent.cpp */, + E1D39D158E760B202DBEDA81 /* juce_BubbleMessageComponent.h */, + 02CA8C3BE552E240C77A3722 /* juce_ColourSelector.cpp */, + B9B67E7AC6527BDB9D4D42D0 /* juce_ColourSelector.h */, + EF24C96CD12FC8589756DEF1 /* juce_KeyMappingEditorComponent.cpp */, + 29CA2D82E54BA471A7F0D4A7 /* juce_KeyMappingEditorComponent.h */, + C68D8C25B8BD332BA1DFB32E /* juce_LiveConstantEditor.cpp */, + 5B8805BE8EFB29BFC7BD6D31 /* juce_LiveConstantEditor.h */, + 8D89602169EF2FB7E38F8C0D /* juce_PreferencesPanel.cpp */, + 3F8D9C9557E45D151F339F5E /* juce_PreferencesPanel.h */, + 84BC9171F02182D3AFD04F66 /* juce_RecentlyOpenedFilesList.cpp */, + 60138E309DBA8366F9AA83A5 /* juce_RecentlyOpenedFilesList.h */, + E794F8DCA1BD195F1D0BC64B /* juce_SplashScreen.cpp */, + 62112F8E435A750E1D2B28E0 /* juce_SplashScreen.h */, + 24B8D9E228BF396D1B8C705E /* juce_SystemTrayIconComponent.cpp */, + 2F365E601995A1B068BAC1C2 /* juce_SystemTrayIconComponent.h */, + 825F21A8A32CC0FD20B845A6 /* juce_WebBrowserComponent.h */, + ); + name = misc; + sourceTree = "<group>"; + }; + F6C04F077B187FD605483DEB /* xml */ = { + isa = PBXGroup; + children = ( + 114845541FC5BE3453B6BD4C /* juce_XmlDocument.cpp */, + A2B4202B1078374D5D0A2FA0 /* juce_XmlDocument.h */, + DABFA41975B51A33C19FD7C2 /* juce_XmlElement.cpp */, + 800B30FB2437B98A1423838A /* juce_XmlElement.h */, + ); + name = xml; + sourceTree = "<group>"; + }; + F824830BD560E7906A8CD82B /* maths */ = { + isa = PBXGroup; + children = ( + 13E76507D88192A1B9554073 /* juce_BigInteger.cpp */, + 16413B69F7D1E2862AFBE61F /* juce_BigInteger.h */, + 4653C504CADC3A365DCD59D0 /* juce_Expression.cpp */, + 1958777C37415EC581CD4B74 /* juce_Expression.h */, + 94E38DB823EBBA437181682F /* juce_MathsFunctions.h */, + 93C5BEADA1AB1CFF7B167D2F /* juce_Random.cpp */, + B2CEB1DE8F290AFCDE9585BB /* juce_Random.h */, + 140ABB31EF22CAE40D874BB0 /* juce_Range.h */, + ); + name = maths; + sourceTree = "<group>"; + }; + FC22321797D433148500EDDA /* Code Editor */ = { + isa = PBXGroup; + children = ( + 2E680E2C65684A4272AE079A /* jucer_SourceCodeEditor.cpp */, + 78CA0E0F336229E2E2F111B0 /* jucer_SourceCodeEditor.h */, + ); + name = "Code Editor"; + sourceTree = "<group>"; + }; + FDA3E07A3631D25DFEA73850 /* windows */ = { + isa = PBXGroup; + children = ( + 502A6F378DA7D0BED1380D86 /* juce_AlertWindow.cpp */, + 0CF3C0EC356169F25B0BAA9D /* juce_AlertWindow.h */, + BA61CF61BDB1194FF4A85DA7 /* juce_CallOutBox.cpp */, + 2A631496A56813D0EB2D0E5E /* juce_CallOutBox.h */, + 7AEAEEF9959046D9827CCB56 /* juce_ComponentPeer.cpp */, + 00F860FEF209ABF0E800FA09 /* juce_ComponentPeer.h */, + E1139B64E290711F9DE2DCDE /* juce_DialogWindow.cpp */, + 5D77828FECF00CF108E16599 /* juce_DialogWindow.h */, + 867952C0062DAA52FE4345B1 /* juce_DocumentWindow.cpp */, + 7D33879BE42FD18DA0E7833E /* juce_DocumentWindow.h */, + 6AC17B5D88D0ADBF77420048 /* juce_NativeMessageBox.h */, + C81BC495F7C4B665C8856AA9 /* juce_ResizableWindow.cpp */, + D7C052388BB7D6FAE4A15999 /* juce_ResizableWindow.h */, + 6E1D22B93CCB47AB339085E1 /* juce_ThreadWithProgressWindow.cpp */, + C017261AE701010986A93D34 /* juce_ThreadWithProgressWindow.h */, + 84EB1282EE3C5F3A1DF70A54 /* juce_TooltipWindow.cpp */, + 5BE9E1B6197D01AB97288253 /* juce_TooltipWindow.h */, + 5B45BF234C7184BE28C59741 /* juce_TopLevelWindow.cpp */, + 81704510C0CA45994B69AF05 /* juce_TopLevelWindow.h */, + ); + name = windows; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + FE688C03195D5E72123A75BF /* The Introjucer */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9D7584E9B3803102EC798231 /* Build configuration list for PBXNativeTarget "The Introjucer" */; + buildPhases = ( + C009859650B4628FDD068941 /* Resources */, + 84449D044096A03F2582904B /* Sources */, + B8D802107FEE6AD60F5309A3 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "The Introjucer"; + productInstallPath = "$(HOME)/Applications"; + productName = "The Introjucer"; + productReference = 25F52316D256B4534BED16D1 /* Introjucer.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 74EA481348A24104E6ACE009 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0510; + }; + buildConfigurationList = F90407F24422C589DA251604 /* Build configuration list for PBXProject "The Introjucer" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 3CC531922CC2D398E283A845 /* Source */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + FE688C03195D5E72123A75BF /* The Introjucer */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + C009859650B4628FDD068941 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2610F357881240ACBF612F48 /* RecentFilesMenuTemplate.nib in Resources */, + 1321E6C1C6170B6C898AD09D /* Icon.icns in Resources */, + 6FC19EBA7A51423C3D22F77B /* juce_icon.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 84449D044096A03F2582904B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 357A6AA6960EF95D92929BEE /* jucer_AppearanceSettings.cpp in Sources */, + 954A036F5DDB375DB23FFB3E /* jucer_CommandLine.cpp in Sources */, + 3EB3D569250C4BA4CA9AF578 /* jucer_DocumentEditorComponent.cpp in Sources */, + 95B44E6C74B1DED31DBE37EB /* jucer_Main.cpp in Sources */, + AA9D0B8E23F3D87A23DE9F8A /* jucer_MainWindow.cpp in Sources */, + 244BA1BDA5FAA465EA3F9C6D /* jucer_OpenDocumentManager.cpp in Sources */, + 3FCA61C401007B243E2E9035 /* jucer_Module.cpp in Sources */, + 5BC89E7905397ABECD25ACCD /* jucer_NewFileWizard.cpp in Sources */, + FBE57B26FE59319AA2E8B59D /* jucer_NewProjectWizard.cpp in Sources */, + 30B921C38DCEE787B294B746 /* jucer_Project.cpp in Sources */, + 676D2E1E750E61AA2FAA335E /* jucer_ProjectContentComponent.cpp in Sources */, + 8012E6487639A7368E4C4470 /* jucer_ProjectType.cpp in Sources */, + 1F37544891EC8DBB5E500C1C /* jucer_ProjectExporter.cpp in Sources */, + 110221CD5578153B528AD2BE /* jucer_ResourceFile.cpp in Sources */, + CD4F7B119CE718BCE78D61F4 /* jucer_CodeHelpers.cpp in Sources */, + 78CB463DD98A55313A543859 /* jucer_FileHelpers.cpp in Sources */, + 1499DF2E85B05AC1BF423773 /* jucer_Icons.cpp in Sources */, + 123810DAF8AF758928916ECE /* jucer_JucerTreeViewBase.cpp in Sources */, + C9F11BA62D6D092A300363F7 /* jucer_MiscUtilities.cpp in Sources */, + F6635694A01FFBF5EF0968DB /* jucer_StoredSettings.cpp in Sources */, + FCE6F604C00039A32649CB69 /* jucer_SourceCodeEditor.cpp in Sources */, + 9BF773500BA51A8B5C6C7348 /* jucer_ComponentTypeHandler.cpp in Sources */, + 57B1F32A372143B4D3B1C517 /* jucer_ButtonDocument.cpp in Sources */, + 3DC282564876B1FC88AAA9B3 /* jucer_ComponentDocument.cpp in Sources */, + C49E1D32A9DCE3D59BC48B1D /* jucer_ColouredElement.cpp in Sources */, + E1268E019B434F6B5E9317DC /* jucer_PaintElement.cpp in Sources */, + CE91112DADB97C573C3C674D /* jucer_PaintElementPath.cpp in Sources */, + A70F0274076C0D44ED71C980 /* jucer_ComponentLayoutEditor.cpp in Sources */, + BD1E0CBE74DDD2F303978E1F /* jucer_ComponentOverlayComponent.cpp in Sources */, + 8C1CC0E7A772D66635BA482F /* jucer_EditingPanelBase.cpp in Sources */, + A69BF71FA90E5A66B6EB2E0F /* jucer_JucerDocumentEditor.cpp in Sources */, + D68DE111AFBD82F0D44A3B69 /* jucer_PaintRoutineEditor.cpp in Sources */, + EC6A34EC9A9D454BF26AAD32 /* jucer_PaintRoutinePanel.cpp in Sources */, + 8AD28823205783E6F676F254 /* jucer_ResourceEditorPanel.cpp in Sources */, + 34716A3539FD288C09CBA38A /* jucer_TestComponent.cpp in Sources */, + 45A53AF13B0D663050632E8C /* jucer_BinaryResources.cpp in Sources */, + C2A85091A28C907A4E1E1687 /* jucer_ComponentLayout.cpp in Sources */, + 83431B7234A78ECFB3C15F63 /* jucer_GeneratedCode.cpp in Sources */, + 209FCCC2155A1FCB7E11E20D /* jucer_JucerDocument.cpp in Sources */, + C93569F47B4AC1A8E37992ED /* jucer_ObjectTypes.cpp in Sources */, + 1B988E139004D8E2850EB656 /* jucer_PaintRoutine.cpp in Sources */, + 3C5267E06A897B0DC0F7EA50 /* BinaryData.cpp in Sources */, + F70594FF1FFED9AC12F43709 /* juce_core.mm in Sources */, + 01D45DD829D8848733090B67 /* juce_cryptography.mm in Sources */, + 4028CA96EA50175DD6B8D976 /* juce_data_structures.mm in Sources */, + F743B7B2709E72250982F2FB /* juce_events.mm in Sources */, + 45576193A53DE94F5BF4C3D4 /* juce_graphics.mm in Sources */, + BF57EEE3415D6F8F03206846 /* juce_gui_basics.mm in Sources */, + 20102F921FAA2A92CED056C0 /* juce_gui_extra.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 70135D15D7E0D8410C42BBA3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_INLINES_ARE_PRIVATE_EXTERN = YES; + GCC_MODEL_TUNING = G5; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; + GCC_WARN_MISSING_PARENTHESES = YES; + GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; + GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRODUCT_NAME = Introjucer; + WARNING_CFLAGS = "-Wreorder"; + ZERO_LINK = NO; + }; + name = Release; + }; + B159CF4275B8A90122629FF4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; @@ -1949,19 +2598,38 @@ "NDEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1", "JUCE_APP_VERSION=3.1.0", - "JUCE_APP_VERSION_HEX=0x30100", ); + "JUCE_APP_VERSION_HEX=0x30100", + ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../JuceLibraryCode/modules", "$(inherited)"); + HEADER_SEARCH_PATHS = ( + ../../JuceLibraryCode, + ../../../JuceLibraryCode/modules, + "$(inherited)", + ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET = 10.5; MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; - OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter"; - SDKROOT_ppc = macosx10.5; }; name = Release; }; - C42924A24AB55E6A940423EA = {isa = XCBuildConfiguration; buildSettings = { + OTHER_CPLUSPLUSFLAGS = ( + "-Wall", + "-Wshadow", + "-Wno-missing-field-initializers", + "-Wshadow", + "-Wshorten-64-to-32", + "-Wstrict-aliasing", + "-Wuninitialized", + "-Wunused-parameter", + ); + SDKROOT_ppc = macosx10.5; + }; + name = Release; + }; + C42924A24AB55E6A940423EA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - DEBUG_INFORMATION_FORMAT = "dwarf"; + DEBUG_INFORMATION_FORMAT = dwarf; GCC_C_LANGUAGE_STANDARD = c99; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = G5; @@ -1971,95 +2639,75 @@ GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; - PRODUCT_NAME = "Introjucer"; - WARNING_CFLAGS = -Wreorder; - ZERO_LINK = NO; }; name = Debug; }; - 70135D15D7E0D8410C42BBA3 = {isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - DEBUG_INFORMATION_FORMAT = "dwarf"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_INLINES_ARE_PRIVATE_EXTERN = YES; - GCC_MODEL_TUNING = G5; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; - GCC_WARN_MISSING_PARENTHESES = YES; - GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; - GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PRODUCT_NAME = "Introjucer"; - WARNING_CFLAGS = -Wreorder; - ZERO_LINK = NO; }; name = Release; }; - F90407F24422C589DA251604 = {isa = XCConfigurationList; buildConfigurations = ( - C42924A24AB55E6A940423EA, - 70135D15D7E0D8410C42BBA3, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - 9D7584E9B3803102EC798231 = {isa = XCConfigurationList; buildConfigurations = ( - EA0BCC969703B2D179089E55, - B159CF4275B8A90122629FF4, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - C009859650B4628FDD068941 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2610F357881240ACBF612F48, - 1321E6C1C6170B6C898AD09D, - 6FC19EBA7A51423C3D22F77B, ); runOnlyForDeploymentPostprocessing = 0; }; - 84449D044096A03F2582904B = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 357A6AA6960EF95D92929BEE, - 954A036F5DDB375DB23FFB3E, - 3EB3D569250C4BA4CA9AF578, - 95B44E6C74B1DED31DBE37EB, - AA9D0B8E23F3D87A23DE9F8A, - 244BA1BDA5FAA465EA3F9C6D, - 3FCA61C401007B243E2E9035, - 5BC89E7905397ABECD25ACCD, - FBE57B26FE59319AA2E8B59D, - 30B921C38DCEE787B294B746, - 676D2E1E750E61AA2FAA335E, - 8012E6487639A7368E4C4470, - 1F37544891EC8DBB5E500C1C, - 110221CD5578153B528AD2BE, - CD4F7B119CE718BCE78D61F4, - 78CB463DD98A55313A543859, - 1499DF2E85B05AC1BF423773, - 123810DAF8AF758928916ECE, - C9F11BA62D6D092A300363F7, - F6635694A01FFBF5EF0968DB, - FCE6F604C00039A32649CB69, - 9BF773500BA51A8B5C6C7348, - 57B1F32A372143B4D3B1C517, - 3DC282564876B1FC88AAA9B3, - C49E1D32A9DCE3D59BC48B1D, - E1268E019B434F6B5E9317DC, - CE91112DADB97C573C3C674D, - A70F0274076C0D44ED71C980, - BD1E0CBE74DDD2F303978E1F, - 8C1CC0E7A772D66635BA482F, - A69BF71FA90E5A66B6EB2E0F, - D68DE111AFBD82F0D44A3B69, - EC6A34EC9A9D454BF26AAD32, - 8AD28823205783E6F676F254, - 34716A3539FD288C09CBA38A, - 45A53AF13B0D663050632E8C, - C2A85091A28C907A4E1E1687, - 83431B7234A78ECFB3C15F63, - 209FCCC2155A1FCB7E11E20D, - C93569F47B4AC1A8E37992ED, - 1B988E139004D8E2850EB656, - 3C5267E06A897B0DC0F7EA50, - F70594FF1FFED9AC12F43709, - 01D45DD829D8848733090B67, - 4028CA96EA50175DD6B8D976, - F743B7B2709E72250982F2FB, - 45576193A53DE94F5BF4C3D4, - BF57EEE3415D6F8F03206846, - 20102F921FAA2A92CED056C0, ); runOnlyForDeploymentPostprocessing = 0; }; - B8D802107FEE6AD60F5309A3 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1E76E36772355E2A43CF4961, - 241F29FCBB7A17BB44A0B10C, - 49C22786B54C5DC94E4654B8, - 11D42F7EC6E6539D79A7F4B1, - B980464FA2761CCD64B1FAD6, ); runOnlyForDeploymentPostprocessing = 0; }; - FE688C03195D5E72123A75BF = {isa = PBXNativeTarget; buildConfigurationList = 9D7584E9B3803102EC798231; buildPhases = ( - C009859650B4628FDD068941, - 84449D044096A03F2582904B, - B8D802107FEE6AD60F5309A3, ); buildRules = ( ); dependencies = ( ); name = "The Introjucer"; productName = "The Introjucer"; productReference = 25F52316D256B4534BED16D1; productInstallPath = "$(HOME)/Applications"; productType = "com.apple.product-type.application"; }; - 74EA481348A24104E6ACE009 = {isa = PBXProject; buildConfigurationList = F90407F24422C589DA251604; attributes = { LastUpgradeCheck = 0440; }; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = 3CC531922CC2D398E283A845; projectDirPath = ""; projectRoot = ""; targets = ( FE688C03195D5E72123A75BF ); }; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = Introjucer; + WARNING_CFLAGS = "-Wreorder"; + ZERO_LINK = NO; + }; + name = Debug; + }; + EA0BCC969703B2D179089E55 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; + CLANG_LINK_OBJC_RUNTIME = NO; + COMBINE_HIDPI_IMAGES = YES; + CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "_DEBUG=1", + "DEBUG=1", + "JUCER_XCODE_MAC_F6D2F4CF=1", + "JUCE_APP_VERSION=3.1.0", + "JUCE_APP_VERSION_HEX=0x30100", + ); + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ( + ../../JuceLibraryCode, + ../../../JuceLibraryCode/modules, + "$(inherited)", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; + OTHER_CPLUSPLUSFLAGS = ( + "-Wall", + "-Wshadow", + "-Wno-missing-field-initializers", + "-Wshadow", + "-Wshorten-64-to-32", + "-Wstrict-aliasing", + "-Wuninitialized", + "-Wunused-parameter", + ); + SDKROOT_ppc = macosx10.5; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9D7584E9B3803102EC798231 /* Build configuration list for PBXNativeTarget "The Introjucer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EA0BCC969703B2D179089E55 /* Debug */, + B159CF4275B8A90122629FF4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + F90407F24422C589DA251604 /* Build configuration list for PBXProject "The Introjucer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C42924A24AB55E6A940423EA /* Debug */, + 70135D15D7E0D8410C42BBA3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ }; - rootObject = 74EA481348A24104E6ACE009; + rootObject = 74EA481348A24104E6ACE009 /* Project object */; } diff --git a/JuceLibraryCode/BinaryData.cpp b/JuceLibraryCode/BinaryData.cpp index c2c491f97a3cb69135061fc6d94fdefd30a211ce..9ae1e8819cec0b9e6bfde49bdae88398d456449c 100644 --- a/JuceLibraryCode/BinaryData.cpp +++ b/JuceLibraryCode/BinaryData.cpp @@ -8,7 +8,7 @@ namespace BinaryData { //================== cpmono-black-serialized ================== -static const unsigned char temp_77517bbb[] = +static const unsigned char temp_binary_data_0[] = { 120,156,237,157,127,156,149,85,181,255,71,65,64,12,10,47,132,9,130,81,152,63,80,233,226,197,66,158,103,176,240,66,23,47,136,93,12,186,24,196,211,65,177,51,228,185,151,210,11,134,66,141,97,160,32,40,5,57,6,130,130,160,99,16,36,8,231,57,6,66,98,160,24, 212,24,228,143,33,212,41,16,20,196,194,160,190,251,253,89,207,179,103,200,31,13,126,49,61,190,248,99,102,125,94,103,255,90,251,199,179,247,218,107,175,189,246,231,47,249,207,111,140,252,198,144,111,117,62,191,164,164,100,240,228,207,149,158,90,242,55, 135,142,41,89,184,160,105,233,200,50,7,75,102,111,106,20,102,1,35,103,117,41,100,245,123,10,8,138,202,58,116,184,43,56,99,112,251,66,22,16,54,253,82,144,221,176,126,103,232,1,65,81,217,105,133,167,2,151,199,13,217,19,170,162,176,124,199,173,113,150,95, @@ -229,10 +229,10 @@ static const unsigned char temp_77517bbb[] = 33,16,98,208,66,64,165,133,0,168,139,0,116,17,81,213,69,164,165,35,200,236,208,187,111,169,2,12,170,46,2,72,31,2,160,188,148,147,168,140,108,213,204,0,29,214,114,202,236,65,226,103,102,120,232,129,212,29,171,247,93,105,234,14,91,227,94,138,253,11,117, 39,245,137,109,181,198,15,39,160,102,201,43,166,238,224,78,3,234,14,168,158,218,3,104,152,0,24,38,68,213,48,33,173,29,159,199,233,48,177,155,126,42,15,0,3,176,29,101,254,118,116,116,191,107,163,251,200,205,65,174,242,37,255,15,41,157,224,99,0,0 }; -const char* cpmonoblackserialized = (const char*) temp_77517bbb; +const char* cpmonoblackserialized = (const char*) temp_binary_data_0; //================== cpmono-bold-serialized ================== -static const unsigned char temp_62a06903[] = +static const unsigned char temp_binary_data_1[] = { 120,156,237,157,15,156,87,69,185,255,65,8,20,47,36,94,76,19,83,219,46,94,52,77,10,131,90,247,28,212,48,45,188,24,118,53,236,210,213,56,125,81,185,223,37,206,109,11,46,118,81,40,188,32,38,136,134,129,173,173,130,65,144,171,16,40,202,126,207,33,8,10,131, 194,160,182,32,44,8,107,11,68,3,177,48,200,223,188,63,207,57,243,101,213,250,129,47,42,191,190,120,189,246,181,207,231,245,157,63,231,153,153,103,102,158,153,121,230,153,15,124,228,223,62,61,226,211,215,124,174,87,223,54,109,218,12,153,114,81,191,211, 219,188,228,80,219,54,243,231,117,234,55,162,214,193,54,247,173,239,16,22,1,35,26,122,167,69,253,158,3,130,162,218,150,69,227,130,117,55,188,35,45,2,174,222,53,57,40,158,210,242,124,232,1,65,81,237,236,145,165,192,229,113,115,241,198,110,35,194,9,219, @@ -466,10 +466,10 @@ static const unsigned char temp_62a06903[] = 51,181,25,217,171,205,216,211,1,112,175,76,109,134,99,37,218,12,170,54,3,48,217,40,132,199,124,136,58,145,7,18,72,11,71,57,175,81,45,31,86,203,0,116,100,204,109,66,15,50,39,17,131,66,15,180,131,130,86,170,29,20,118,124,144,10,58,153,164,3,85,87,26,1, 62,84,1,80,61,172,2,144,220,0,108,87,189,201,228,134,196,146,27,228,18,64,246,48,21,21,94,58,34,238,127,63,113,63,124,163,148,171,141,54,255,15,230,92,172,169,0,0 }; -const char* cpmonoboldserialized = (const char*) temp_62a06903; +const char* cpmonoboldserialized = (const char*) temp_binary_data_1; //================== cpmono-extralight-serialized ================== -static const unsigned char temp_b510c8a2[] = +static const unsigned char temp_binary_data_2[] = { 120,156,237,157,127,188,149,69,181,255,81,16,232,24,24,10,65,129,98,20,132,133,129,97,218,69,246,3,26,126,177,139,23,193,210,176,75,87,227,113,195,133,246,38,118,151,130,164,48,40,16,195,4,81,143,74,29,5,193,32,240,158,194,64,65,206,126,54,129,160,32, 40,4,122,8,130,4,33,143,65,160,32,42,134,117,231,253,89,207,51,251,80,118,191,71,47,254,216,190,248,99,191,230,243,218,243,107,61,107,214,172,89,51,179,102,230,11,253,254,237,155,195,191,121,245,119,186,156,95,175,94,189,129,83,46,234,113,102,189,191, 57,116,66,189,249,243,202,122,12,207,58,88,111,230,198,134,65,6,48,124,70,215,66,70,255,39,128,168,48,123,227,164,73,221,207,26,216,185,144,1,180,157,176,39,149,25,50,184,97,15,15,136,10,179,77,71,126,53,229,202,248,65,230,236,195,19,130,9,123,110,137, @@ -713,10 +713,10 @@ static const unsigned char temp_b510c8a2[] = 120,66,120,32,139,155,40,15,180,126,150,157,113,154,128,107,216,179,37,108,220,194,47,233,224,13,93,89,4,92,176,15,24,56,101,167,173,159,113,105,17,195,62,33,235,103,186,197,72,130,4,64,144,72,42,65,34,47,226,66,97,18,36,138,143,5,233,108,1,8,128,236, 48,253,183,227,242,255,46,202,255,177,211,99,142,61,245,254,7,170,167,234,165,0,0 }; -const char* cpmonoextralightserialized = (const char*) temp_b510c8a2; +const char* cpmonoextralightserialized = (const char*) temp_binary_data_2; //================== cpmono-light-serialized ================== -static const unsigned char temp_72729244[] = +static const unsigned char temp_binary_data_3[] = { 120,156,237,157,127,160,149,69,181,247,81,16,12,195,196,32,40,8,184,167,80,41,20,13,195,222,19,207,6,12,47,118,233,98,120,47,132,69,65,60,110,12,218,155,216,93,186,16,118,17,168,99,7,161,32,48,76,13,131,192,32,168,83,120,161,64,206,126,54,129,135,4,65, 65,168,99,32,40,4,117,18,2,130,208,11,65,189,243,249,174,231,153,125,200,122,47,250,226,143,109,252,115,230,123,246,252,90,207,204,154,53,107,102,214,172,249,208,71,255,245,115,163,62,55,228,63,175,190,174,65,131,6,131,167,95,223,163,67,131,191,56,116, 94,131,37,139,155,246,24,149,117,176,193,188,173,141,83,25,192,168,185,93,11,25,253,158,0,162,194,236,202,118,23,4,147,251,189,183,144,1,236,107,245,88,144,41,12,58,191,135,7,68,133,217,41,149,149,129,43,99,98,102,204,246,137,169,138,253,223,136,50,252, @@ -973,10 +973,10 @@ static const unsigned char temp_72729244[] = 195,60,113,76,68,82,189,98,69,94,234,75,40,9,179,212,163,142,0,200,180,129,55,79,61,208,165,32,162,60,208,222,215,218,99,87,216,222,23,55,12,225,138,77,27,99,207,194,67,59,175,52,141,128,61,47,211,39,127,99,123,95,139,154,253,81,123,95,132,58,191,0,136, 145,0,48,18,73,197,72,228,133,93,40,76,140,68,241,98,164,228,70,35,4,64,118,152,254,203,57,254,127,13,249,255,236,201,49,215,60,13,254,47,224,111,82,132,0,0 }; -const char* cpmonolightserialized = (const char*) temp_72729244; +const char* cpmonolightserialized = (const char*) temp_binary_data_3; //================== cpmono-plain-serialized ================== -static const unsigned char temp_7b72b510[] = +static const unsigned char temp_binary_data_4[] = { 120,156,237,157,127,188,86,69,181,255,143,130,96,40,36,6,98,65,104,39,33,44,8,10,67,67,246,62,80,120,177,240,106,88,16,118,241,66,108,31,20,122,14,185,187,20,132,93,68,12,67,161,48,48,76,234,212,65,84,16,244,24,4,10,194,179,31,2,193,64,240,30,131,194, 32,44,8,12,131,192,48,72,184,144,119,222,159,181,247,28,200,238,247,162,95,127,61,198,31,231,181,62,231,153,31,123,205,204,154,153,53,51,107,214,124,242,51,255,250,229,225,95,30,248,181,78,23,150,149,149,13,152,252,137,138,115,203,94,114,232,164,178, 185,115,26,85,12,175,116,176,108,198,250,6,97,30,48,188,186,115,49,175,223,51,64,80,84,233,146,5,155,187,127,160,152,7,76,29,248,64,144,239,52,237,112,232,1,65,81,101,121,249,221,129,203,99,108,126,212,200,145,225,248,93,223,77,242,252,50,126,87,211, @@ -1230,10 +1230,10 @@ static const unsigned char temp_7b72b510[] = 0,27,91,68,213,198,22,105,225,40,227,53,170,180,27,162,231,22,196,138,108,12,220,164,29,120,160,235,41,4,121,160,125,43,154,68,251,86,204,159,72,5,47,118,73,58,120,227,78,42,194,244,187,14,10,64,101,123,97,160,204,66,144,14,162,74,110,72,156,118,156, 171,5,200,30,166,162,220,75,39,196,253,141,19,247,215,110,148,114,252,151,253,15,5,44,29,103,0,0 }; -const char* cpmonoplainserialized = (const char*) temp_7b72b510; +const char* cpmonoplainserialized = (const char*) temp_binary_data_4; //================== BebasNeue.otf ================== -static const unsigned char temp_7b880677[] = +static const unsigned char temp_binary_data_5[] = { 79,84,84,79,0,11,0,128,0,3,0,48,67,70,70,32,57,136,64,140,0,0,39,76,0,0,70,154,71,80,79,83,223,12,110,56,0,0,116,248,0,0,73,16,71,83,85,66,114,203,114,178,0,0,116,0,0,0,0,246,79,83,47,50,102,169,27,20,0,0,1,32,0,0,0,96,99,109,97,112,211,17,247,228,0, 0,35,232,0,0,3,68,104,101,97,100,243,84,238,113,0,0,0,188,0,0,0,54,104,104,101,97,6,215,3,186,0,0,0,244,0,0,0,36,104,109,116,120,67,128,39,22,0,0,109,232,0,0,6,24,109,97,120,112,1,134,80,0,0,0,1,24,0,0,0,6,110,97,109,101,230,56,31,140,0,0,1,128,0,0,34, 101,112,111,115,116,255,184,0,50,0,0,39,44,0,0,0,32,0,1,0,0,0,1,0,131,131,184,68,27,95,15,60,245,0,3,3,232,0,0,0,0,200,111,85,40,0,0,0,0,200,111,85,40,255,119,255,60,3,232,3,130,0,0,0,3,0,2,0,0,0,0,0,0,0,1,0,0,2,188,254,212,0,185,3,232,255,119,255,119, @@ -1843,10 +1843,10 @@ static const unsigned char temp_7b880677[] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,10,0,3,0,10,0,3,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,24,0,22,0,24,0,22,0,24,0,22,0,24,0,4,0,11,0,4,0,11,0,4,0,11,0,23,0,25,0,23,0,25,0,23,0,25,0,23,0,25,0,23,0,25,0,23,0,25,0,5,0,12,0,6,0,13,0,6,0,19, 0,21,0,19,0,21,0,19,0,21,0,15,0,17,0,3,0,10,0,22,0,24,0,4,0,11,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,24,0,4,0,11,0,5,0,12,0,5,0,12,0,5,0,12,0,6,0,13,0,0 }; -const char* BebasNeue_otf = (const char*) temp_7b880677; +const char* BebasNeue_otf = (const char*) temp_binary_data_5; //================== cpmono_bold.otf ================== -static const unsigned char temp_8e883f13[] = +static const unsigned char temp_binary_data_6[] = { 79,84,84,79,0,10,0,128,0,3,0,32,67,70,70,32,35,187,57,254,0,0,10,112,0,0,84,205,71,83,85,66,106,18,122,98,0,0,98,20,0,0,5,216,79,83,47,50,104,215,98,101,0,0,1,16,0,0,0,96,99,109,97,112,38,198,129,33,0,0,5,56,0,0,5,24,104,101,97,100,237,187,124,213,0, 0,0,172,0,0,0,54,104,104,101,97,6,229,0,115,0,0,0,228,0,0,0,36,104,109,116,120,58,11,56,208,0,0,95,64,0,0,2,212,109,97,120,112,1,105,80,0,0,0,1,8,0,0,0,6,110,97,109,101,226,66,147,104,0,0,1,112,0,0,3,198,112,111,115,116,255,181,0,161,0,0,10,80,0,0,0, 32,0,1,0,0,0,1,0,0,64,149,238,152,95,15,60,245,0,3,3,232,0,0,0,0,198,13,28,168,0,0,0,0,198,13,28,168,255,7,255,16,3,131,3,149,0,0,0,3,0,2,0,0,0,0,0,0,0,1,0,0,3,144,254,224,0,200,2,138,255,7,255,7,3,131,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,80,0,1,105, @@ -2190,10 +2190,10 @@ static const unsigned char temp_8e883f13[] = 0,2,0,21,0,4,0,12,0,0,0,14,0,19,0,9,0,21,0,23,0,15,0,28,0,28,0,18,0,36,0,51,0,19,0,53,0,54,0,35,0,57,0,60,0,37,0,63,0,66,0,41,0,71,0,72,0,45,0,82,0,82,0,47,0,92,0,92,0,48,0,99,0,99,0,49,0,103,0,106,0,50,0,140,0,162,0,54,0,165,0,168,0,77,0,179,0,184,0, 81,0,208,0,209,0,87,0,214,0,214,0,89,0,224,1,6,0,90,1,8,1,8,0,129,1,13,1,13,0,130,0,1,0,26,0,3,0,13,0,20,0,24,0,25,0,26,0,27,0,52,0,55,0,56,0,61,0,62,0,67,0,68,0,69,0,70,0,134,0,135,0,136,0,137,0,138,0,139,0,163,0,164,0,169,1,7,0,0 }; -const char* cpmono_bold_otf = (const char*) temp_8e883f13; +const char* cpmono_bold_otf = (const char*) temp_binary_data_6; //================== cpmono_extra_light.otf ================== -static const unsigned char temp_8172799f[] = +static const unsigned char temp_binary_data_7[] = { 79,84,84,79,0,10,0,128,0,3,0,32,67,70,70,32,248,217,201,134,0,0,10,164,0,0,78,103,71,83,85,66,106,18,122,98,0,0,91,224,0,0,5,216,79,83,47,50,104,210,98,59,0,0,1,16,0,0,0,96,99,109,97,112,38,198,129,33,0,0,5,108,0,0,5,24,104,101,97,100,237,187,115,86, 0,0,0,172,0,0,0,54,104,104,101,97,6,229,0,179,0,0,0,228,0,0,0,36,104,109,116,120,81,57,79,54,0,0,89,12,0,0,2,212,109,97,120,112,1,105,80,0,0,0,1,8,0,0,0,6,110,97,109,101,101,109,217,12,0,0,1,112,0,0,3,252,112,111,115,116,255,181,0,161,0,0,10,132,0,0, 0,32,0,1,0,0,0,1,0,0,97,176,60,66,95,15,60,245,0,3,3,232,0,0,0,0,198,13,23,248,0,0,0,0,198,13,23,248,255,71,255,16,3,67,3,118,0,0,0,3,0,2,0,0,0,0,0,0,0,1,0,0,3,144,254,224,0,200,2,138,255,71,255,71,3,67,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,80,0,1, @@ -2518,10 +2518,10 @@ static const unsigned char temp_8172799f[] = 0,55,0,61,0,62,0,70,0,2,0,21,0,4,0,12,0,0,0,14,0,19,0,9,0,21,0,23,0,15,0,28,0,28,0,18,0,36,0,51,0,19,0,53,0,54,0,35,0,57,0,60,0,37,0,63,0,66,0,41,0,71,0,72,0,45,0,82,0,82,0,47,0,92,0,92,0,48,0,99,0,99,0,49,0,103,0,106,0,50,0,140,0,162,0,54,0,165,0,168, 0,77,0,179,0,184,0,81,0,208,0,209,0,87,0,214,0,214,0,89,0,224,1,6,0,90,1,8,1,8,0,129,1,13,1,13,0,130,0,1,0,26,0,3,0,13,0,20,0,24,0,25,0,26,0,27,0,52,0,55,0,56,0,61,0,62,0,67,0,68,0,69,0,70,0,134,0,135,0,136,0,137,0,138,0,139,0,163,0,164,0,169,1,7,0,0 }; -const char* cpmono_extra_light_otf = (const char*) temp_8172799f; +const char* cpmono_extra_light_otf = (const char*) temp_binary_data_7; //================== cpmono_light.otf ================== -static const unsigned char temp_9ff5f6ce[] = +static const unsigned char temp_binary_data_8[] = { 79,84,84,79,0,10,0,128,0,3,0,32,67,70,70,32,64,226,171,159,0,0,10,124,0,0,81,133,71,83,85,66,106,18,122,98,0,0,94,216,0,0,5,216,79,83,47,50,104,211,98,73,0,0,1,16,0,0,0,96,99,109,97,112,38,198,129,33,0,0,5,68,0,0,5,24,104,101,97,100,237,187,127,116,0, 0,0,172,0,0,0,54,104,104,101,97,6,229,0,158,0,0,0,228,0,0,0,36,104,109,116,120,73,105,71,167,0,0,92,4,0,0,2,212,109,97,120,112,1,105,80,0,0,0,1,8,0,0,0,6,110,97,109,101,106,76,91,179,0,0,1,112,0,0,3,209,112,111,115,116,255,181,0,161,0,0,10,92,0,0,0,32, 0,1,0,0,0,1,0,0,215,127,97,71,95,15,60,245,0,3,3,232,0,0,0,0,198,13,30,2,0,0,0,0,198,13,30,2,255,50,255,16,3,88,3,128,0,0,0,3,0,2,0,0,0,0,0,0,0,1,0,0,3,144,254,224,0,200,2,138,255,50,255,50,3,88,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,80,0,1,105,0,0, @@ -2856,10 +2856,10 @@ static const unsigned char temp_9ff5f6ce[] = 0,4,0,12,0,0,0,14,0,19,0,9,0,21,0,23,0,15,0,28,0,28,0,18,0,36,0,51,0,19,0,53,0,54,0,35,0,57,0,60,0,37,0,63,0,66,0,41,0,71,0,72,0,45,0,82,0,82,0,47,0,92,0,92,0,48,0,99,0,99,0,49,0,103,0,106,0,50,0,140,0,162,0,54,0,165,0,168,0,77,0,179,0,184,0,81,0,208, 0,209,0,87,0,214,0,214,0,89,0,224,1,6,0,90,1,8,1,8,0,129,1,13,1,13,0,130,0,1,0,26,0,3,0,13,0,20,0,24,0,25,0,26,0,27,0,52,0,55,0,56,0,61,0,62,0,67,0,68,0,69,0,70,0,134,0,135,0,136,0,137,0,138,0,139,0,163,0,164,0,169,1,7,0,0 }; -const char* cpmono_light_otf = (const char*) temp_9ff5f6ce; +const char* cpmono_light_otf = (const char*) temp_binary_data_8; //================== cpmono_plain.otf ================== -static const unsigned char temp_eca62182[] = +static const unsigned char temp_binary_data_9[] = { 79,84,84,79,0,10,0,128,0,3,0,32,67,70,70,32,153,52,71,27,0,0,10,124,0,0,81,49,71,83,85,66,106,18,122,98,0,0,94,132,0,0,5,216,79,83,47,50,104,213,98,87,0,0,1,16,0,0,0,96,99,109,97,112,38,198,129,33,0,0,5,68,0,0,5,24,104,101,97,100,237,186,121,35,0,0,0, 172,0,0,0,54,104,104,101,97,6,228,0,137,0,0,0,228,0,0,0,36,104,109,116,120,65,179,64,52,0,0,91,176,0,0,2,212,109,97,120,112,1,105,80,0,0,0,1,8,0,0,0,6,110,97,109,101,95,80,74,175,0,0,1,112,0,0,3,209,112,111,115,116,255,181,0,161,0,0,10,92,0,0,0,32,0, 1,0,0,0,1,0,0,76,64,104,233,95,15,60,245,0,3,3,232,0,0,0,0,198,13,26,212,0,0,0,0,198,13,26,212,255,28,255,16,3,109,3,139,0,0,0,3,0,2,0,0,0,0,0,0,0,1,0,0,3,144,254,224,0,200,2,138,255,28,255,29,3,109,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,80,0,1,105, @@ -3193,10 +3193,10 @@ static const unsigned char temp_eca62182[] = 0,50,0,140,0,162,0,54,0,165,0,168,0,77,0,179,0,184,0,81,0,208,0,209,0,87,0,214,0,214,0,89,0,224,1,6,0,90,1,8,1,8,0,129,1,13,1,13,0,130,0,1,0,26,0,3,0,13,0,20,0,24,0,25,0,26,0,27,0,52,0,55,0,56,0,61,0,62,0,67,0,68,0,69,0,70,0,134,0,135,0,136,0,137,0,138, 0,139,0,163,0,164,0,169,1,7,0,0 }; -const char* cpmono_plain_otf = (const char*) temp_eca62182; +const char* cpmono_plain_otf = (const char*) temp_binary_data_9; //================== miso-bold.ttf ================== -static const unsigned char temp_7dfa977e[] = +static const unsigned char temp_binary_data_10[] = { 0,1,0,0,0,17,1,0,0,4,0,16,76,84,83,72,237,157,221,60,0,0,5,108,0,0,0,227,79,83,47,50,81,16,250,27,0,0,1,152,0,0,0,86,86,68,77,88,108,156,116,37,0,0,231,220,0,0,5,224,99,109,97,112,117,108,128,122,0,0,26,212,0,0,6,164,99,118,116,32,0,20,0,0,0,0,34,224, 0,0,0,2,102,112,103,109,50,77,115,102,0,0,33,120,0,0,1,98,103,108,121,102,122,237,74,59,0,0,34,228,0,0,184,220,104,100,109,120,139,147,218,195,0,0,6,80,0,0,20,132,104,101,97,100,230,15,38,231,0,0,1,28,0,0,0,54,104,104,101,97,6,202,7,163,0,0,1,84,0,0, 0,36,104,109,116,120,82,131,27,122,0,0,1,240,0,0,3,124,107,101,114,110,23,5,21,255,0,0,221,128,0,0,4,68,108,111,99,97,100,35,145,228,0,0,219,192,0,0,1,192,109,97,120,112,2,241,2,157,0,0,1,120,0,0,0,32,110,97,109,101,215,203,101,65,0,0,225,196,0,0,3,225, @@ -3880,10 +3880,10 @@ static const unsigned char temp_7dfa977e[] = 255,203,0,239,0,212,255,203,0,240,0,213,255,203,0,241,0,214,255,202,0,242,0,215,255,202,0,243,0,216,255,202,0,244,0,217,255,202,0,245,0,218,255,202,0,246,0,218,255,201,0,247,0,219,255,201,0,248,0,220,255,201,0,249,0,221,255,201,0,250,0,222,255,201,0, 251,0,223,255,200,0,252,0,224,255,200,0,253,0,225,255,200,0,254,0,226,255,200,0,255,0,226,255,199,0,0 }; -const char* misobold_ttf = (const char*) temp_7dfa977e; +const char* misobold_ttf = (const char*) temp_binary_data_10; //================== miso-light.ttf ================== -static const unsigned char temp_9ecc78ad[] = +static const unsigned char temp_binary_data_11[] = { 0,1,0,0,0,17,1,0,0,4,0,16,76,84,83,72,109,206,108,252,0,0,5,108,0,0,0,227,79,83,47,50,79,98,250,86,0,0,1,152,0,0,0,86,86,68,77,88,108,201,116,87,0,0,229,68,0,0,5,224,99,109,97,112,117,108,128,122,0,0,26,212,0,0,6,164,99,118,116,32,0,20,0,0,0,0,34,224, 0,0,0,2,102,112,103,109,50,77,115,102,0,0,33,120,0,0,1,98,103,108,121,102,9,54,37,173,0,0,34,228,0,0,182,56,104,100,109,120,120,118,213,147,0,0,6,80,0,0,20,132,104,101,97,100,230,13,38,194,0,0,1,28,0,0,0,54,104,104,101,97,6,201,7,195,0,0,1,84,0,0,0,36, 104,109,116,120,82,124,51,141,0,0,1,240,0,0,3,124,107,101,114,110,23,5,21,255,0,0,218,220,0,0,4,68,108,111,99,97,249,219,39,62,0,0,217,28,0,0,1,192,109,97,120,112,2,241,2,188,0,0,1,120,0,0,0,32,110,97,109,101,174,204,29,32,0,0,223,32,0,0,3,240,112,111, @@ -4549,10 +4549,10 @@ static const unsigned char temp_9ecc78ad[] = 203,0,243,0,216,255,203,0,244,0,217,255,203,0,245,0,218,255,202,0,246,0,218,255,202,0,247,0,219,255,202,0,248,0,220,255,202,0,249,0,221,255,201,0,250,0,222,255,201,0,251,0,223,255,201,0,252,0,224,255,201,0,253,0,225,255,201,0,254,0,226,255,200,0,255, 0,226,255,200,0,0 }; -const char* misolight_ttf = (const char*) temp_9ecc78ad; +const char* misolight_ttf = (const char*) temp_binary_data_11; //================== miso-regular.ttf ================== -static const unsigned char temp_bfd04473[] = +static const unsigned char temp_binary_data_12[] = { 0,1,0,0,0,17,1,0,0,4,0,16,76,84,83,72,96,206,125,196,0,0,5,108,0,0,0,227,79,83,47,50,79,197,250,61,0,0,1,152,0,0,0,86,86,68,77,88,108,201,116,86,0,0,225,224,0,0,5,224,99,109,97,112,117,108,128,122,0,0,26,212,0,0,6,164,99,118,116,32,0,20,0,0,0,0,34,224, 0,0,0,2,102,112,103,109,50,77,115,102,0,0,33,120,0,0,1,98,103,108,121,102,144,118,127,194,0,0,34,228,0,0,179,20,104,100,109,120,123,104,215,146,0,0,6,80,0,0,20,132,104,101,97,100,230,14,38,213,0,0,1,28,0,0,0,54,104,104,101,97,6,189,7,195,0,0,1,84,0,0, 0,36,104,109,116,120,82,124,40,229,0,0,1,240,0,0,3,124,107,101,114,110,23,5,21,255,0,0,215,184,0,0,4,68,108,111,99,97,156,38,200,236,0,0,213,248,0,0,1,192,109,97,120,112,2,241,2,186,0,0,1,120,0,0,0,32,110,97,109,101,65,189,188,90,0,0,219,252,0,0,3,174, @@ -5216,10 +5216,10 @@ static const unsigned char temp_bfd04473[] = 0,206,255,208,0,236,0,207,255,207,0,237,0,207,255,207,0,238,0,208,255,207,0,239,0,209,255,207,0,240,0,210,255,207,0,241,0,211,255,206,0,242,0,212,255,206,0,243,0,213,255,206,0,244,0,214,255,206,0,245,0,214,255,206,0,246,0,215,255,205,0,247,0,216,255, 205,0,248,0,217,255,205,0,249,0,218,255,205,0,250,0,219,255,205,0,251,0,220,255,204,0,252,0,220,255,204,0,253,0,221,255,204,0,254,0,222,255,204,0,255,0,223,255,203,0,0 }; -const char* misoregular_ttf = (const char*) temp_bfd04473; +const char* misoregular_ttf = (const char*) temp_binary_data_12; //================== miso-serialized ================== -static const unsigned char temp_263ed5c5[] = +static const unsigned char temp_binary_data_13[] = { 120,156,236,221,11,252,253,197,180,63,254,79,244,237,170,139,164,123,73,55,116,165,146,240,221,239,175,168,148,75,95,145,144,16,187,143,67,246,231,155,173,155,131,82,169,164,72,233,34,149,110,18,37,183,82,74,159,253,222,137,238,36,33,169,164,66,116,145, 20,161,19,254,243,124,205,222,31,250,31,231,156,56,156,195,227,119,122,60,62,205,250,238,247,204,154,153,53,51,107,214,90,179,102,205,139,223,188,219,174,19,19,19,231,156,250,226,57,171,78,252,161,64,243,77,28,59,103,195,102,222,228,163,70,233,163,71, 233,252,163,116,214,40,93,96,148,46,56,74,23,26,165,11,143,210,69,70,233,162,163,244,49,163,116,177,81,186,248,40,93,98,148,46,57,74,31,59,74,151,26,165,143,27,165,75,143,210,199,143,210,101,70,233,178,163,116,185,81,186,252,40,93,97,148,174,56,74,87, @@ -6270,10 +6270,10 @@ static const unsigned char temp_263ed5c5[] = 219,114,86,91,239,25,109,89,219,189,161,215,207,60,247,238,205,109,203,166,45,119,111,203,250,157,123,151,118,230,189,119,251,157,251,182,245,247,109,219,239,219,214,223,183,212,95,163,80,149,125,75,61,229,188,222,155,243,251,188,182,254,188,182,254, 188,182,254,188,82,223,122,206,43,245,149,251,181,245,246,107,235,237,215,214,219,175,212,91,173,244,183,95,169,167,124,91,91,239,109,109,189,203,123,251,166,252,89,91,222,212,150,255,15,63,201,76,247,0,0 }; -const char* misoserialized = (const char*) temp_263ed5c5; +const char* misoserialized = (const char*) temp_binary_data_13; //================== nordic.ttf ================== -static const unsigned char temp_bcaa94b9[] = +static const unsigned char temp_binary_data_14[] = { 0,1,0,0,0,14,0,128,0,3,0,96,79,83,47,50,123,137,164,77,0,0,1,136,0,0,0,86,99,109,97,112,54,197,178,209,0,0,31,240,0,0,1,202,99,118,116,32,15,192,16,0,0,0,26,184,0,0,2,0,102,112,103,109,1,82,156,24,0,0,28,184,0,0,0,179,103,97,115,112,0,23,0,6,0,0,26,168, 0,0,0,16,103,108,121,102,108,103,13,174,0,0,40,168,0,0,51,44,104,101,97,100,98,133,67,155,0,0,0,236,0,0,0,54,104,104,101,97,6,68,3,192,0,0,1,36,0,0,0,36,104,109,116,120,180,81,19,127,0,0,37,52,0,0,3,116,108,111,99,97,0,33,207,92,0,0,33,188,0,0,3,120, 109,97,120,112,24,248,0,170,0,0,1,72,0,0,0,32,110,97,109,101,185,229,179,231,0,0,1,224,0,0,24,198,112,111,115,116,255,163,0,48,0,0,1,104,0,0,0,32,112,114,101,112,15,37,62,165,0,0,29,108,0,0,2,130,0,1,0,0,0,5,0,0,166,84,57,97,95,15,60,245,0,1,4,0,0,0, @@ -6514,10 +6514,10 @@ static const unsigned char temp_bcaa94b9[] = 6,7,6,39,53,54,55,51,22,23,185,30,74,27,4,1,23,86,22,3,204,31,74,27,4,2,22,86,22,4,2,126,88,56,12,28,214,22,3,3,22,86,88,56,12,28,214,22,3,3,22,0,0,0,2,0,50,1,226,1,133,2,237,0,10,0,21,0,3,0,48,49,19,6,7,6,39,53,54,55,51,22,31,1,6,7,6,39,53,54,55,51, 22,23,185,30,74,27,4,1,23,86,22,3,204,31,74,27,4,2,22,86,22,4,2,126,88,56,12,28,214,22,3,3,22,86,88,56,12,28,214,22,3,3,22,0,0,0,0 }; -const char* nordic_ttf = (const char*) temp_bcaa94b9; +const char* nordic_ttf = (const char*) temp_binary_data_14; //================== ostrich.ttf ================== -static const unsigned char temp_189d4f30[] = +static const unsigned char temp_binary_data_15[] = { 0,1,0,0,0,16,1,0,0,4,0,0,70,70,84,77,91,245,3,49,0,0,1,12,0,0,0,28,71,68,69,70,0,172,0,3,0,0,1,40,0,0,0,32,79,83,47,50,147,188,109,12,0,0,1,72,0,0,0,96,99,109,97,112,43,226,86,187,0,0,1,168,0,0,1,162,99,118,116,32,13,119,11,140,0,0,3,76,0,0,0,34,102, 112,103,109,15,180,47,167,0,0,3,112,0,0,2,101,103,97,115,112,0,0,0,16,0,0,5,216,0,0,0,8,103,108,121,102,143,7,37,77,0,0,5,224,0,0,69,164,104,101,97,100,248,105,156,174,0,0,75,132,0,0,0,54,104,104,101,97,11,58,5,41,0,0,75,188,0,0,0,36,104,109,116,120, 102,145,6,220,0,0,75,224,0,0,1,252,108,111,99,97,36,35,54,72,0,0,77,220,0,0,1,0,109,97,120,112,1,156,1,252,0,0,78,220,0,0,0,32,110,97,109,101,44,100,71,147,0,0,78,252,0,0,2,6,112,111,115,116,68,107,181,125,0,0,81,4,0,0,1,187,112,114,101,112,2,242,181, @@ -6769,10 +6769,10 @@ static const unsigned char temp_189d4f30[] = 32,69,176,3,43,68,176,12,32,69,186,0,11,127,255,0,2,43,177,3,70,118,43,68,176,13,32,69,178,12,9,2,43,177,3,70,118,43,68,176,14,32,69,178,13,8,2,43,177,3,70,118,43,68,176,15,32,69,186,0,14,1,56,0,2,43,177,3,70,118,43,68,176,16,32,69,178,15,7,2,43,177, 3,70,118,43,68,89,176,20,43,0,0,0,0 }; -const char* ostrich_ttf = (const char*) temp_189d4f30; +const char* ostrich_ttf = (const char*) temp_binary_data_15; //================== silkscreen-serialized ================== -static const unsigned char temp_4c9cd71c[] = +static const unsigned char temp_binary_data_16[] = { 120,156,237,155,7,148,20,69,16,134,215,156,48,39,80,84,204,57,160,120,162,48,123,42,98,206,120,230,132,99,171,200,238,170,140,162,24,49,97,206,57,231,128,57,158,1,238,206,132,1,195,153,21,207,128,17,179,232,138,138,9,39,117,119,245,116,207,78,47,252, 199,221,170,188,199,123,205,78,239,215,213,85,213,85,93,53,203,128,65,133,193,158,59,132,177,82,46,151,235,217,165,95,125,143,220,20,127,52,131,255,55,87,95,42,246,26,57,185,175,63,26,94,8,6,254,227,150,66,145,77,204,139,65,240,200,45,142,27,59,62,239, 63,31,93,8,6,19,242,125,90,252,217,195,28,49,8,30,185,108,70,56,113,38,56,113,102,56,113,22,56,113,86,56,113,54,56,113,118,56,113,14,56,113,78,56,113,46,56,177,11,156,56,55,156,56,15,156,56,47,156,56,31,156,56,63,156,184,0,156,184,32,156,184,16,156,184, @@ -6807,10 +6807,10 @@ static const unsigned char temp_4c9cd71c[] = 2,78,156,0,39,126,9,39,126,5,39,126,13,39,126,3,39,126,11,39,126,7,39,126,15,39,254,0,39,78,132,19,127,132,19,127,130,19,203,112,226,207,112,226,36,56,241,23,56,241,87,56,241,55,56,113,50,156,248,59,156,248,7,156,248,39,156,248,23,156,248,55,156,56,5, 78,12,128,255,0,255,66,227,172,0,0 }; -const char* silkscreenserialized = (const char*) temp_4c9cd71c; +const char* silkscreenserialized = (const char*) temp_binary_data_16; //================== silkscreen.ttf ================== -static const unsigned char temp_2de8efad[] = +static const unsigned char temp_binary_data_17[] = { 0,1,0,0,0,15,0,48,0,3,0,192,79,83,47,50,121,166,129,146,0,0,64,208,0,0,0,78,80,67,76,84,173,52,110,22,0,0,65,32,0,0,0,54,99,109,97,112,198,58,142,190,0,0,61,32,0,0,2,4,99,118,116,32,7,83,8,77,0,0,64,172,0,0,0,36,102,112,103,109,152,92,220,162,0,0,3,224, 0,0,0,100,103,108,121,102,48,157,174,66,0,0,4,152,0,0,54,18,104,100,109,120,137,166,202,30,0,0,65,88,0,0,6,72,104,101,97,100,213,88,95,61,0,0,0,252,0,0,0,54,104,104,101,97,2,213,6,14,0,0,1,52,0,0,0,36,104,109,116,120,44,25,4,90,0,0,63,36,0,0,1,136,108, 111,99,97,0,10,37,204,0,0,58,172,0,0,1,140,109,97,120,112,1,9,0,219,0,0,1,88,0,0,0,32,110,97,109,101,63,98,60,192,0,0,1,120,0,0,2,103,112,111,115,116,9,71,9,62,0,0,60,56,0,0,0,230,112,114,101,112,5,176,112,7,0,0,4,68,0,0,0,83,0,1,0,0,0,1,0,0,124,56,31, @@ -7017,10 +7017,10 @@ static const unsigned char temp_2de8efad[] = 14,16,19,16,16,16,16,14,14,16,16,8,16,16,14,19,19,16,16,16,16,16,14,16,19,19,19,19,14,11,14,11,14,16,11,16,16,16,16,14,14,16,16,8,16,16,14,19,19,16,16,16,16,16,14,16,19,19,19,19,14,14,8,14,16,24,20,12,0,11,11,9,14,20,17,20,17,9,11,11,20,20,9,14,6,14, 17,14,17,17,17,17,17,17,17,17,6,9,14,14,14,17,20,17,17,17,17,14,14,17,17,9,17,17,14,20,20,17,17,17,17,17,14,17,20,20,20,20,14,11,14,11,14,17,11,17,17,17,17,14,14,17,17,9,17,17,14,20,20,17,17,17,17,17,14,17,20,20,20,20,14,14,9,14,17,0,0 }; -const char* silkscreen_ttf = (const char*) temp_2de8efad; +const char* silkscreen_ttf = (const char*) temp_binary_data_17; //================== ArduinoIcon.png ================== -static const unsigned char temp_dd579bb9[] = +static const unsigned char temp_binary_data_18[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,6,47,0,0,4,111,8,6,0,0,0,96,133,119,144,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,10,79,105,67,67,80,80,104,111,116,111,115,104,111,112,32,73,67,67,32,112,114,111,102,105,108,101, 0,0,120,218,157,83,103,84,83,233,22,61,247,222,244,66,75,136,128,148,75,111,82,21,8,32,82,66,139,128,20,145,38,42,33,9,16,74,136,33,161,217,21,81,193,17,69,69,4,27,200,160,136,3,142,142,128,140,21,81,44,12,138,10,216,7,228,33,162,142,131,163,136,138, 202,251,225,123,163,107,214,188,247,230,205,254,181,215,62,231,172,243,157,179,207,7,192,8,12,150,72,51,81,53,128,12,169,66,30,17,224,131,199,196,198,225,228,46,64,129,10,36,112,0,16,8,179,100,33,115,253,35,1,0,248,126,60,60,43,34,192,7,190,0,1,120,211, @@ -7809,10 +7809,10 @@ static const unsigned char temp_dd579bb9[] = 223,255,212,213,121,32,27,7,166,188,232,223,182,138,0,0,0,0,0,32,99,109,205,214,129,253,183,63,255,249,207,94,222,126,236,75,57,185,187,67,8,23,75,2,0,0,0,0,32,163,252,123,8,225,191,255,169,171,243,68,54,14,206,157,23,76,13,33,108,19,3,0,0,0,0,64,198, 248,117,8,97,92,182,22,23,33,184,243,130,147,190,148,147,59,46,132,48,51,132,240,223,165,1,0,0,0,0,16,73,39,66,8,91,255,212,213,249,84,182,15,244,255,63,0,215,70,173,194,31,62,235,52,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* ArduinoIcon_png = (const char*) temp_dd579bb9; +const char* ArduinoIcon_png = (const char*) temp_binary_data_18; //================== OpenEphysBoardLogoBlack.png ================== -static const unsigned char temp_ef366d73[] = +static const unsigned char temp_binary_data_19[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,7,115,0,0,5,27,8,6,0,0,0,52,231,138,245,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,140,165,73,68,65,84,120,218,236,221,209,149,19,71,162,199,225,54,231,30,29,233,9,54,2,228,8,152,141,96,180,17,120,110,4,200,17,236,108,4,30,71,176,16,129,69,4,59,68,176,34,2,102,34,176,136,224,194,147,116,244,194,173,178, 122,188,44,6,3,51,211,221,127,73,223,119,78,185,13,6,117,119,169,103,95,126,91,213,223,189,127,255,190,33,195,104,60,121,84,14,39,237,47,103,31,252,167,217,71,127,116,90,198,99,51,6,0,0,0,0,0,192,87,122,83,198,234,163,223,91,126,226,223,175,182,155,245, @@ -8286,10 +8286,10 @@ static const unsigned char temp_ef366d73[] = 38,188,253,43,192,21,222,214,75,152,155,65,10,120,183,225,238,40,149,248,181,93,188,0,0,0,0,0,0,228,118,87,109,194,218,69,42,243,248,20,220,54,79,152,91,152,116,76,115,188,135,119,148,74,245,197,215,187,226,247,220,209,11,0,0,0,0,0,192,215,196,99,144, 23,247,124,127,177,243,253,237,215,183,235,213,242,218,144,149,227,255,1,23,88,237,144,160,48,169,201,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* OpenEphysBoardLogoBlack_png = (const char*) temp_ef366d73; +const char* OpenEphysBoardLogoBlack_png = (const char*) temp_binary_data_19; //================== OpenEphysBoardLogoGray.png ================== -static const unsigned char temp_76e84745[] = +static const unsigned char temp_binary_data_20[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,7,115,0,0,5,27,8,6,0,0,0,52,231,138,245,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,139,144,73,68,65,84,120,218,236,221,223,117,220,198,193,198,97,68,39,247,100,7,98,42,16,115,133,75,174,43,16,191,10,180,174,192,76,5,166,43,8,85,129,86,21,132,170,32,171,203,185,50,89,65,168,14,168,10,242,13,188,160,163, 40,148,197,63,11,224,197,238,243,156,51,134,100,75,11,96,22,204,205,47,51,248,211,191,255,253,239,134,12,165,148,195,122,56,238,127,187,248,226,63,45,190,250,163,71,117,188,52,99,0,0,0,0,0,0,60,208,167,58,110,190,250,119,235,123,126,125,213,182,237,173, @@ -8760,10 +8760,10 @@ static const unsigned char temp_76e84745[] = 194,221,105,190,210,239,85,241,2,0,0,0,0,0,80,218,125,179,13,107,55,249,90,167,187,224,182,127,194,220,202,228,109,154,211,57,188,211,124,53,127,249,253,190,244,103,206,232,5,0,0,0,0,0,224,107,210,54,200,155,7,254,124,179,247,231,187,223,223,133,16,110, 12,89,61,254,7,181,146,230,16,82,63,166,171,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* OpenEphysBoardLogoGray_png = (const char*) temp_76e84745; +const char* OpenEphysBoardLogoGray_png = (const char*) temp_binary_data_20; //================== RadioButtons-01.png ================== -static const unsigned char temp_bcea9320[] = +static const unsigned char temp_binary_data_21[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,19,8,6,0,0,0,241,148,15,247,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,191,73,68,65,84,120,218,196,150,219,78,19,81,20,134,255,61,199,118,128,136,209,132,150,27,98,226,133,70,99,104,69,206,82,18,9,166,49,122,161,9,23,92,250,4,190,129,190,130,207,161,55,106,76,19,37,86,40,162,40,109,154,84,4, 34,98,5,76,228,2,16,122,156,233,28,92,211,169,74,109,109,13,69,88,201,206,236,116,239,174,245,173,127,173,189,103,24,200,60,30,207,29,122,4,104,180,226,144,141,81,240,123,62,255,197,187,221,221,189,80,20,229,80,131,71,34,83,16,36,73,12,140,94,13,226, @@ -8777,10 +8777,10 @@ static const unsigned char temp_bcea9320[] = 139,193,13,163,246,157,221,112,9,202,148,32,17,195,47,19,116,2,18,208,41,176,105,214,127,97,252,42,65,58,157,174,251,62,248,31,166,235,142,2,247,227,241,216,176,215,219,78,23,198,225,66,100,179,25,231,142,164,143,146,97,122,12,31,197,55,193,15,1,6,0, 156,20,41,102,255,70,71,224,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons01_png = (const char*) temp_bcea9320; +const char* RadioButtons01_png = (const char*) temp_binary_data_21; //================== RadioButtons-02.png ================== -static const unsigned char temp_bcf8aaa1[] = +static const unsigned char temp_binary_data_22[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,197,73,68,65,84,120,218,196,150,107,79,19,65,20,134,223,153,157,221,110,11,36,152,20,104,52,154,144,160,40,69,32,164,40,136,52,38,24,141,31,252,79,254,31,191,154,104,248,224,133,86,80,145,134,91,32,70,32,202,69,46,134,91, 111,123,233,94,60,179,106,44,180,24,109,19,152,228,100,119,178,115,206,115,230,61,115,38,203,98,177,216,43,156,211,16,137,129,219,247,70,70,146,103,14,78,165,198,33,20,69,129,22,10,157,57,92,114,133,34,8,174,105,167,46,98,140,228,81,200,132,15,159,230, @@ -8794,10 +8794,10 @@ static const unsigned char temp_bcf8aaa1[] = 11,27,40,149,78,239,65,201,21,129,236,150,85,243,77,37,93,83,233,37,76,125,252,132,11,205,13,216,219,207,83,89,124,42,135,255,215,254,175,75,246,147,9,20,10,192,254,126,241,159,47,156,95,178,215,183,243,90,135,228,138,98,177,128,157,237,237,51,135,75, 46,163,63,153,39,231,245,39,243,67,128,1,0,60,21,103,165,70,150,193,96,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons02_png = (const char*) temp_bcf8aaa1; +const char* RadioButtons02_png = (const char*) temp_binary_data_22; //================== RadioButtons-03.png ================== -static const unsigned char temp_bd06c222[] = +static const unsigned char temp_binary_data_23[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,77,73,68,65,84,120,218,196,150,219,110,211,64,16,134,255,61,196,109,66,165,86,106,47,242,32,173,8,23,69,240,16,136,103,225,142,151,42,92,34,40,32,113,1,151,160,34,78,82,213,67,148,66,147,56,118,236,181,119,205,76,156,162, 172,157,22,25,161,116,164,141,226,221,153,249,230,228,149,69,183,219,125,129,91,18,189,187,119,247,193,254,254,253,149,131,15,15,95,65,43,165,16,172,173,173,28,206,92,173,52,193,131,160,118,40,37,32,4,45,126,16,75,172,11,192,209,42,230,171,49,92,51,92, @@ -8809,10 +8809,10 @@ static const unsigned char temp_bd06c222[] = 253,155,136,179,130,202,88,194,31,61,126,114,163,110,191,63,32,93,202,60,245,225,204,45,203,158,54,203,60,163,88,191,255,56,193,206,246,75,186,44,236,245,21,162,183,228,232,243,49,205,71,74,109,170,102,254,143,101,103,57,59,51,56,120,254,14,66,220,208, 30,190,255,169,31,214,214,111,160,121,217,155,103,254,63,132,185,58,142,35,244,207,207,87,14,103,174,160,47,153,167,183,245,37,243,91,128,1,0,11,149,65,182,96,70,58,8,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons03_png = (const char*) temp_bd06c222; +const char* RadioButtons03_png = (const char*) temp_binary_data_23; //================== RadioButtons-04.png ================== -static const unsigned char temp_bd14d9a3[] = +static const unsigned char temp_binary_data_24[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,165,73,68,65,84,120,218,196,150,237,79,211,80,24,197,207,109,111,1,157,74,50,144,76,226,198,139,128,2,66,162,66,136,31,48,42,248,217,232,95,228,127,102,2,74,130,38,203,192,12,84,134,1,231,88,145,142,194,218,117,107,215,23, 159,219,161,216,161,198,200,132,155,52,109,239,189,233,239,60,231,60,109,202,18,137,196,75,156,211,224,83,211,51,15,103,103,31,156,57,120,113,113,1,92,150,101,180,181,183,159,57,92,112,185,204,9,222,214,118,98,145,177,227,235,32,248,15,112,46,224,146, @@ -8825,10 +8825,10 @@ static const unsigned char temp_bd14d9a3[] = 83,92,187,240,93,35,132,215,5,220,9,154,224,30,184,235,122,161,255,167,29,66,196,171,165,45,164,51,219,152,156,184,142,241,241,41,112,101,8,165,210,14,89,236,208,155,19,245,79,112,27,182,219,118,203,190,92,66,196,194,98,14,233,244,39,18,208,143,106,213, 167,134,182,195,202,209,74,219,255,52,42,21,134,61,109,61,188,246,253,224,196,7,233,200,246,214,86,254,183,67,112,185,101,85,176,171,170,103,14,23,92,70,127,50,47,206,235,79,230,155,0,3,0,91,7,91,249,23,102,61,167,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons04_png = (const char*) temp_bd14d9a3; +const char* RadioButtons04_png = (const char*) temp_binary_data_24; //================== RadioButtons-05.png ================== -static const unsigned char temp_bd22f124[] = +static const unsigned char temp_binary_data_25[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,30,0,0,0,19,8,6,0,0,0,135,174,189,124,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,10,79,105,67,67,80,80,104,111,116,111,115,104,111,112,32,73,67,67,32,112,114,111,102,105,108,101,0, 0,120,218,157,83,103,84,83,233,22,61,247,222,244,66,75,136,128,148,75,111,82,21,8,32,82,66,139,128,20,145,38,42,33,9,16,74,136,33,161,217,21,81,193,17,69,69,4,27,200,160,136,3,142,142,128,140,21,81,44,12,138,10,216,7,228,33,162,142,131,163,136,138,202, 251,225,123,163,107,214,188,247,230,205,254,181,215,62,231,172,243,157,179,207,7,192,8,12,150,72,51,81,53,128,12,169,66,30,17,224,131,199,196,198,225,228,46,64,129,10,36,112,0,16,8,179,100,33,115,253,35,1,0,248,126,60,60,43,34,192,7,190,0,1,120,211,11, @@ -8880,10 +8880,10 @@ static const unsigned char temp_bd22f124[] = 162,63,207,207,191,252,78,47,76,49,6,14,15,19,62,191,243,5,198,88,140,57,95,51,207,205,73,170,147,228,66,176,16,240,240,225,99,176,159,49,24,68,52,91,17,113,60,230,203,175,118,209,74,32,4,164,153,37,207,237,84,135,186,200,254,53,213,207,44,73,224,94, 237,224,164,117,254,119,192,197,96,131,206,243,127,62,241,255,97,121,158,163,163,104,72,171,217,188,84,112,20,13,17,213,106,245,211,23,241,3,249,115,0,245,214,95,36,216,96,243,208,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons05_png = (const char*) temp_bd22f124; +const char* RadioButtons05_png = (const char*) temp_binary_data_25; //================== RadioButtons_neutral-01.png ================== -static const unsigned char temp_fbf03e98[] = +static const unsigned char temp_binary_data_26[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,19,8,6,0,0,0,241,148,15,247,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,103,73,68,65,84,120,218,196,86,221,75,83,97,28,126,206,217,217,161,177,205,64,177,121,154,125,96,132,23,125,144,36,117,219,77,222,108,115,36,74,11,22,140,210,182,187,162,174,130,46,250,83,6,121,83,162,99,69,69,17,164,77,152, 168,67,48,203,106,141,105,160,172,109,110,147,181,185,243,181,211,123,142,37,68,251,10,199,250,193,15,94,206,251,62,239,243,252,62,248,157,151,82,20,5,28,199,221,49,27,141,55,201,218,140,22,27,67,200,31,234,245,250,251,54,199,32,123,200,194,181,148,252, @@ -8896,10 +8896,10 @@ static const unsigned char temp_fbf03e98[] = 209,58,51,61,253,79,231,101,53,3,162,36,255,136,126,90,197,177,158,19,45,255,25,169,101,99,120,129,127,176,188,242,62,176,83,42,193,108,110,237,123,68,18,69,80,191,94,68,151,140,6,131,75,71,211,7,90,157,133,159,2,12,0,238,13,9,71,19,58,158,165,0,0,0, 0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_neutral01_png = (const char*) temp_fbf03e98; +const char* RadioButtons_neutral01_png = (const char*) temp_binary_data_26; //================== RadioButtons_neutral-02.png ================== -static const unsigned char temp_fbfe5619[] = +static const unsigned char temp_binary_data_27[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,54,73,68,65,84,120,218,196,150,207,79,19,65,20,199,191,187,157,182,86,131,166,254,72,69,19,13,141,137,49,30,12,218,131,225,102,106,140,129,112,52,210,150,67,19,53,130,240,223,104,188,123,210,196,171,98,148,6,127,20,104,145, 32,28,48,129,130,201,66,65,91,160,148,110,161,178,219,157,226,204,28,56,176,187,13,182,164,125,201,203,190,153,247,94,62,243,230,205,76,86,186,226,247,43,104,146,144,182,54,255,229,59,119,239,53,28,252,57,246,9,196,225,112,192,229,118,55,28,206,185,68, @@ -8911,10 +8911,10 @@ static const unsigned char temp_fbfe5619[] = 158,112,24,14,246,30,124,249,26,199,204,244,76,213,60,81,121,133,87,94,7,156,75,60,62,42,212,235,245,34,111,113,126,44,225,188,114,42,122,174,29,201,123,157,205,102,14,29,75,69,207,217,150,233,53,246,188,30,225,92,98,148,203,88,77,47,55,28,206,185,68, 85,11,175,152,54,229,79,230,159,0,3,0,178,38,58,166,235,164,14,20,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_neutral02_png = (const char*) temp_fbfe5619; +const char* RadioButtons_neutral02_png = (const char*) temp_binary_data_27; //================== RadioButtons_neutral-03.png ================== -static const unsigned char temp_fc0c6d9a[] = +static const unsigned char temp_binary_data_28[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,1,165,73,68,65,84,120,218,196,150,109,75,194,80,20,199,207,220,221,172,12,21,122,130,40,76,139,94,7,245,162,122,19,73,244,213,194,143,209,75,251,0,69,169,212,103,136,232,77,132,154,104,69,234,210,72,216,195,189,235,222,13,133, 218,217,70,19,244,63,198,6,255,115,206,111,231,222,187,187,73,91,185,92,13,166,36,146,205,230,50,199,39,167,19,7,223,150,111,128,200,178,12,106,60,62,113,184,224,146,88,44,6,241,41,192,5,215,129,43,138,226,49,91,141,58,88,166,25,88,192,182,25,100,54, @@ -8924,10 +8924,10 @@ static const unsigned char temp_fc0c6d9a[] = 66,33,48,174,82,42,65,235,237,3,239,156,137,206,35,192,219,29,13,170,181,122,104,220,211,115,21,173,47,184,132,58,115,254,127,184,200,185,40,22,35,239,237,212,153,115,190,98,141,8,115,62,174,4,151,136,143,71,179,241,50,113,184,224,146,126,191,119,206, 207,169,252,201,252,8,48,0,227,76,197,247,89,122,10,69,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_neutral03_png = (const char*) temp_fc0c6d9a; +const char* RadioButtons_neutral03_png = (const char*) temp_binary_data_28; //================== RadioButtons_neutral-04.png ================== -static const unsigned char temp_fc1a851b[] = +static const unsigned char temp_binary_data_29[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,27,73,68,65,84,120,218,196,150,109,79,211,80,24,134,239,182,167,29,219,50,100,176,110,200,48,203,22,127,5,209,15,4,162,63,68,72,36,209,175,26,241,215,248,7,28,159,36,129,69,92,228,69,167,113,250,9,156,16,141,14,98,125,9,91, 11,117,93,123,138,61,167,209,4,219,17,18,203,246,36,39,79,211,59,231,190,158,231,188,52,21,174,150,74,159,48,160,32,197,98,169,48,61,123,163,239,224,181,202,10,136,36,73,80,98,177,190,195,25,151,136,162,136,216,0,224,140,203,225,178,44,7,196,159,223, @@ -8939,10 +8939,10 @@ static const unsigned char temp_fc1a851b[] = 106,149,103,195,180,60,111,59,212,159,113,9,229,123,110,93,200,247,251,217,218,211,158,26,229,123,78,233,185,14,87,212,193,184,132,221,229,253,47,159,251,14,103,92,162,235,237,71,222,24,200,159,204,111,1,6,0,203,214,249,255,62,204,159,178,0,0,0,0,73, 69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_neutral04_png = (const char*) temp_fc1a851b; +const char* RadioButtons_neutral04_png = (const char*) temp_binary_data_29; //================== RadioButtons_neutral-05.png ================== -static const unsigned char temp_fc289c9c[] = +static const unsigned char temp_binary_data_30[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,30,0,0,0,19,8,6,0,0,0,135,174,189,124,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,10,79,105,67,67,80,80,104,111,116,111,115,104,111,112,32,73,67,67,32,112,114,111,102,105,108,101,0, 0,120,218,157,83,103,84,83,233,22,61,247,222,244,66,75,136,128,148,75,111,82,21,8,32,82,66,139,128,20,145,38,42,33,9,16,74,136,33,161,217,21,81,193,17,69,69,4,27,200,160,136,3,142,142,128,140,21,81,44,12,138,10,216,7,228,33,162,142,131,163,136,138,202, 251,225,123,163,107,214,188,247,230,205,254,181,215,62,231,172,243,157,179,207,7,192,8,12,150,72,51,81,53,128,12,169,66,30,17,224,131,199,196,198,225,228,46,64,129,10,36,112,0,16,8,179,100,33,115,253,35,1,0,248,126,60,60,43,34,192,7,190,0,1,120,211,11, @@ -8993,10 +8993,10 @@ static const unsigned char temp_fc289c9c[] = 229,42,213,143,142,62,250,227,151,203,24,65,139,24,130,192,255,173,248,237,236,204,95,123,50,69,12,90,68,234,14,193,191,10,17,65,135,229,50,139,153,249,134,130,195,114,25,157,207,187,183,242,121,183,225,63,144,239,3,0,218,200,55,245,184,64,106,163,0, 0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_neutral05_png = (const char*) temp_fc289c9c; +const char* RadioButtons_neutral05_png = (const char*) temp_binary_data_30; //================== RadioButtons_selected-01.png ================== -static const unsigned char temp_789007d8[] = +static const unsigned char temp_binary_data_31[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,19,8,6,0,0,0,241,148,15,247,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,134,73,68,65,84,120,218,196,86,75,104,19,81,20,61,47,153,76,147,104,90,146,214,106,68,65,116,81,116,99,43,72,109,87,21,139,65,171,82,161,152,44,20,233,39,70,10,69,219,69,161,16,138,96,65,186,112,227,82,139,248,87,106,53,169, 46,20,252,130,138,40,45,88,41,46,130,198,66,193,79,98,205,111,38,49,153,207,115,146,148,34,152,31,166,140,15,238,48,188,251,206,187,231,157,185,239,222,33,148,82,88,173,214,147,235,170,140,221,162,76,77,80,121,48,74,240,83,134,10,118,104,120,231,6,118, @@ -9009,10 +9009,10 @@ static const unsigned char temp_789007d8[] = 201,56,82,41,9,166,77,13,152,187,228,46,9,35,137,52,171,0,207,211,101,41,173,252,195,9,229,57,81,242,122,81,82,20,72,73,50,247,52,160,67,163,73,84,189,25,101,114,32,250,75,112,79,250,5,79,108,173,1,171,85,110,138,73,65,6,89,252,35,106,169,54,232,28,74, 103,210,171,173,194,111,1,6,0,169,191,241,34,56,210,107,35,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_selected01_png = (const char*) temp_789007d8; +const char* RadioButtons_selected01_png = (const char*) temp_binary_data_31; //================== RadioButtons_selected-02.png ================== -static const unsigned char temp_789e1f59[] = +static const unsigned char temp_binary_data_32[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,102,73,68,65,84,120,218,196,150,77,104,19,65,20,199,255,187,153,181,201,134,212,24,42,126,32,86,15,133,10,69,26,40,162,17,84,68,41,10,18,84,90,171,205,69,37,135,74,241,82,240,3,188,120,241,100,241,224,199,69,17,60,104,75, 43,22,105,197,70,35,226,71,139,7,17,63,138,20,139,208,18,164,24,107,178,105,178,155,110,146,221,117,102,11,10,238,166,132,180,164,11,111,118,118,222,188,249,241,248,207,155,89,210,88,183,121,18,203,244,144,237,155,106,106,187,154,86,85,28,220,253,62, @@ -9025,10 +9025,10 @@ static const unsigned char temp_789e1f59[] = 177,168,3,67,121,209,135,31,212,156,94,31,213,57,81,82,12,227,146,130,166,67,150,141,37,57,175,101,249,119,201,115,25,215,212,92,206,26,21,191,88,76,205,213,188,142,47,169,202,223,106,140,75,98,178,113,47,38,107,203,242,39,243,71,128,1,0,163,90,231,150, 52,232,169,252,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_selected02_png = (const char*) temp_789e1f59; +const char* RadioButtons_selected02_png = (const char*) temp_binary_data_32; //================== RadioButtons_selected-03.png ================== -static const unsigned char temp_78ac36da[] = +static const unsigned char temp_binary_data_33[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,1,190,73,68,65,84,120,218,196,150,189,79,194,80,20,197,207,43,79,144,26,163,68,6,29,140,50,24,29,77,208,196,56,56,184,57,27,157,116,112,116,246,223,80,255,5,227,226,234,224,199,164,51,241,35,58,56,104,116,129,176,16,48,10,161, 69,90,222,135,125,69,166,190,130,96,130,55,13,29,238,61,231,215,155,243,82,74,230,103,82,89,252,83,209,165,233,228,212,222,66,162,239,224,131,251,79,80,18,33,136,154,70,223,225,138,75,13,239,39,22,239,63,92,113,155,155,15,146,64,243,170,48,140,34,27, @@ -9038,10 +9038,10 @@ static const unsigned char temp_78ac36da[] = 133,212,250,251,240,134,191,185,236,26,30,27,107,26,174,31,92,181,157,187,187,60,209,250,43,46,229,76,162,246,213,61,220,204,102,80,127,56,237,56,55,116,123,140,90,61,232,175,184,148,113,1,219,238,30,14,187,134,199,163,195,158,223,237,138,235,103,110, 247,176,249,95,203,207,220,105,8,60,85,250,255,175,166,184,52,111,203,227,188,205,255,229,75,230,91,128,1,0,165,175,191,223,100,163,205,167,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_selected03_png = (const char*) temp_78ac36da; +const char* RadioButtons_selected03_png = (const char*) temp_binary_data_33; //================== RadioButtons_selected-04.png ================== -static const unsigned char temp_78ba4e5b[] = +static const unsigned char temp_binary_data_34[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,100,73,68,65,84,120,218,196,150,77,104,211,96,24,199,255,111,154,102,205,92,221,186,85,17,71,173,58,198,188,232,6,14,84,148,162,172,226,7,76,70,65,119,216,209,195,64,60,41,130,99,87,15,122,24,168,7,5,79,83,97,8,165,155,122, 17,199,16,25,58,61,104,81,118,152,173,171,19,183,22,109,221,154,146,164,31,107,154,248,38,21,81,147,94,180,235,2,239,75,194,147,252,127,255,231,125,222,143,144,174,246,29,159,177,78,23,187,127,187,219,123,177,219,85,115,240,200,155,52,88,98,35,224,234, @@ -9054,10 +9054,10 @@ static const unsigned char temp_78ba4e5b[] = 225,201,103,241,213,66,95,231,178,74,73,133,44,107,107,178,127,71,158,62,174,24,211,185,70,205,229,156,86,243,131,197,168,121,161,168,98,54,83,251,83,77,231,146,206,157,219,70,215,235,79,230,135,0,3,0,71,200,242,251,63,187,157,122,0,0,0,0,73,69,78,68, 174,66,96,130,0,0 }; -const char* RadioButtons_selected04_png = (const char*) temp_78ba4e5b; +const char* RadioButtons_selected04_png = (const char*) temp_binary_data_34; //================== RadioButtons_selected-05.png ================== -static const unsigned char temp_78c865dc[] = +static const unsigned char temp_binary_data_35[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,30,0,0,0,19,8,6,0,0,0,135,174,189,124,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,10,79,105,67,67,80,80,104,111,116,111,115,104,111,112,32,73,67,67,32,112,114,111,102,105,108,101,0, 0,120,218,157,83,103,84,83,233,22,61,247,222,244,66,75,136,128,148,75,111,82,21,8,32,82,66,139,128,20,145,38,42,33,9,16,74,136,33,161,217,21,81,193,17,69,69,4,27,200,160,136,3,142,142,128,140,21,81,44,12,138,10,216,7,228,33,162,142,131,163,136,138,202, 251,225,123,163,107,214,188,247,230,205,254,181,215,62,231,172,243,157,179,207,7,192,8,12,150,72,51,81,53,128,12,169,66,30,17,224,131,199,196,198,225,228,46,64,129,10,36,112,0,16,8,179,100,33,115,253,35,1,0,248,126,60,60,43,34,192,7,190,0,1,120,211,11, @@ -9108,10 +9108,10 @@ static const unsigned char temp_78c865dc[] = 67,47,42,109,196,133,131,158,216,185,173,106,221,105,147,89,82,137,21,26,39,18,154,254,235,201,213,60,226,64,151,202,198,52,99,235,6,155,222,129,127,54,50,165,90,172,177,249,59,150,208,89,45,165,141,110,69,109,250,195,137,253,157,172,168,141,30,48,99, 15,3,166,34,209,235,207,0,161,143,20,90,35,156,236,45,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_selected05_png = (const char*) temp_78c865dc; +const char* RadioButtons_selected05_png = (const char*) temp_binary_data_35; //================== RadioButtons_selected_over-01.png ================== -static const unsigned char temp_a1a89ec7[] = +static const unsigned char temp_binary_data_36[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,19,8,6,0,0,0,241,148,15,247,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,239,73,68,65,84,120,218,196,86,93,72,20,81,20,254,238,236,236,56,179,174,43,91,130,187,130,136,97,81,22,244,3,105,8,134,105,168,245,32,229,147,15,10,25,37,173,81,212,67,15,86,15,65,68,244,212,83,62,244,24,65,68,166,32,18, 132,63,69,17,82,61,20,171,65,81,216,139,144,238,34,106,59,59,251,51,51,247,118,103,86,130,220,137,149,86,182,129,195,12,115,206,61,223,119,190,57,247,204,37,140,49,4,131,193,75,213,91,188,251,240,31,46,145,131,223,80,138,164,129,211,117,85,82,169,34, @@ -9125,10 +9125,10 @@ static const unsigned char temp_a1a89ec7[] = 210,200,69,104,11,12,70,130,75,111,58,47,213,51,4,0,45,145,231,72,227,242,106,99,67,8,38,77,148,214,236,194,252,232,29,104,81,10,211,2,167,127,95,102,242,166,180,21,136,199,55,103,184,171,35,195,246,76,128,201,96,234,185,135,164,97,114,5,210,38,85,167, 34,110,212,151,24,155,244,143,219,120,49,86,15,144,64,32,112,130,63,143,52,87,40,40,47,236,113,0,95,227,156,192,218,137,168,105,171,226,238,226,127,38,185,208,39,162,95,2,12,0,137,200,31,90,212,72,119,82,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_selected_over01_png = (const char*) temp_a1a89ec7; +const char* RadioButtons_selected_over01_png = (const char*) temp_binary_data_36; //================== RadioButtons_selected_over-02.png ================== -static const unsigned char temp_a1b6b648[] = +static const unsigned char temp_binary_data_37[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,216,73,68,65,84,120,218,196,149,79,72,84,65,28,199,191,51,239,237,190,221,183,184,166,22,145,84,70,137,97,90,33,107,218,22,129,18,17,29,162,67,66,209,255,78,117,137,14,29,11,138,200,110,17,116,232,84,80,116,8,73,41,188,164, 93,182,63,104,148,34,149,186,176,22,37,122,200,63,152,171,187,179,239,173,251,254,52,111,246,80,235,110,82,107,232,240,230,49,204,252,230,247,249,205,124,103,126,67,130,91,202,31,96,153,138,188,110,165,255,116,83,213,234,37,7,183,14,142,67,46,81,101, @@ -9142,10 +9142,10 @@ static const unsigned char temp_a1b6b648[] = 152,175,120,22,147,161,155,152,126,23,130,33,206,65,238,121,14,87,54,121,150,74,104,139,72,214,60,247,176,246,86,140,116,182,65,45,41,130,30,157,134,153,180,97,25,88,240,254,59,92,217,48,45,48,246,31,94,138,152,141,217,169,169,116,251,47,220,57,92,161, 57,211,236,37,127,82,133,230,201,148,133,254,25,186,228,112,135,43,143,50,251,225,40,51,177,28,229,167,0,3,0,110,188,26,228,110,165,221,163,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_selected_over02_png = (const char*) temp_a1b6b648; +const char* RadioButtons_selected_over02_png = (const char*) temp_binary_data_37; //================== RadioButtons_selected_over-03.png ================== -static const unsigned char temp_a1c4cdc9[] = +static const unsigned char temp_binary_data_38[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,101,73,68,65,84,120,218,196,150,61,143,211,64,16,134,223,89,111,226,195,7,220,33,78,66,128,34,16,80,5,209,32,1,66,162,165,161,166,160,65,80,208,242,51,248,13,84,72,92,139,104,168,40,40,174,58,10,26,78,66,87,33,133,143,0,34, 137,20,146,216,107,39,142,215,203,172,147,226,108,135,128,41,114,43,37,78,188,51,243,236,188,51,187,54,221,108,94,122,142,67,26,178,177,117,252,193,221,203,167,86,14,126,185,223,129,60,233,73,220,56,99,86,14,223,249,36,33,133,67,112,143,136,242,44,21, @@ -9158,10 +9158,10 @@ static const unsigned char temp_a1c4cdc9[] = 233,51,62,35,150,31,110,188,153,144,140,121,129,186,80,115,61,175,185,138,254,243,233,48,250,71,191,5,102,89,205,39,124,122,125,24,138,149,63,82,45,87,182,149,217,110,43,125,40,111,50,191,5,24,0,98,67,27,130,54,13,67,66,0,0,0,0,73,69,78,68,174,66,96, 130,0,0 }; -const char* RadioButtons_selected_over03_png = (const char*) temp_a1c4cdc9; +const char* RadioButtons_selected_over03_png = (const char*) temp_binary_data_38; //================== RadioButtons_selected_over-04.png ================== -static const unsigned char temp_a1d2e54a[] = +static const unsigned char temp_binary_data_39[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,2,211,73,68,65,84,120,218,196,150,205,75,20,97,28,199,191,207,204,179,186,179,187,90,90,184,100,25,26,43,149,122,176,64,74,33,37,148,204,50,12,234,84,135,110,65,151,110,29,252,51,58,132,208,169,46,5,33,228,91,210,139,96,16, 145,93,180,178,14,97,104,33,42,235,186,235,174,59,179,187,243,246,60,61,179,43,184,57,219,69,86,125,96,102,96,158,121,158,207,247,247,250,12,105,109,8,61,193,62,13,90,115,184,252,206,205,198,224,158,131,7,127,132,65,15,249,40,206,85,243,61,135,79,46, @@ -9175,10 +9175,10 @@ static const unsigned char temp_a1d2e54a[] = 109,113,164,210,69,236,159,73,142,228,203,87,66,196,56,202,58,175,192,79,85,68,23,8,212,117,6,61,143,227,112,169,37,154,133,166,237,66,243,222,224,248,250,98,12,114,73,174,166,109,131,131,153,121,49,183,55,99,174,165,119,249,84,35,238,30,144,141,185, 110,50,204,38,164,61,63,82,29,46,93,212,248,211,69,205,222,151,63,153,191,2,12,0,199,181,70,142,38,155,205,86,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* RadioButtons_selected_over04_png = (const char*) temp_a1d2e54a; +const char* RadioButtons_selected_over04_png = (const char*) temp_binary_data_39; //================== RadioButtons_selected_over-05.png ================== -static const unsigned char temp_a1e0fccb[] = +static const unsigned char temp_binary_data_40[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,30,0,0,0,19,8,6,0,0,0,135,174,189,124,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,10,79,105,67,67,80,80,104,111,116,111,115,104,111,112,32,73,67,67,32,112,114,111,102,105,108,101,0, 0,120,218,157,83,103,84,83,233,22,61,247,222,244,66,75,136,128,148,75,111,82,21,8,32,82,66,139,128,20,145,38,42,33,9,16,74,136,33,161,217,21,81,193,17,69,69,4,27,200,160,136,3,142,142,128,140,21,81,44,12,138,10,216,7,228,33,162,142,131,163,136,138,202, 251,225,123,163,107,214,188,247,230,205,254,181,215,62,231,172,243,157,179,207,7,192,8,12,150,72,51,81,53,128,12,169,66,30,17,224,131,199,196,198,225,228,46,64,129,10,36,112,0,16,8,179,100,33,115,253,35,1,0,248,126,60,60,43,34,192,7,190,0,1,120,211,11, @@ -9231,10 +9231,10 @@ static const unsigned char temp_a1e0fccb[] = 210,38,160,217,252,135,89,141,144,218,222,213,127,69,126,47,211,166,159,227,102,123,180,167,147,214,1,202,239,5,92,241,228,72,133,253,94,128,218,110,134,159,111,55,205,200,111,32,127,13,0,111,180,58,50,205,148,146,75,0,0,0,0,73,69,78,68,174,66,96,130, 0,0 }; -const char* RadioButtons_selected_over05_png = (const char*) temp_a1e0fccb; +const char* RadioButtons_selected_over05_png = (const char*) temp_binary_data_40; //================== noise_wave.png ================== -static const unsigned char temp_2ada9d3c[] = +static const unsigned char temp_binary_data_41[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,4,101,0,0,2,30,8,6,0,0,0,18,223,178,102,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,76,229,73,68,65,84,120,218,236,221,235,149,21,55,214,48,96,13,203,255,221,95,4,212,68,64,59,2,202,17,24,71,48,77,4,47,142,192,77,4,120,34,160,39,2,112,4,20,17,24,34,112,57,2,67,4,243,181,56,167,135,6,250,114,46,117,145,180, 159,103,173,90,96,3,125,78,237,146,84,210,46,149,244,143,4,0,0,0,172,229,228,242,56,189,60,186,237,113,155,225,242,248,112,121,188,19,50,0,0,0,128,253,229,36,204,217,229,241,242,242,248,243,242,248,239,1,199,155,203,227,60,109,146,57,0,0,0,0,220,225, @@ -9516,10 +9516,10 @@ static const unsigned char temp_2ada9d3c[] = 73,212,228,227,97,186,249,117,163,15,151,199,251,203,99,220,30,131,176,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 176,175,255,47,192,0,205,180,140,11,223,168,97,120,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* noise_wave_png = (const char*) temp_2ada9d3c; +const char* noise_wave_png = (const char*) temp_binary_data_41; //================== saw_wave.png ================== -static const unsigned char temp_fad5260d[] = +static const unsigned char temp_binary_data_42[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,4,180,0,0,2,143,8,6,0,0,0,116,54,147,247,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,41,190,73,68,65,84,120,218,236,221,141,149,212,102,186,174,225,103,38,129,211,206,64,206,0,71,176,69,6,56,130,45,34,216,16,1,69,4,248,68,208,58,17,152,12,90,19,1,236,8,80,6,144,129,143,100,53,174,6,131,145,212,245,163,159, 235,90,235,93,94,158,25,51,174,183,170,87,21,55,42,125,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,242, @@ -9661,10 +9661,10 @@ static const unsigned char temp_fad5260d[] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,231,254,191,0,3,0,11,98,146,161,132,82,43,233,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* saw_wave_png = (const char*) temp_fad5260d; +const char* saw_wave_png = (const char*) temp_binary_data_42; //================== sine_wave.png ================== -static const unsigned char temp_eb0332c3[] = +static const unsigned char temp_binary_data_43[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,4,180,0,0,2,171,8,6,0,0,0,232,11,212,215,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,49,204,73,68,65,84,120,218,236,221,175,151,36,199,149,40,224,24,205,3,122,200,13,197,156,203,196,92,102,102,78,49,9,109,137,237,178,52,123,102,229,191,96,211,232,157,69,101,182,176,198,200,107,84,18,178,141,170,133,158,88, 143,153,30,170,22,211,67,51,98,54,242,203,112,85,107,122,52,61,221,153,89,249,43,50,191,239,156,123,122,108,31,219,163,232,200,31,113,51,238,141,15,2,0,0,0,0,36,228,3,67,0,0,0,0,64,74,36,180,0,0,0,0,72,138,132,22,0,0,0,0,73,145,208,2,0,0,0,32,41,18,90, @@ -9837,10 +9837,10 @@ static const unsigned char temp_eb0332c3[] = 104,1,0,0,0,144,20,9,45,0,0,0,0,146,34,161,5,0,0,0,64,82,36,180,0,0,0,0,72,138,132,22,0,0,0,0,73,145,208,2,0,0,0,32,41,18,90,0,0,0,0,36,69,66,11,0,0,0,128,164,72,104,1,0,0,0,144,20,9,45,0,0,0,0,146,242,255,5,24,0,142,248,78,14,98,33,228,71,0,0,0,0,73, 69,78,68,174,66,96,130,0,0 }; -const char* sine_wave_png = (const char*) temp_eb0332c3; +const char* sine_wave_png = (const char*) temp_binary_data_43; //================== square_wave.png ================== -static const unsigned char temp_727226f3[] = +static const unsigned char temp_binary_data_44[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,4,164,0,0,2,171,8,6,0,0,0,207,165,85,63,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,23,205,73,68,65,84,120,218,236,221,63,146,148,199,1,198,225,214,138,64,153,55,116,230,225,4,94,157,128,209,9,88,78,160,37,115,6,156,0,113,2,164,208,17,67,228,114,36,136,28,50,202,156,105,201,148,121,148,217,25,206,164,204, 221,254,190,45,244,7,73,32,161,151,233,238,231,169,234,98,237,64,59,221,223,4,83,191,237,238,41,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -9911,10 +9911,10 @@ static const unsigned char temp_727226f3[] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,14,253,79,128,1,0,153,2,27,8,33,213,49,244,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* square_wave_png = (const char*) temp_727226f3; +const char* square_wave_png = (const char*) temp_binary_data_44; //================== triangle_wave.png ================== -static const unsigned char temp_3825ab28[] = +static const unsigned char temp_binary_data_45[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,4,172,0,0,2,113,8,6,0,0,0,111,215,42,130,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,32,173,73,68,65,84,120,218,236,221,251,145,85,199,122,198,225,214,113,2,100,224,9,129,12,204,201,128,16,94,101,64,8,100,160,16,80,6,132,128,28,1,114,4,216,17,72,25,224,189,197,12,12,48,151,125,89,151,175,187,159,167,170, 171,252,199,41,219,181,46,189,250,251,157,13,180,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -10023,10 +10023,10 @@ static const unsigned char temp_3825ab28[] = 253,85,213,43,183,1,0,0,0,128,31,189,110,95,226,209,150,161,42,46,59,0,0,0,0,207,121,117,88,239,219,122,161,234,248,107,174,184,204,0,0,0,0,156,235,248,247,73,165,125,137,87,215,254,171,130,199,72,245,166,125,249,203,222,1,88,193,47,46,1,0,0,48,161,151, 183,235,230,176,254,235,153,255,236,127,31,214,223,135,245,231,97,253,225,210,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,239,255,5,24,0,2,125,7,137,153,101,243,194,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* triangle_wave_png = (const char*) temp_3825ab28; +const char* triangle_wave_png = (const char*) temp_binary_data_45; //================== wifi.png ================== -static const unsigned char temp_4168e213[] = +static const unsigned char temp_binary_data_46[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,1,64,0,0,0,247,8,6,0,0,0,108,40,141,211,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,12,225,73,68,65,84,120,218,236,221,139,117,27,199,21,128,225,81,5,102,7,70,7,70,7,130,43,8,58,8,84,65,144,10,12,87,0,167,2,56,21,192,169,128,84,5,164,42,32,93,1,169,10,28,236,209,64,130,104,62,0,98,95,51,247,251,207,185, 135,142,148,248,132,187,51,255,222,59,51,187,55,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,242,206,37,64,75,92,236,98,250,196,159,79,243,223,157,202,205,46,30,30,253,217,67,254,115,128,0,209,57,123,121,77,114,52, @@ -10076,10 +10076,10 @@ static const unsigned char temp_4168e213[] = 242,3,16,82,130,228,7,32,164,4,201,15,64,72,9,146,31,128,144,18,36,63,0,33,37,72,126,0,66,74,144,252,0,132,148,32,249,1,8,41,65,242,3,16,82,130,228,7,32,164,4,201,15,64,72,9,146,31,128,144,18,36,63,0,33,37,72,126,0,66,74,144,252,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,45,252,95,128,1,0,166,155,18,218,219,72,225,153,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* wifi_png = (const char*) temp_4168e213; +const char* wifi_png = (const char*) temp_binary_data_46; //================== SourceDrop.png ================== -static const unsigned char temp_77043408[] = +static const unsigned char temp_binary_data_47[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,154,0,0,2,209,8,6,0,0,0,163,255,186,145,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,24,15,73,68,65,84,120,218,236,157,49,118,219,58,155,64,225,252,234,199,59,120,76,55,93,244,78,154,233,66,173,192,206,10,34,55,108,99,175,64,210,10,226,180,106,44,175,32,206,10,68,151,83,228,68,89,65,152,106,202,167,233,166, 203,224,139,32,255,50,4,82,36,69,144,50,113,239,57,140,98,218,164,36,232,234,3,64,2,31,206,212,137,144,36,201,185,126,24,234,45,214,219,95,122,139,244,38,251,190,206,231,243,105,195,207,181,52,207,211,36,35,253,58,211,6,95,163,188,190,101,133,67,178, @@ -10169,10 +10169,10 @@ static const unsigned char temp_77043408[] = 26,164,75,209,72,34,211,28,63,74,138,38,66,201,96,214,123,31,215,202,78,82,52,153,53,99,58,3,113,133,118,4,84,67,196,90,153,246,239,131,61,5,46,8,209,140,108,43,83,16,183,166,173,177,173,50,183,237,162,119,53,170,131,166,73,95,128,80,217,182,35,165,183, 255,53,143,89,151,98,217,252,191,0,3,0,92,224,0,25,78,103,130,40,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* SourceDrop_png = (const char*) temp_77043408; +const char* SourceDrop_png = (const char*) temp_binary_data_47; //================== DefaultDataSource.png ================== -static const unsigned char temp_1f71843e[] = +static const unsigned char temp_binary_data_48[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,14,0,0,2,14,8,6,0,0,0,208,187,133,57,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,54,204,73,68,65,84,120,218,236,221,219,113,27,71,211,198,241,33,234,187,55,51,240,58,2,193,55,46,251,74,171,8,76,69,32,40,2,137,17,144,140,64,100,4,130,34,16,20,129,86,87,118,249,198,80,4,239,58,3,58,131,15,35,244,90,16,5,146, 56,236,244,116,207,252,127,85,44,218,239,129,0,22,187,179,207,246,156,78,2,0,247,254,248,243,175,118,227,95,167,171,159,211,141,127,255,65,254,179,109,78,31,248,239,182,185,93,253,44,31,248,239,63,221,249,247,165,252,127,190,252,127,127,251,245,151,37, @@ -10371,10 +10371,10 @@ static const unsigned char temp_1f71843e[] = 124,222,248,247,158,65,139,0,193,1,192,126,193,98,168,90,68,177,106,209,200,63,55,193,126,229,98,168,20,12,255,252,175,252,243,80,45,88,50,72,17,32,56,0,200,27,52,54,181,59,252,95,159,110,249,207,134,39,255,135,220,74,24,248,166,114,64,133,0,40,207,255, 11,48,0,82,9,189,51,228,54,205,183,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* DefaultDataSource_png = (const char*) temp_1f71843e; +const char* DefaultDataSource_png = (const char*) temp_binary_data_48; //================== FileReaderIcon.png ================== -static const unsigned char temp_745ce456[] = +static const unsigned char temp_binary_data_49[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,43,0,0,2,165,8,6,0,0,0,10,20,172,128,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,13,207,73,68,65,84,120,218,236,221,193,109,219,102,24,199,97,167,224,189,217,160,26,33,39,130,60,69,222,32,27,68,217,160,157,64,244,6,217,32,242,4,237,6,97,78,36,120,202,8,234,6,206,4,233,171,194,45,138,130,110,42,231,179,244, 138,126,30,224,3,115,50,132,191,232,234,87,17,65,94,12,227,244,245,234,219,250,171,60,62,37,122,45,159,227,220,101,121,45,109,83,223,93,1,192,194,188,248,159,177,2,23,27,113,113,190,216,69,220,2,98,5,96,9,17,183,143,243,123,162,215,178,207,242,90,34, @@ -10420,10 +10420,10 @@ static const unsigned char temp_745ce456[] = 127,254,79,195,56,173,205,12,0,100,141,149,205,253,1,0,120,20,143,129,0,0,177,2,0,32,86,0,0,177,2,0,32,86,0,0,196,10,0,32,86,0,0,196,10,0,32,86,0,0,196,10,0,128,88,1,0,196,10,0,128,88,1,0,196,10,0,128,88,1,0,16,43,0,128,88,1,0,16,43,0,128,88,1,0,16,43, 0,0,98,5,0,16,43,0,0,167,240,135,0,3,0,22,72,102,252,69,115,49,232,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* FileReaderIcon_png = (const char*) temp_745ce456; +const char* FileReaderIcon_png = (const char*) temp_binary_data_49; //================== IntanIcon.png ================== -static const unsigned char temp_18972d[] = +static const unsigned char temp_binary_data_50[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,88,0,0,2,88,8,6,0,0,0,190,102,152,220,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,63,109,73,68,65,84,120,218,236,221,219,117,219,198,162,6,96,56,43,239,155,187,130,208,21,88,126,201,74,158,76,87,96,185,2,83,21,88,170,64,82,5,146,43,16,93,129,229,10,68,63,37,43,47,86,42,48,83,193,81,42,216,7,99,13,19,154, 230,5,131,27,1,242,251,214,194,102,182,197,203,112,0,2,63,102,6,131,39,89,71,252,246,251,31,71,249,67,88,134,249,242,44,95,6,241,79,71,11,255,13,0,240,144,47,247,11,255,253,103,190,204,194,191,253,250,203,207,247,93,40,224,147,29,7,170,227,124,121,145, @@ -10654,10 +10654,10 @@ static const unsigned char temp_18972d[] = 105,213,2,0,154,55,203,151,219,124,121,95,245,202,192,206,6,172,21,97,107,148,47,175,178,199,150,45,115,105,1,0,85,133,57,172,66,144,250,152,47,211,54,67,85,39,2,214,154,192,53,140,97,235,167,236,223,22,174,97,166,181,11,0,248,215,44,46,243,255,254,43, 134,170,217,174,2,213,178,255,23,96,0,208,173,232,3,246,227,153,225,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* IntanIcon_png = (const char*) temp_18972d; +const char* IntanIcon_png = (const char*) temp_binary_data_50; //================== muteoff.png ================== -static const unsigned char temp_bf129135[] = +static const unsigned char temp_binary_data_51[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,165,0,0,0,119,8,6,0,0,0,98,221,128,254,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,7,127,73,68,65,84,120,218,236,93,237,141,219,56,16,157,13,238,255,169,131,232,42,136,58,136,174,130,115,42,136,182,3,167,130,213,85,160,77,5,74,7,218,171,64,238,64,78,5,187,169,192,123,21,236,217,128,140,91,24,182,197,33, 135,228,144,126,15,32,2,36,182,98,146,79,111,190,248,65,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,23,119,24,2,49,52,251,246,215,190,21,251,182,221,183,239,251,246,130,97,1,98,224,64,194,105,223,222,78,218,110,223,86,24,30,64,11,33,223,183,10,195,4,132,194,106, @@ -10688,10 +10688,10 @@ static const unsigned char temp_bf129135[] = 182,24,66,64,147,106,154,30,135,13,0,193,84,19,102,16,80,165,154,3,134,10,8,141,134,174,87,64,96,182,129,104,196,220,157,81,72,16,210,2,119,24,2,81,172,102,34,110,136,127,239,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,224,63,1,6,0,199,74,112, 188,78,34,32,245,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* muteoff_png = (const char*) temp_bf129135; +const char* muteoff_png = (const char*) temp_binary_data_51; //================== muteon.png ================== -static const unsigned char temp_a3695c2f[] = +static const unsigned char temp_binary_data_52[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,165,0,0,0,119,8,6,0,0,0,98,221,128,254,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,5,175,73,68,65,84,120,218,236,157,225,113,219,54,20,128,41,95,7,144,39,40,51,65,153,9,66,79,80,101,130,72,19,84,158,32,242,4,106,38,176,55,80,58,129,212,9,228,78,32,101,2,187,19,176,192,9,185,178,172,34,63,146,32,240,32, 126,223,29,207,254,33,203,226,227,167,247,0,16,0,179,12,0,0,0,0,0,0,0,0,0,32,46,19,66,224,135,170,170,230,230,199,175,230,152,154,227,217,28,95,38,147,201,145,200,64,12,25,167,230,216,87,255,231,197,28,51,34,4,90,132,172,83,16,41,8,37,228,204,101,195, @@ -10716,10 +10716,10 @@ static const unsigned char temp_a3695c2f[] = 38,65,91,214,228,14,14,168,202,154,60,228,30,130,203,121,233,105,25,123,202,54,196,20,179,57,87,115,131,144,221,96,31,27,191,114,218,182,163,21,113,215,246,185,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,61,252,35,192,0,171,7,136,102,133,179,227,147,0,0,0, 0,73,69,78,68,174,66,96,130,0,0 }; -const char* muteon_png = (const char*) temp_a3695c2f; +const char* muteon_png = (const char*) temp_binary_data_52; //================== MergerA-01.png ================== -static const unsigned char temp_7677e5e[] = +static const unsigned char temp_binary_data_53[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,69,0,0,1,169,8,6,0,0,0,131,16,66,165,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,21,118,73,68,65,84,120,218,236,221,189,111,93,71,122,7,224,33,205,133,100,55,75,195,69,108,96,131,28,117,74,82,136,238,210,36,190,238,220,45,221,109,170,92,117,73,181,218,46,157,168,191,64,18,130,0,219,241,170,76,37,186,220, 138,87,221,22,73,72,45,16,239,166,226,81,103,87,146,58,17,145,172,204,240,156,107,82,50,181,226,199,189,119,230,156,243,60,192,64,194,98,23,246,190,188,31,63,190,243,158,153,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -10797,10 +10797,10 @@ static const unsigned char temp_7677e5e[] = 248,195,31,30,43,12,66,17,148,105,26,154,109,180,127,89,116,32,18,138,24,98,32,26,159,252,207,126,241,139,191,60,90,127,252,246,219,240,242,229,255,41,18,66,17,148,97,18,215,111,98,24,186,179,204,71,246,189,163,25,108,32,154,249,139,79,63,13,127,253, 55,127,27,254,251,191,254,83,48,66,40,130,124,82,39,232,183,113,253,99,12,67,15,114,28,238,248,255,2,12,0,160,41,104,168,212,59,220,159,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* MergerA01_png = (const char*) temp_7677e5e; +const char* MergerA01_png = (const char*) temp_binary_data_53; //================== MergerA-02.png ================== -static const unsigned char temp_77595df[] = +static const unsigned char temp_binary_data_54[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,69,0,0,1,169,8,6,0,0,0,131,16,66,165,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,21,221,73,68,65,84,120,218,236,221,207,143,220,229,125,192,241,199,6,20,145,3,24,113,104,14,84,76,14,68,42,145,98,71,109,165,68,106,203,112,171,0,41,246,49,39,236,219,70,171,85,234,191,0,175,170,168,205,41,187,26,141,58,55, 102,149,246,18,21,177,72,148,156,130,191,62,1,39,198,28,210,10,34,49,78,140,212,139,221,129,74,56,17,152,246,251,236,124,7,111,28,227,95,187,51,207,243,253,62,175,151,52,26,43,34,96,127,118,215,251,222,231,121,190,223,239,145,0,29,55,24,142,94,174,223, @@ -10880,10 +10880,10 @@ static const unsigned char temp_77595df[] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,7,243,255,2,12,0,244,180,87,201,128,90,137,162,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* MergerA02_png = (const char*) temp_77595df; +const char* MergerA02_png = (const char*) temp_binary_data_54; //================== MergerB-01.png ================== -static const unsigned char temp_6f48ab3d[] = +static const unsigned char temp_binary_data_55[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,69,0,0,1,169,8,6,0,0,0,131,16,66,165,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,22,71,73,68,65,84,120,218,236,221,193,110,92,215,125,192,225,35,195,64,150,97,158,160,147,39,16,253,4,30,111,219,2,161,159,32,163,29,1,130,144,252,4,146,94,160,148,58,24,100,18,47,56,68,187,106,211,74,6,28,103,149,112,180,106, 187,210,72,221,217,5,60,130,232,165,108,102,99,67,128,1,245,156,185,119,68,202,162,109,82,26,206,57,247,222,239,67,47,168,4,110,98,255,69,101,126,60,231,220,123,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -10964,10 +10964,10 @@ static const unsigned char temp_6f48ab3d[] = 90,156,33,18,68,136,34,40,194,36,100,60,119,36,138,232,108,24,185,195,12,81,4,197,154,214,113,52,21,69,112,201,254,254,31,254,241,240,179,63,125,218,55,9,68,17,20,109,30,214,248,42,17,81,68,23,221,138,215,77,99,64,20,65,99,164,67,217,31,94,246,182,218, 187,230,76,199,92,248,185,69,0,100,51,13,107,124,50,182,40,66,16,1,80,154,73,200,240,14,53,81,132,32,2,160,4,199,117,12,221,205,117,247,217,255,11,48,0,4,145,141,135,126,85,212,174,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* MergerB01_png = (const char*) temp_6f48ab3d; +const char* MergerB01_png = (const char*) temp_binary_data_55; //================== MergerB-02.png ================== -static const unsigned char temp_6f56c2be[] = +static const unsigned char temp_binary_data_56[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,69,0,0,1,169,8,6,0,0,0,131,16,66,165,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97, 100,121,113,201,101,60,0,0,18,109,73,68,65,84,120,218,236,221,253,109,28,199,25,192,225,161,97,88,127,90,174,192,231,10,76,87,224,77,5,145,42,48,85,129,237,10,44,86,16,177,2,31,43,200,165,2,175,42,200,169,2,173,42,200,249,207,0,1,156,27,237,94,72,43, 148,248,117,119,243,238,204,243,0,7,25,65,128,216,175,201,240,199,249,216,253,60,65,253,126,221,126,206,140,129,154,125,254,228,137,33,48,87,203,237,231,242,63,255,254,119,95,252,251,200,191,11,4,17,0,71,182,153,98,232,98,27,67,67,152,95,46,252,123,65, @@ -11034,10 +11034,10 @@ static const unsigned char temp_6f56c2be[] = 0,0,68,17,0,128,40,2,0,16,69,0,0,162,8,0,64,20,1,0,136,34,0,0,81,4,0,32,138,0,0,68,17,0,128,40,2,0,16,69,0,0,162,8,0,64,20,1,0,136,34,0,0,81,4,0,32,138,0,0,68,17,0,128,40,2,0,16,69,0,0,162,8,0,64,20,1,0,136,34,0,0,81,4,0,32,138,0,0,68,17,0,128,40,2,0, 16,69,0,0,162,8,0,64,20,1,0,136,34,0,0,81,4,0,32,138,0,0,68,17,0,128,40,2,0,16,69,0,0,181,248,175,0,3,0,94,88,236,111,126,120,246,51,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* MergerB02_png = (const char*) temp_6f56c2be; +const char* MergerB02_png = (const char*) temp_binary_data_56; //================== PipelineA-01.png ================== -static const unsigned char temp_a2c576c6[] = +static const unsigned char temp_binary_data_57[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,49,0,0,1,169,8,6,0,0,0,124,178,103,71,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,20,161,73,68,65,84,120,218,236,221,77,118,220,198,213,6,224,82,236,121,232,89,102,129,87,96,122,5,106,175,192,202,10,212,90,129,153,21,136,90,1,165,21,176,51,250,134,162,71,223,80,240,10,68,205,50,19,178,2,209,179,204,148, 174,3,180,217,110,145,84,55,8,116,85,1,207,115,78,29,57,63,199,150,47,33,246,203,91,183,80,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,22,190,81,2,128,193,124,92,175,39,235,245,239,245,250,175,114,0,0,165,248,220,173,79,235, @@ -11112,10 +11112,10 @@ static const unsigned char temp_a2c576c6[] = 0,132,24,40,73,28,224,125,17,12,242,2,8,49,80,88,128,137,91,72,6,121,1,132,24,40,138,147,72,0,66,12,20,25,96,174,148,1,64,136,129,210,2,204,74,25,0,132,24,40,201,107,1,6,96,222,188,39,134,18,197,240,242,66,25,0,230,77,39,6,1,6,0,33,6,4,24,0,132,24,16, 96,0,16,98,16,96,0,152,154,111,149,128,204,57,70,13,192,157,116,98,16,96,0,40,210,255,4,24,0,27,12,93,110,21,245,184,159,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* PipelineA01_png = (const char*) temp_a2c576c6; +const char* PipelineA01_png = (const char*) temp_binary_data_57; //================== PipelineA-02.png ================== -static const unsigned char temp_a2d38e47[] = +static const unsigned char temp_binary_data_58[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,49,0,0,1,169,8,6,0,0,0,124,178,103,71,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,25,18,73,68,65,84,120,218,236,221,191,114,28,199,157,192,241,214,149,67,178,12,101,167,75,52,10,200,84,36,93,133,2,18,97,121,14,233,42,83,145,228,72,96,157,157,185,78,160,99,203,36,66,251,2,146,137,47,228,224,94,64,240,19, 104,20,1,133,132,208,19,104,239,9,4,63,1,111,154,59,123,128,36,252,217,157,253,51,221,51,159,79,213,214,74,182,69,139,63,146,139,47,122,122,166,67,8,225,173,151,87,74,175,91,183,111,191,125,93,254,207,15,71,199,39,247,2,0,92,225,189,230,11,7,36,225,206, @@ -11207,10 +11207,10 @@ static const unsigned char temp_a2d38e47[] = 25,5,136,24,128,212,157,133,243,243,140,198,198,1,34,6,32,117,49,88,28,9,0,34,6,32,27,85,152,172,186,28,26,5,136,24,128,28,148,77,188,156,26,5,136,24,128,212,77,143,4,40,237,119,1,17,3,144,131,24,44,251,110,145,6,17,3,144,139,170,137,151,202,40,64,196, 0,228,160,12,142,4,0,17,3,144,137,24,44,142,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,240,127,2,12,0,195,72,32,13,219,83,201,41,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* PipelineA02_png = (const char*) temp_a2d38e47; +const char* PipelineA02_png = (const char*) temp_binary_data_58; //================== PipelineB-01.png ================== -static const unsigned char temp_aa6a3a5[] = +static const unsigned char temp_binary_data_59[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,49,0,0,1,169,8,6,0,0,0,124,178,103,71,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,23,202,73,68,65,84,120,218,236,221,191,111,164,199,125,192,225,177,99,56,141,4,159,75,167,241,186,184,107,69,157,1,130,108,196,85,107,5,208,165,58,5,72,34,30,98,215,186,75,109,231,142,165,227,66,199,198,46,245,242,47,16, 13,196,85,18,248,149,155,93,108,99,10,112,106,189,174,148,146,130,221,43,239,104,223,21,87,247,131,183,187,220,221,153,217,247,121,128,5,37,69,145,229,239,209,224,231,102,230,125,39,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200, @@ -11297,10 +11297,10 @@ static const unsigned char temp_aa6a3a5[] = 175,127,249,203,162,231,100,4,12,0,223,240,55,237,231,137,49,144,218,31,254,240,73,248,235,95,255,18,14,14,14,5,12,0,34,134,178,252,239,159,254,20,254,239,243,207,195,221,31,223,13,223,253,238,223,206,254,114,124,140,250,196,116,0,120,145,47,125,124, 114,250,220,190,115,231,203,255,250,239,255,249,114,52,158,28,251,159,39,0,47,243,255,2,12,0,38,140,193,224,172,166,247,238,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* PipelineB01_png = (const char*) temp_aa6a3a5; +const char* PipelineB01_png = (const char*) temp_binary_data_59; //================== PipelineB-02.png ================== -static const unsigned char temp_ab4bb26[] = +static const unsigned char temp_binary_data_60[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,49,0,0,1,169,8,6,0,0,0,124,178,103,71,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101, 97,100,121,113,201,101,60,0,0,20,155,73,68,65,84,120,218,236,221,189,122,28,71,118,6,224,162,54,217,141,4,101,155,169,121,5,132,50,103,28,101,206,22,190,130,29,101,206,12,103,206,22,186,2,72,87,192,209,21,16,190,2,54,51,103,4,51,109,132,118,182,142,72, 101,206,184,93,238,30,99,22,4,64,204,95,119,157,238,247,125,158,122,160,213,15,151,60,232,25,124,83,117,170,234,89,74,233,83,130,242,124,108,199,247,237,184,86,10,0,238,243,76,136,161,240,32,243,67,59,174,148,2,0,33,134,136,114,144,89,41,3,0,66,12,130, @@ -11375,107 +11375,7 @@ static const unsigned char temp_ab4bb26[] = 228,45,210,23,73,191,11,0,16,36,196,184,18,0,0,8,21,98,242,146,209,66,105,1,128,8,33,38,247,187,92,38,253,46,0,64,144,16,227,74,0,0,32,84,136,201,253,46,103,202,7,0,68,9,49,185,223,229,84,217,0,128,8,33,102,125,37,64,165,92,0,64,132,16,179,238,119,1, 0,8,17,98,114,191,203,66,105,0,128,40,33,198,149,0,0,64,24,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,241,119,1,6,0,159,157,76,71,98,187,78,10,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* PipelineB02_png = (const char*) temp_ab4bb26; - -//================== FPGAOutputEditor.cpp ================== -static const unsigned char temp_86d96cc9[] = -"/*\r\n" -" ------------------------------------------------------------------\r\n" -"\r\n" -" This file is part of the Open Ephys GUI\r\n" -" Copyright (C) 2013 Open Ephys\r\n" -"\r\n" -" ------------------------------------------------------------------\r\n" -"\r\n" -" This program is free software: you can redistribute it and/or modify\r\n" -" it under the terms of the GNU General Public License as published by\r\n" -" the Free Software Foundation, either version 3 of the License, or\r\n" -" (at your option) any later version.\r\n" -"\r\n" -" This program is distributed in the hope that it will be useful,\r\n" -" but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n" -" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n" -" GNU General Public License for more details.\r\n" -"\r\n" -" You should have received a copy of the GNU General Public License\r\n" -" along with this program. If not, see <http://www.gnu.org/licenses/>.\r\n" -"\r\n" -"*/\r\n" -"\r\n" -"\r\n" -"#include \"FPGAOutputEditor.h\"\r\n" -"#include <stdio.h>\r\n" -"\r\n" -"\r\n" -"FPGAOutputEditor::FPGAOutputEditor(GenericProcessor* parentNode, bool useDefaultParameterEditors=true)\r\n" -" : GenericEditor(parentNode, useDefaultParameterEditors)\r\n" -"\r\n" -"{\r\n" -"\r\n" -" accumulator = 0;\r\n" -"\r\n" -" desiredWidth = 180;\r\n" -"\r\n" -" // Image im;\r\n" -" // im = ImageCache::getFromMemory (BinaryData::OpenEphysBoardLogoBlack_png,\r\n" -" // \t\t\t\t\t\t\t\tBinaryData::OpenEphysBoardLogoBlack_pngSize);\r\n" -"\r\n" -" // icon = new ImageIcon(im);\r\n" -" // addAndMakeVisible(icon);\r\n" -" // icon->setBounds(15,15,120,120);\r\n" -"\r\n" -" // icon->setOpacity(0.3f);\r\n" -"\r\n" -"}\r\n" -"\r\n" -"FPGAOutputEditor::~FPGAOutputEditor()\r\n" -"{\r\n" -" deleteAllChildren();\r\n" -"}\r\n" -"\r\n" -"void FPGAOutputEditor::receivedEvent()\r\n" -"{\r\n" -"\r\n" -" //icon->setOpacity(0.8f);\r\n" -" //startTimer(50);\r\n" -"\r\n" -"}\r\n" -"\r\n" -"void FPGAOutputEditor::timerCallback()\r\n" -"{\r\n" -"\r\n" -" repaint();\r\n" -"\r\n" -" accumulator++;\r\n" -"\r\n" -" if (isFading)\r\n" -" {\r\n" -"\r\n" -" if (accumulator > 15.0)\r\n" -" {\r\n" -" stopTimer();\r\n" -" isFading = false;\r\n" -" }\r\n" -"\r\n" -" }\r\n" -" else\r\n" -" {\r\n" -"\r\n" -" if (accumulator < 10.0)\r\n" -" {\r\n" -" icon->setOpacity(0.8f-(0.05*float(accumulator)));\r\n" -" accumulator++;\r\n" -" }\r\n" -" else\r\n" -" {\r\n" -" icon->setOpacity(0.3f);\r\n" -" stopTimer();\r\n" -" accumulator = 0;\r\n" -" }\r\n" -" }\r\n" -"}"; - -const char* FPGAOutputEditor_cpp = (const char*) temp_86d96cc9; +const char* PipelineB02_png = (const char*) temp_binary_data_60; const char* getNamedResource (const char*, int&) throw(); @@ -11549,7 +11449,6 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw case 0x921654eb: numBytes = 6533; return PipelineA02_png; case 0xc6ee78ab: numBytes = 6205; return PipelineB01_png; case 0xc6fc902c: numBytes = 5390; return PipelineB02_png; - case 0x10173ef6: numBytes = 2213; return FPGAOutputEditor_cpp; default: break; } @@ -11557,4 +11456,69 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw return 0; } +const char* namedResourceList[] = +{ + "cpmonoblackserialized", + "cpmonoboldserialized", + "cpmonoextralightserialized", + "cpmonolightserialized", + "cpmonoplainserialized", + "BebasNeue_otf", + "cpmono_bold_otf", + "cpmono_extra_light_otf", + "cpmono_light_otf", + "cpmono_plain_otf", + "misobold_ttf", + "misolight_ttf", + "misoregular_ttf", + "misoserialized", + "nordic_ttf", + "ostrich_ttf", + "silkscreenserialized", + "silkscreen_ttf", + "ArduinoIcon_png", + "OpenEphysBoardLogoBlack_png", + "OpenEphysBoardLogoGray_png", + "RadioButtons01_png", + "RadioButtons02_png", + "RadioButtons03_png", + "RadioButtons04_png", + "RadioButtons05_png", + "RadioButtons_neutral01_png", + "RadioButtons_neutral02_png", + "RadioButtons_neutral03_png", + "RadioButtons_neutral04_png", + "RadioButtons_neutral05_png", + "RadioButtons_selected01_png", + "RadioButtons_selected02_png", + "RadioButtons_selected03_png", + "RadioButtons_selected04_png", + "RadioButtons_selected05_png", + "RadioButtons_selected_over01_png", + "RadioButtons_selected_over02_png", + "RadioButtons_selected_over03_png", + "RadioButtons_selected_over04_png", + "RadioButtons_selected_over05_png", + "noise_wave_png", + "saw_wave_png", + "sine_wave_png", + "square_wave_png", + "triangle_wave_png", + "wifi_png", + "SourceDrop_png", + "DefaultDataSource_png", + "FileReaderIcon_png", + "IntanIcon_png", + "muteoff_png", + "muteon_png", + "MergerA01_png", + "MergerA02_png", + "MergerB01_png", + "MergerB02_png", + "PipelineA01_png", + "PipelineA02_png", + "PipelineB01_png", + "PipelineB02_png" +}; + } diff --git a/JuceLibraryCode/BinaryData.h b/JuceLibraryCode/BinaryData.h index b6c82ef55a1f7e065b1adbaf8a6daabcee92673a..287561eccbf5ff6f884f85a7dfe9f7fa63dc1ce7 100644 --- a/JuceLibraryCode/BinaryData.h +++ b/JuceLibraryCode/BinaryData.h @@ -4,6 +4,9 @@ */ +#ifndef BINARYDATA_H_21121582_INCLUDED +#define BINARYDATA_H_21121582_INCLUDED + namespace BinaryData { extern const char* cpmonoblackserialized; @@ -189,10 +192,15 @@ namespace BinaryData extern const char* PipelineB02_png; const int PipelineB02_pngSize = 5390; - extern const char* FPGAOutputEditor_cpp; - const int FPGAOutputEditor_cppSize = 2213; + // Points to the start of a list of resource names. + extern const char* namedResourceList[]; + + // Number of elements in the namedResourceList array. + const int namedResourceListSize = 61; // If you provide the name of one of the binary resource variables above, this function will // return the corresponding data and its size (or a null pointer if the name isn't found). const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw(); } + +#endif diff --git a/JuceLibraryCode/JuceHeader.h b/JuceLibraryCode/JuceHeader.h index d485ec655040dde16c984a9d2e4653b0de7a962b..617c29dff5a689fb338598cf7b3ede9ba3fce126 100644 --- a/JuceLibraryCode/JuceHeader.h +++ b/JuceLibraryCode/JuceHeader.h @@ -39,8 +39,8 @@ namespace ProjectInfo { const char* const projectName = "open-ephys"; - const char* const versionString = "0.3.1"; - const int versionNumber = 0x301; + const char* const versionString = "0.3.2"; + const int versionNumber = 0x302; } #endif // __APPHEADERFILE_YNSYIRR__ diff --git a/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioDataConverters.cpp b/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioDataConverters.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioDataConverters.h b/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioDataConverters.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.cpp b/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h b/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp b/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h b/JuceLibraryCode/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/effects/juce_Decibels.h b/JuceLibraryCode/modules/juce_audio_basics/effects/juce_Decibels.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/effects/juce_IIRFilter.cpp b/JuceLibraryCode/modules/juce_audio_basics/effects/juce_IIRFilter.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/effects/juce_IIRFilter.h b/JuceLibraryCode/modules/juce_audio_basics/effects/juce_IIRFilter.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp b/JuceLibraryCode/modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h b/JuceLibraryCode/modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/effects/juce_Reverb.h b/JuceLibraryCode/modules/juce_audio_basics/effects/juce_Reverb.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.cpp b/JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.h b/JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.mm b/JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/juce_module_info b/JuceLibraryCode/modules/juce_audio_basics/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiBuffer.cpp b/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiBuffer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiBuffer.h b/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiBuffer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiFile.cpp b/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiFile.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiFile.h b/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiFile.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp b/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiKeyboardState.h b/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiKeyboardState.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiMessage.cpp b/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiMessage.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiMessage.h b/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiMessage.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp b/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiMessageSequence.h b/JuceLibraryCode/modules/juce_audio_basics/midi/juce_MidiMessageSequence.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_AudioSource.h b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_AudioSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_BufferingAudioSource.h b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_BufferingAudioSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.cpp b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_MixerAudioSource.h b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_MixerAudioSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_PositionableAudioSource.h b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_PositionableAudioSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ReverbAudioSource.h b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ReverbAudioSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.h b/JuceLibraryCode/modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp b/JuceLibraryCode/modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_basics/synthesisers/juce_Synthesiser.h b/JuceLibraryCode/modules/juce_audio_basics/synthesisers/juce_Synthesiser.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h b/JuceLibraryCode/modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/audio_cd/juce_AudioCDReader.cpp b/JuceLibraryCode/modules/juce_audio_devices/audio_cd/juce_AudioCDReader.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/audio_cd/juce_AudioCDReader.h b/JuceLibraryCode/modules/juce_audio_devices/audio_cd/juce_AudioCDReader.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp b/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h b/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp b/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODevice.h b/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODevice.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp b/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h b/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h b/JuceLibraryCode/modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/juce_audio_devices.cpp b/JuceLibraryCode/modules/juce_audio_devices/juce_audio_devices.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/juce_audio_devices.h b/JuceLibraryCode/modules/juce_audio_devices/juce_audio_devices.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/juce_audio_devices.mm b/JuceLibraryCode/modules/juce_audio_devices/juce_audio_devices.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/juce_module_info b/JuceLibraryCode/modules/juce_audio_devices/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiInput.h b/JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiInput.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp b/JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h b/JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp b/JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiOutput.h b/JuceLibraryCode/modules/juce_audio_devices/midi_io/juce_MidiOutput.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_MidiDataConcatenator.h b/JuceLibraryCode/modules/juce_audio_devices/native/juce_MidiDataConcatenator.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_android_Audio.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_android_Audio.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_android_Midi.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_android_Midi.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_android_OpenSL.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_android_OpenSL.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_ios_Audio.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_ios_Audio.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_ALSA.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_ALSA.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_AudioCDReader.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_AudioCDReader.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_JackAudio.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_JackAudio.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_Midi.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_linux_Midi.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm b/JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_AudioCDReader.mm b/JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_AudioCDReader.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_ASIO.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_ASIO.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_AudioCDReader.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_AudioCDReader.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_DirectSound.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_DirectSound.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_Midi.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_Midi.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp b/JuceLibraryCode/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp b/JuceLibraryCode/modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h b/JuceLibraryCode/modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp b/JuceLibraryCode/modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_devices/sources/juce_AudioTransportSource.h b/JuceLibraryCode/modules/juce_audio_devices/sources/juce_AudioTransportSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/Flac Licence.txt b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/Flac Licence.txt old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/all.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/all.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/alloc.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/alloc.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/assert.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/assert.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/callback.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/callback.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/compat.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/compat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/endswap.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/endswap.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/export.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/export.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/format.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/format.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/bitmath.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/bitmath.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/bitreader.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/bitreader.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/bitwriter.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/bitwriter.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/crc.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/crc.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/fixed.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/fixed.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/float.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/float.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/format.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/format.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/all.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/all.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitmath.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitmath.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitreader.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitreader.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitwriter.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitwriter.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/crc.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/crc.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/fixed.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/fixed.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/float.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/float.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/format.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/format.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/lpc.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/lpc.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/md5.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/md5.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/memory.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/memory.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/metadata.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/metadata.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/stream_encoder_framing.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/stream_encoder_framing.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/window.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/private/window.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/all.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/all.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_decoder.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_decoder.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_encoder.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_encoder.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/lpc_flac.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/lpc_flac.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/md5.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/md5.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/memory.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/memory.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/stream_decoder.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/stream_decoder.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder_framing.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder_framing.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/window_flac.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/libFLAC/window_flac.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/metadata.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/metadata.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/ordinals.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/ordinals.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/stream_decoder.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/stream_decoder.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/stream_encoder.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/flac/stream_encoder.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_MP3AudioFormat.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_MP3AudioFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WavAudioFormat.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WavAudioFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/Ogg Vorbis Licence.txt b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/Ogg Vorbis Licence.txt old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/bitwise.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/bitwise.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/codec.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/codec.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/config_types.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/config_types.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/framing.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/framing.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/AUTHORS b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/AUTHORS old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/CHANGES b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/CHANGES old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/COPYING b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/COPYING old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/README b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/README old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/analysis.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/analysis.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/backends.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/backends.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/block.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/block.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_51.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_51.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_stereo.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_stereo.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/floor/floor_books.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/floor/floor_books.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/uncoupled/res_books_uncoupled.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/uncoupled/res_books_uncoupled.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codec_internal.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codec_internal.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor0.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor0.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor1.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor1.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/highlevel.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/highlevel.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/info.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/info.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup_data.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup_data.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mapping0.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mapping0.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/masking.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/masking.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/misc.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/misc.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/floor_all.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/floor_all.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_11.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_11.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_16.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_16.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_8.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_8.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_16.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_16.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44p51.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44p51.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44u.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44u.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_8.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_8.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_11.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_11.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_16.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_16.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_22.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_22.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_32.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_32.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44p51.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44p51.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44u.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44u.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_8.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_8.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_X.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_X.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/os.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/os.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/res0.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/res0.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/scales.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/scales.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/sharedbook.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/sharedbook.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/synthesis.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/synthesis.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisenc.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisenc.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisfile.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisfile.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.c b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/ogg.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/ogg.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/os_types.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/os_types.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/vorbisenc.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/vorbisenc.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h b/JuceLibraryCode/modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormat.cpp b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormat.h b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatManager.cpp b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatManager.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatManager.h b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatManager.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReader.cpp b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReader.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReader.h b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReader.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReaderSource.h b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatReaderSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatWriter.h b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioFormatWriter.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioSubsectionReader.h b/JuceLibraryCode/modules/juce_audio_formats/format/juce_AudioSubsectionReader.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp b/JuceLibraryCode/modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.h b/JuceLibraryCode/modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/format/juce_MemoryMappedAudioFormatReader.h b/JuceLibraryCode/modules/juce_audio_formats/format/juce_MemoryMappedAudioFormatReader.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/juce_audio_formats.cpp b/JuceLibraryCode/modules/juce_audio_formats/juce_audio_formats.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/juce_audio_formats.h b/JuceLibraryCode/modules/juce_audio_formats/juce_audio_formats.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/juce_audio_formats.mm b/JuceLibraryCode/modules/juce_audio_formats/juce_audio_formats.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/juce_module_info b/JuceLibraryCode/modules/juce_audio_formats/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/sampler/juce_Sampler.cpp b/JuceLibraryCode/modules/juce_audio_formats/sampler/juce_Sampler.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_formats/sampler/juce_Sampler.h b/JuceLibraryCode/modules/juce_audio_formats/sampler/juce_Sampler.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp b/JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormat.h b/JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp b/JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h b/JuceLibraryCode/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h b/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm b/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp b/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h b/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VST3Common.h b/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VST3Common.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VST3Headers.h b/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VST3Headers.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp b/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h b/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h b/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp b/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h b/JuceLibraryCode/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.cpp b/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.h b/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.mm b/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/juce_module_info b/JuceLibraryCode/modules/juce_audio_processors/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioPlayHead.h b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioPlayHead.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessor.h b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessor.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorListener.h b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_AudioProcessorListener.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_PluginDescription.cpp b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_PluginDescription.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/processors/juce_PluginDescription.h b/JuceLibraryCode/modules/juce_audio_processors/processors/juce_PluginDescription.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp b/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_KnownPluginList.h b/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_KnownPluginList.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp b/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h b/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp b/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginListComponent.h b/JuceLibraryCode/modules/juce_audio_processors/scanning/juce_PluginListComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp b/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h b/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp b/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnail.h b/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnail.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h b/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp b/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h b/JuceLibraryCode/modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp b/JuceLibraryCode/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h b/JuceLibraryCode/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/juce_audio_utils.cpp b/JuceLibraryCode/modules/juce_audio_utils/juce_audio_utils.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/juce_audio_utils.h b/JuceLibraryCode/modules/juce_audio_utils/juce_audio_utils.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/juce_audio_utils.mm b/JuceLibraryCode/modules/juce_audio_utils/juce_audio_utils.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/juce_module_info b/JuceLibraryCode/modules/juce_audio_utils/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp b/JuceLibraryCode/modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h b/JuceLibraryCode/modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_AbstractFifo.cpp b/JuceLibraryCode/modules/juce_core/containers/juce_AbstractFifo.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_AbstractFifo.h b/JuceLibraryCode/modules/juce_core/containers/juce_AbstractFifo.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_Array.h b/JuceLibraryCode/modules/juce_core/containers/juce_Array.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_ArrayAllocationBase.h b/JuceLibraryCode/modules/juce_core/containers/juce_ArrayAllocationBase.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_DynamicObject.cpp b/JuceLibraryCode/modules/juce_core/containers/juce_DynamicObject.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_DynamicObject.h b/JuceLibraryCode/modules/juce_core/containers/juce_DynamicObject.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_ElementComparator.h b/JuceLibraryCode/modules/juce_core/containers/juce_ElementComparator.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_HashMap.h b/JuceLibraryCode/modules/juce_core/containers/juce_HashMap.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_LinkedListPointer.h b/JuceLibraryCode/modules/juce_core/containers/juce_LinkedListPointer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_NamedValueSet.cpp b/JuceLibraryCode/modules/juce_core/containers/juce_NamedValueSet.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_NamedValueSet.h b/JuceLibraryCode/modules/juce_core/containers/juce_NamedValueSet.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_OwnedArray.h b/JuceLibraryCode/modules/juce_core/containers/juce_OwnedArray.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_PropertySet.cpp b/JuceLibraryCode/modules/juce_core/containers/juce_PropertySet.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_PropertySet.h b/JuceLibraryCode/modules/juce_core/containers/juce_PropertySet.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_ReferenceCountedArray.h b/JuceLibraryCode/modules/juce_core/containers/juce_ReferenceCountedArray.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_ScopedValueSetter.h b/JuceLibraryCode/modules/juce_core/containers/juce_ScopedValueSetter.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_SortedSet.h b/JuceLibraryCode/modules/juce_core/containers/juce_SortedSet.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_SparseSet.h b/JuceLibraryCode/modules/juce_core/containers/juce_SparseSet.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_Variant.cpp b/JuceLibraryCode/modules/juce_core/containers/juce_Variant.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/containers/juce_Variant.h b/JuceLibraryCode/modules/juce_core/containers/juce_Variant.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_DirectoryIterator.cpp b/JuceLibraryCode/modules/juce_core/files/juce_DirectoryIterator.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_DirectoryIterator.h b/JuceLibraryCode/modules/juce_core/files/juce_DirectoryIterator.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_File.cpp b/JuceLibraryCode/modules/juce_core/files/juce_File.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_File.h b/JuceLibraryCode/modules/juce_core/files/juce_File.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_FileFilter.cpp b/JuceLibraryCode/modules/juce_core/files/juce_FileFilter.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_FileFilter.h b/JuceLibraryCode/modules/juce_core/files/juce_FileFilter.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_FileInputStream.cpp b/JuceLibraryCode/modules/juce_core/files/juce_FileInputStream.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_FileInputStream.h b/JuceLibraryCode/modules/juce_core/files/juce_FileInputStream.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_FileOutputStream.cpp b/JuceLibraryCode/modules/juce_core/files/juce_FileOutputStream.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_FileOutputStream.h b/JuceLibraryCode/modules/juce_core/files/juce_FileOutputStream.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_FileSearchPath.cpp b/JuceLibraryCode/modules/juce_core/files/juce_FileSearchPath.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_FileSearchPath.h b/JuceLibraryCode/modules/juce_core/files/juce_FileSearchPath.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_MemoryMappedFile.h b/JuceLibraryCode/modules/juce_core/files/juce_MemoryMappedFile.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_TemporaryFile.cpp b/JuceLibraryCode/modules/juce_core/files/juce_TemporaryFile.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_TemporaryFile.h b/JuceLibraryCode/modules/juce_core/files/juce_TemporaryFile.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_WildcardFileFilter.cpp b/JuceLibraryCode/modules/juce_core/files/juce_WildcardFileFilter.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/files/juce_WildcardFileFilter.h b/JuceLibraryCode/modules/juce_core/files/juce_WildcardFileFilter.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/javascript/juce_JSON.cpp b/JuceLibraryCode/modules/juce_core/javascript/juce_JSON.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/javascript/juce_JSON.h b/JuceLibraryCode/modules/juce_core/javascript/juce_JSON.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.cpp b/JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.h b/JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/json/juce_JSON.cpp b/JuceLibraryCode/modules/juce_core/json/juce_JSON.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/json/juce_JSON.h b/JuceLibraryCode/modules/juce_core/json/juce_JSON.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/juce_core.cpp b/JuceLibraryCode/modules/juce_core/juce_core.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/juce_core.h b/JuceLibraryCode/modules/juce_core/juce_core.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/juce_core.mm b/JuceLibraryCode/modules/juce_core/juce_core.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/juce_module_info b/JuceLibraryCode/modules/juce_core/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/logging/juce_FileLogger.cpp b/JuceLibraryCode/modules/juce_core/logging/juce_FileLogger.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/logging/juce_FileLogger.h b/JuceLibraryCode/modules/juce_core/logging/juce_FileLogger.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/logging/juce_Logger.cpp b/JuceLibraryCode/modules/juce_core/logging/juce_Logger.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/logging/juce_Logger.h b/JuceLibraryCode/modules/juce_core/logging/juce_Logger.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/maths/juce_BigInteger.cpp b/JuceLibraryCode/modules/juce_core/maths/juce_BigInteger.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/maths/juce_BigInteger.h b/JuceLibraryCode/modules/juce_core/maths/juce_BigInteger.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/maths/juce_Expression.cpp b/JuceLibraryCode/modules/juce_core/maths/juce_Expression.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/maths/juce_Expression.h b/JuceLibraryCode/modules/juce_core/maths/juce_Expression.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/maths/juce_MathsFunctions.h b/JuceLibraryCode/modules/juce_core/maths/juce_MathsFunctions.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/maths/juce_Random.cpp b/JuceLibraryCode/modules/juce_core/maths/juce_Random.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/maths/juce_Random.h b/JuceLibraryCode/modules/juce_core/maths/juce_Random.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/maths/juce_Range.h b/JuceLibraryCode/modules/juce_core/maths/juce_Range.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_Atomic.h b/JuceLibraryCode/modules/juce_core/memory/juce_Atomic.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_ByteOrder.h b/JuceLibraryCode/modules/juce_core/memory/juce_ByteOrder.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_ContainerDeletePolicy.h b/JuceLibraryCode/modules/juce_core/memory/juce_ContainerDeletePolicy.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_HeapBlock.h b/JuceLibraryCode/modules/juce_core/memory/juce_HeapBlock.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_LeakedObjectDetector.h b/JuceLibraryCode/modules/juce_core/memory/juce_LeakedObjectDetector.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_Memory.h b/JuceLibraryCode/modules/juce_core/memory/juce_Memory.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_MemoryBlock.cpp b/JuceLibraryCode/modules/juce_core/memory/juce_MemoryBlock.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_MemoryBlock.h b/JuceLibraryCode/modules/juce_core/memory/juce_MemoryBlock.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_OptionalScopedPointer.h b/JuceLibraryCode/modules/juce_core/memory/juce_OptionalScopedPointer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_ReferenceCountedObject.h b/JuceLibraryCode/modules/juce_core/memory/juce_ReferenceCountedObject.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_ScopedPointer.h b/JuceLibraryCode/modules/juce_core/memory/juce_ScopedPointer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_SharedResourcePointer.h b/JuceLibraryCode/modules/juce_core/memory/juce_SharedResourcePointer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_Singleton.h b/JuceLibraryCode/modules/juce_core/memory/juce_Singleton.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/memory/juce_WeakReference.h b/JuceLibraryCode/modules/juce_core/memory/juce_WeakReference.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/misc/juce_Result.cpp b/JuceLibraryCode/modules/juce_core/misc/juce_Result.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/misc/juce_Result.h b/JuceLibraryCode/modules/juce_core/misc/juce_Result.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/misc/juce_Uuid.cpp b/JuceLibraryCode/modules/juce_core/misc/juce_Uuid.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/misc/juce_Uuid.h b/JuceLibraryCode/modules/juce_core/misc/juce_Uuid.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/misc/juce_WindowsRegistry.h b/JuceLibraryCode/modules/juce_core/misc/juce_WindowsRegistry.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/java/JuceAppActivity.java b/JuceLibraryCode/modules/juce_core/native/java/JuceAppActivity.java old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_BasicNativeHeaders.h b/JuceLibraryCode/modules/juce_core/native/juce_BasicNativeHeaders.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_android_Files.cpp b/JuceLibraryCode/modules/juce_core/native/juce_android_Files.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_android_JNIHelpers.h b/JuceLibraryCode/modules/juce_core/native/juce_android_JNIHelpers.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_android_Misc.cpp b/JuceLibraryCode/modules/juce_core/native/juce_android_Misc.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_android_Network.cpp b/JuceLibraryCode/modules/juce_core/native/juce_android_Network.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_android_SystemStats.cpp b/JuceLibraryCode/modules/juce_core/native/juce_android_SystemStats.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_android_Threads.cpp b/JuceLibraryCode/modules/juce_core/native/juce_android_Threads.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_linux_CommonFile.cpp b/JuceLibraryCode/modules/juce_core/native/juce_linux_CommonFile.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_linux_Files.cpp b/JuceLibraryCode/modules/juce_core/native/juce_linux_Files.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_linux_Network.cpp b/JuceLibraryCode/modules/juce_core/native/juce_linux_Network.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_linux_SystemStats.cpp b/JuceLibraryCode/modules/juce_core/native/juce_linux_SystemStats.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_linux_Threads.cpp b/JuceLibraryCode/modules/juce_core/native/juce_linux_Threads.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_mac_Files.mm b/JuceLibraryCode/modules/juce_core/native/juce_mac_Files.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_mac_Network.mm b/JuceLibraryCode/modules/juce_core/native/juce_mac_Network.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_mac_Strings.mm b/JuceLibraryCode/modules/juce_core/native/juce_mac_Strings.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_mac_SystemStats.mm b/JuceLibraryCode/modules/juce_core/native/juce_mac_SystemStats.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_mac_Threads.mm b/JuceLibraryCode/modules/juce_core/native/juce_mac_Threads.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_osx_ObjCHelpers.h b/JuceLibraryCode/modules/juce_core/native/juce_osx_ObjCHelpers.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_posix_NamedPipe.cpp b/JuceLibraryCode/modules/juce_core/native/juce_posix_NamedPipe.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_posix_SharedCode.h b/JuceLibraryCode/modules/juce_core/native/juce_posix_SharedCode.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_win32_ComSmartPtr.h b/JuceLibraryCode/modules/juce_core/native/juce_win32_ComSmartPtr.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_win32_Files.cpp b/JuceLibraryCode/modules/juce_core/native/juce_win32_Files.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_win32_Network.cpp b/JuceLibraryCode/modules/juce_core/native/juce_win32_Network.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_win32_Registry.cpp b/JuceLibraryCode/modules/juce_core/native/juce_win32_Registry.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_win32_SystemStats.cpp b/JuceLibraryCode/modules/juce_core/native/juce_win32_SystemStats.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/native/juce_win32_Threads.cpp b/JuceLibraryCode/modules/juce_core/native/juce_win32_Threads.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/network/juce_IPAddress.cpp b/JuceLibraryCode/modules/juce_core/network/juce_IPAddress.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/network/juce_IPAddress.h b/JuceLibraryCode/modules/juce_core/network/juce_IPAddress.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/network/juce_MACAddress.cpp b/JuceLibraryCode/modules/juce_core/network/juce_MACAddress.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/network/juce_MACAddress.h b/JuceLibraryCode/modules/juce_core/network/juce_MACAddress.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/network/juce_NamedPipe.cpp b/JuceLibraryCode/modules/juce_core/network/juce_NamedPipe.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/network/juce_NamedPipe.h b/JuceLibraryCode/modules/juce_core/network/juce_NamedPipe.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/network/juce_Socket.cpp b/JuceLibraryCode/modules/juce_core/network/juce_Socket.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/network/juce_Socket.h b/JuceLibraryCode/modules/juce_core/network/juce_Socket.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/network/juce_URL.cpp b/JuceLibraryCode/modules/juce_core/network/juce_URL.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/network/juce_URL.h b/JuceLibraryCode/modules/juce_core/network/juce_URL.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_BufferedInputStream.cpp b/JuceLibraryCode/modules/juce_core/streams/juce_BufferedInputStream.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_BufferedInputStream.h b/JuceLibraryCode/modules/juce_core/streams/juce_BufferedInputStream.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_FileInputSource.cpp b/JuceLibraryCode/modules/juce_core/streams/juce_FileInputSource.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_FileInputSource.h b/JuceLibraryCode/modules/juce_core/streams/juce_FileInputSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_InputSource.h b/JuceLibraryCode/modules/juce_core/streams/juce_InputSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_InputStream.cpp b/JuceLibraryCode/modules/juce_core/streams/juce_InputStream.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_InputStream.h b/JuceLibraryCode/modules/juce_core/streams/juce_InputStream.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_MemoryInputStream.cpp b/JuceLibraryCode/modules/juce_core/streams/juce_MemoryInputStream.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_MemoryInputStream.h b/JuceLibraryCode/modules/juce_core/streams/juce_MemoryInputStream.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_MemoryOutputStream.cpp b/JuceLibraryCode/modules/juce_core/streams/juce_MemoryOutputStream.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_MemoryOutputStream.h b/JuceLibraryCode/modules/juce_core/streams/juce_MemoryOutputStream.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_OutputStream.cpp b/JuceLibraryCode/modules/juce_core/streams/juce_OutputStream.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_OutputStream.h b/JuceLibraryCode/modules/juce_core/streams/juce_OutputStream.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_SubregionStream.cpp b/JuceLibraryCode/modules/juce_core/streams/juce_SubregionStream.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/streams/juce_SubregionStream.h b/JuceLibraryCode/modules/juce_core/streams/juce_SubregionStream.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/system/juce_PlatformDefs.h b/JuceLibraryCode/modules/juce_core/system/juce_PlatformDefs.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/system/juce_StandardHeader.h b/JuceLibraryCode/modules/juce_core/system/juce_StandardHeader.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/system/juce_SystemStats.cpp b/JuceLibraryCode/modules/juce_core/system/juce_SystemStats.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/system/juce_SystemStats.h b/JuceLibraryCode/modules/juce_core/system/juce_SystemStats.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/system/juce_TargetPlatform.h b/JuceLibraryCode/modules/juce_core/system/juce_TargetPlatform.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_CharPointer_ASCII.h b/JuceLibraryCode/modules/juce_core/text/juce_CharPointer_ASCII.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF16.h b/JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF16.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF32.h b/JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF32.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF8.h b/JuceLibraryCode/modules/juce_core/text/juce_CharPointer_UTF8.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_CharacterFunctions.cpp b/JuceLibraryCode/modules/juce_core/text/juce_CharacterFunctions.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_CharacterFunctions.h b/JuceLibraryCode/modules/juce_core/text/juce_CharacterFunctions.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_Identifier.cpp b/JuceLibraryCode/modules/juce_core/text/juce_Identifier.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_Identifier.h b/JuceLibraryCode/modules/juce_core/text/juce_Identifier.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_LocalisedStrings.cpp b/JuceLibraryCode/modules/juce_core/text/juce_LocalisedStrings.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_LocalisedStrings.h b/JuceLibraryCode/modules/juce_core/text/juce_LocalisedStrings.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_NewLine.h b/JuceLibraryCode/modules/juce_core/text/juce_NewLine.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_String.cpp b/JuceLibraryCode/modules/juce_core/text/juce_String.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_String.h b/JuceLibraryCode/modules/juce_core/text/juce_String.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_StringArray.cpp b/JuceLibraryCode/modules/juce_core/text/juce_StringArray.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_StringArray.h b/JuceLibraryCode/modules/juce_core/text/juce_StringArray.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_StringPairArray.cpp b/JuceLibraryCode/modules/juce_core/text/juce_StringPairArray.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_StringPairArray.h b/JuceLibraryCode/modules/juce_core/text/juce_StringPairArray.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_StringPool.cpp b/JuceLibraryCode/modules/juce_core/text/juce_StringPool.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_StringPool.h b/JuceLibraryCode/modules/juce_core/text/juce_StringPool.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_StringRef.h b/JuceLibraryCode/modules/juce_core/text/juce_StringRef.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_TextDiff.cpp b/JuceLibraryCode/modules/juce_core/text/juce_TextDiff.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/text/juce_TextDiff.h b/JuceLibraryCode/modules/juce_core/text/juce_TextDiff.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_ChildProcess.cpp b/JuceLibraryCode/modules/juce_core/threads/juce_ChildProcess.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_ChildProcess.h b/JuceLibraryCode/modules/juce_core/threads/juce_ChildProcess.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_CriticalSection.h b/JuceLibraryCode/modules/juce_core/threads/juce_CriticalSection.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_DynamicLibrary.h b/JuceLibraryCode/modules/juce_core/threads/juce_DynamicLibrary.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_HighResolutionTimer.cpp b/JuceLibraryCode/modules/juce_core/threads/juce_HighResolutionTimer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_HighResolutionTimer.h b/JuceLibraryCode/modules/juce_core/threads/juce_HighResolutionTimer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_InterProcessLock.h b/JuceLibraryCode/modules/juce_core/threads/juce_InterProcessLock.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_Process.h b/JuceLibraryCode/modules/juce_core/threads/juce_Process.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_ReadWriteLock.cpp b/JuceLibraryCode/modules/juce_core/threads/juce_ReadWriteLock.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_ReadWriteLock.h b/JuceLibraryCode/modules/juce_core/threads/juce_ReadWriteLock.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_ScopedLock.h b/JuceLibraryCode/modules/juce_core/threads/juce_ScopedLock.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_ScopedReadLock.h b/JuceLibraryCode/modules/juce_core/threads/juce_ScopedReadLock.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_ScopedWriteLock.h b/JuceLibraryCode/modules/juce_core/threads/juce_ScopedWriteLock.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_SpinLock.h b/JuceLibraryCode/modules/juce_core/threads/juce_SpinLock.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_Thread.cpp b/JuceLibraryCode/modules/juce_core/threads/juce_Thread.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_Thread.h b/JuceLibraryCode/modules/juce_core/threads/juce_Thread.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_ThreadLocalValue.h b/JuceLibraryCode/modules/juce_core/threads/juce_ThreadLocalValue.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_ThreadPool.cpp b/JuceLibraryCode/modules/juce_core/threads/juce_ThreadPool.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_ThreadPool.h b/JuceLibraryCode/modules/juce_core/threads/juce_ThreadPool.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_TimeSliceThread.cpp b/JuceLibraryCode/modules/juce_core/threads/juce_TimeSliceThread.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_TimeSliceThread.h b/JuceLibraryCode/modules/juce_core/threads/juce_TimeSliceThread.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/threads/juce_WaitableEvent.h b/JuceLibraryCode/modules/juce_core/threads/juce_WaitableEvent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/time/juce_PerformanceCounter.cpp b/JuceLibraryCode/modules/juce_core/time/juce_PerformanceCounter.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/time/juce_PerformanceCounter.h b/JuceLibraryCode/modules/juce_core/time/juce_PerformanceCounter.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/time/juce_RelativeTime.cpp b/JuceLibraryCode/modules/juce_core/time/juce_RelativeTime.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/time/juce_RelativeTime.h b/JuceLibraryCode/modules/juce_core/time/juce_RelativeTime.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/time/juce_Time.cpp b/JuceLibraryCode/modules/juce_core/time/juce_Time.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/time/juce_Time.h b/JuceLibraryCode/modules/juce_core/time/juce_Time.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/unit_tests/juce_UnitTest.cpp b/JuceLibraryCode/modules/juce_core/unit_tests/juce_UnitTest.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/unit_tests/juce_UnitTest.h b/JuceLibraryCode/modules/juce_core/unit_tests/juce_UnitTest.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/xml/juce_XmlDocument.cpp b/JuceLibraryCode/modules/juce_core/xml/juce_XmlDocument.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/xml/juce_XmlDocument.h b/JuceLibraryCode/modules/juce_core/xml/juce_XmlDocument.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.cpp b/JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.h b/JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp b/JuceLibraryCode/modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/juce_GZIPCompressorOutputStream.h b/JuceLibraryCode/modules/juce_core/zip/juce_GZIPCompressorOutputStream.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp b/JuceLibraryCode/modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/juce_GZIPDecompressorInputStream.h b/JuceLibraryCode/modules/juce_core/zip/juce_GZIPDecompressorInputStream.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/juce_ZipFile.cpp b/JuceLibraryCode/modules/juce_core/zip/juce_ZipFile.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/juce_ZipFile.h b/JuceLibraryCode/modules/juce_core/zip/juce_ZipFile.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/README b/JuceLibraryCode/modules/juce_core/zip/zlib/README old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/adler32.c b/JuceLibraryCode/modules/juce_core/zip/zlib/adler32.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/compress.c b/JuceLibraryCode/modules/juce_core/zip/zlib/compress.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/crc32.c b/JuceLibraryCode/modules/juce_core/zip/zlib/crc32.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/crc32.h b/JuceLibraryCode/modules/juce_core/zip/zlib/crc32.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/deflate.c b/JuceLibraryCode/modules/juce_core/zip/zlib/deflate.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/deflate.h b/JuceLibraryCode/modules/juce_core/zip/zlib/deflate.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/infback.c b/JuceLibraryCode/modules/juce_core/zip/zlib/infback.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/inffast.c b/JuceLibraryCode/modules/juce_core/zip/zlib/inffast.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/inffast.h b/JuceLibraryCode/modules/juce_core/zip/zlib/inffast.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/inffixed.h b/JuceLibraryCode/modules/juce_core/zip/zlib/inffixed.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/inflate.c b/JuceLibraryCode/modules/juce_core/zip/zlib/inflate.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/inflate.h b/JuceLibraryCode/modules/juce_core/zip/zlib/inflate.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/inftrees.c b/JuceLibraryCode/modules/juce_core/zip/zlib/inftrees.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/inftrees.h b/JuceLibraryCode/modules/juce_core/zip/zlib/inftrees.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/trees.c b/JuceLibraryCode/modules/juce_core/zip/zlib/trees.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/trees.h b/JuceLibraryCode/modules/juce_core/zip/zlib/trees.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/uncompr.c b/JuceLibraryCode/modules/juce_core/zip/zlib/uncompr.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/zconf.h b/JuceLibraryCode/modules/juce_core/zip/zlib/zconf.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/zconf.in.h b/JuceLibraryCode/modules/juce_core/zip/zlib/zconf.in.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/zlib.h b/JuceLibraryCode/modules/juce_core/zip/zlib/zlib.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/zutil.c b/JuceLibraryCode/modules/juce_core/zip/zlib/zutil.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_core/zip/zlib/zutil.h b/JuceLibraryCode/modules/juce_core/zip/zlib/zutil.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/encryption/juce_BlowFish.cpp b/JuceLibraryCode/modules/juce_cryptography/encryption/juce_BlowFish.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/encryption/juce_BlowFish.h b/JuceLibraryCode/modules/juce_cryptography/encryption/juce_BlowFish.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/encryption/juce_Primes.cpp b/JuceLibraryCode/modules/juce_cryptography/encryption/juce_Primes.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/encryption/juce_Primes.h b/JuceLibraryCode/modules/juce_cryptography/encryption/juce_Primes.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/encryption/juce_RSAKey.cpp b/JuceLibraryCode/modules/juce_cryptography/encryption/juce_RSAKey.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/encryption/juce_RSAKey.h b/JuceLibraryCode/modules/juce_cryptography/encryption/juce_RSAKey.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/hashing/juce_MD5.cpp b/JuceLibraryCode/modules/juce_cryptography/hashing/juce_MD5.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/hashing/juce_MD5.h b/JuceLibraryCode/modules/juce_cryptography/hashing/juce_MD5.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/hashing/juce_SHA256.cpp b/JuceLibraryCode/modules/juce_cryptography/hashing/juce_SHA256.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/hashing/juce_SHA256.h b/JuceLibraryCode/modules/juce_cryptography/hashing/juce_SHA256.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/juce_cryptography.cpp b/JuceLibraryCode/modules/juce_cryptography/juce_cryptography.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/juce_cryptography.h b/JuceLibraryCode/modules/juce_cryptography/juce_cryptography.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/juce_cryptography.mm b/JuceLibraryCode/modules/juce_cryptography/juce_cryptography.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_cryptography/juce_module_info b/JuceLibraryCode/modules/juce_cryptography/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp b/JuceLibraryCode/modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/app_properties/juce_ApplicationProperties.h b/JuceLibraryCode/modules/juce_data_structures/app_properties/juce_ApplicationProperties.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp b/JuceLibraryCode/modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/app_properties/juce_PropertiesFile.h b/JuceLibraryCode/modules/juce_data_structures/app_properties/juce_PropertiesFile.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/juce_data_structures.cpp b/JuceLibraryCode/modules/juce_data_structures/juce_data_structures.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/juce_data_structures.h b/JuceLibraryCode/modules/juce_data_structures/juce_data_structures.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/juce_data_structures.mm b/JuceLibraryCode/modules/juce_data_structures/juce_data_structures.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/juce_module_info b/JuceLibraryCode/modules/juce_data_structures/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoManager.cpp b/JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoManager.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoManager.h b/JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoManager.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoableAction.h b/JuceLibraryCode/modules/juce_data_structures/undomanager/juce_UndoableAction.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/values/juce_Value.cpp b/JuceLibraryCode/modules/juce_data_structures/values/juce_Value.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/values/juce_Value.h b/JuceLibraryCode/modules/juce_data_structures/values/juce_Value.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTree.cpp b/JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTree.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTree.h b/JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTree.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp b/JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionBroadcaster.h b/JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionBroadcaster.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionListener.h b/JuceLibraryCode/modules/juce_events/broadcasters/juce_ActionListener.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/broadcasters/juce_AsyncUpdater.cpp b/JuceLibraryCode/modules/juce_events/broadcasters/juce_AsyncUpdater.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/broadcasters/juce_AsyncUpdater.h b/JuceLibraryCode/modules/juce_events/broadcasters/juce_AsyncUpdater.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp b/JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeBroadcaster.h b/JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeBroadcaster.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeListener.h b/JuceLibraryCode/modules/juce_events/broadcasters/juce_ChangeListener.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/broadcasters/juce_ListenerList.h b/JuceLibraryCode/modules/juce_events/broadcasters/juce_ListenerList.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp b/JuceLibraryCode/modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/interprocess/juce_ConnectedChildProcess.h b/JuceLibraryCode/modules/juce_events/interprocess/juce_ConnectedChildProcess.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnection.cpp b/JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnection.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnection.h b/JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnection.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp b/JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnectionServer.h b/JuceLibraryCode/modules/juce_events/interprocess/juce_InterprocessConnectionServer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/juce_events.cpp b/JuceLibraryCode/modules/juce_events/juce_events.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/juce_events.h b/JuceLibraryCode/modules/juce_events/juce_events.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/juce_events.mm b/JuceLibraryCode/modules/juce_events/juce_events.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/juce_module_info b/JuceLibraryCode/modules/juce_events/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_ApplicationBase.cpp b/JuceLibraryCode/modules/juce_events/messages/juce_ApplicationBase.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_ApplicationBase.h b/JuceLibraryCode/modules/juce_events/messages/juce_ApplicationBase.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_CallbackMessage.h b/JuceLibraryCode/modules/juce_events/messages/juce_CallbackMessage.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_DeletedAtShutdown.cpp b/JuceLibraryCode/modules/juce_events/messages/juce_DeletedAtShutdown.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_DeletedAtShutdown.h b/JuceLibraryCode/modules/juce_events/messages/juce_DeletedAtShutdown.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_Initialisation.h b/JuceLibraryCode/modules/juce_events/messages/juce_Initialisation.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_Message.h b/JuceLibraryCode/modules/juce_events/messages/juce_Message.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_MessageListener.cpp b/JuceLibraryCode/modules/juce_events/messages/juce_MessageListener.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_MessageListener.h b/JuceLibraryCode/modules/juce_events/messages/juce_MessageListener.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.cpp b/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.h b/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_NotificationType.h b/JuceLibraryCode/modules/juce_events/messages/juce_NotificationType.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/native/juce_ScopedXLock.h b/JuceLibraryCode/modules/juce_events/native/juce_ScopedXLock.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/native/juce_android_Messaging.cpp b/JuceLibraryCode/modules/juce_events/native/juce_android_Messaging.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/native/juce_ios_MessageManager.mm b/JuceLibraryCode/modules/juce_events/native/juce_ios_MessageManager.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/native/juce_linux_Messaging.cpp b/JuceLibraryCode/modules/juce_events/native/juce_linux_Messaging.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/native/juce_mac_MessageManager.mm b/JuceLibraryCode/modules/juce_events/native/juce_mac_MessageManager.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/native/juce_osx_MessageQueue.h b/JuceLibraryCode/modules/juce_events/native/juce_osx_MessageQueue.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/native/juce_win32_HiddenMessageWindow.h b/JuceLibraryCode/modules/juce_events/native/juce_win32_HiddenMessageWindow.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/native/juce_win32_Messaging.cpp b/JuceLibraryCode/modules/juce_events/native/juce_win32_Messaging.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/timers/juce_MultiTimer.cpp b/JuceLibraryCode/modules/juce_events/timers/juce_MultiTimer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/timers/juce_MultiTimer.h b/JuceLibraryCode/modules/juce_events/timers/juce_MultiTimer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/timers/juce_Timer.cpp b/JuceLibraryCode/modules/juce_events/timers/juce_Timer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_events/timers/juce_Timer.h b/JuceLibraryCode/modules/juce_events/timers/juce_Timer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/colour/juce_Colour.cpp b/JuceLibraryCode/modules/juce_graphics/colour/juce_Colour.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/colour/juce_Colour.h b/JuceLibraryCode/modules/juce_graphics/colour/juce_Colour.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/colour/juce_ColourGradient.cpp b/JuceLibraryCode/modules/juce_graphics/colour/juce_ColourGradient.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/colour/juce_ColourGradient.h b/JuceLibraryCode/modules/juce_graphics/colour/juce_ColourGradient.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/colour/juce_Colours.cpp b/JuceLibraryCode/modules/juce_graphics/colour/juce_Colours.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/colour/juce_Colours.h b/JuceLibraryCode/modules/juce_graphics/colour/juce_Colours.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/colour/juce_FillType.cpp b/JuceLibraryCode/modules/juce_graphics/colour/juce_FillType.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/colour/juce_FillType.h b/JuceLibraryCode/modules/juce_graphics/colour/juce_FillType.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h b/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/contexts/juce_GraphicsContext.cpp b/JuceLibraryCode/modules/juce_graphics/contexts/juce_GraphicsContext.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/contexts/juce_GraphicsContext.h b/JuceLibraryCode/modules/juce_graphics/contexts/juce_GraphicsContext.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h b/JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp b/JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h b/JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp b/JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h b/JuceLibraryCode/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/effects/juce_DropShadowEffect.cpp b/JuceLibraryCode/modules/juce_graphics/effects/juce_DropShadowEffect.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/effects/juce_DropShadowEffect.h b/JuceLibraryCode/modules/juce_graphics/effects/juce_DropShadowEffect.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/effects/juce_GlowEffect.cpp b/JuceLibraryCode/modules/juce_graphics/effects/juce_GlowEffect.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/effects/juce_GlowEffect.h b/JuceLibraryCode/modules/juce_graphics/effects/juce_GlowEffect.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/effects/juce_ImageEffectFilter.h b/JuceLibraryCode/modules/juce_graphics/effects/juce_ImageEffectFilter.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_AttributedString.cpp b/JuceLibraryCode/modules/juce_graphics/fonts/juce_AttributedString.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_AttributedString.h b/JuceLibraryCode/modules/juce_graphics/fonts/juce_AttributedString.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_CustomTypeface.cpp b/JuceLibraryCode/modules/juce_graphics/fonts/juce_CustomTypeface.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_CustomTypeface.h b/JuceLibraryCode/modules/juce_graphics/fonts/juce_CustomTypeface.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_Font.cpp b/JuceLibraryCode/modules/juce_graphics/fonts/juce_Font.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_Font.h b/JuceLibraryCode/modules/juce_graphics/fonts/juce_Font.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_GlyphArrangement.cpp b/JuceLibraryCode/modules/juce_graphics/fonts/juce_GlyphArrangement.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_GlyphArrangement.h b/JuceLibraryCode/modules/juce_graphics/fonts/juce_GlyphArrangement.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_TextLayout.cpp b/JuceLibraryCode/modules/juce_graphics/fonts/juce_TextLayout.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_TextLayout.h b/JuceLibraryCode/modules/juce_graphics/fonts/juce_TextLayout.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_Typeface.cpp b/JuceLibraryCode/modules/juce_graphics/fonts/juce_Typeface.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/fonts/juce_Typeface.h b/JuceLibraryCode/modules/juce_graphics/fonts/juce_Typeface.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_AffineTransform.cpp b/JuceLibraryCode/modules/juce_graphics/geometry/juce_AffineTransform.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_AffineTransform.h b/JuceLibraryCode/modules/juce_graphics/geometry/juce_AffineTransform.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_BorderSize.h b/JuceLibraryCode/modules/juce_graphics/geometry/juce_BorderSize.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_EdgeTable.cpp b/JuceLibraryCode/modules/juce_graphics/geometry/juce_EdgeTable.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_EdgeTable.h b/JuceLibraryCode/modules/juce_graphics/geometry/juce_EdgeTable.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_Line.h b/JuceLibraryCode/modules/juce_graphics/geometry/juce_Line.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_Path.cpp b/JuceLibraryCode/modules/juce_graphics/geometry/juce_Path.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_Path.h b/JuceLibraryCode/modules/juce_graphics/geometry/juce_Path.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_PathIterator.cpp b/JuceLibraryCode/modules/juce_graphics/geometry/juce_PathIterator.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_PathIterator.h b/JuceLibraryCode/modules/juce_graphics/geometry/juce_PathIterator.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_PathStrokeType.cpp b/JuceLibraryCode/modules/juce_graphics/geometry/juce_PathStrokeType.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_PathStrokeType.h b/JuceLibraryCode/modules/juce_graphics/geometry/juce_PathStrokeType.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_Point.h b/JuceLibraryCode/modules/juce_graphics/geometry/juce_Point.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_Rectangle.h b/JuceLibraryCode/modules/juce_graphics/geometry/juce_Rectangle.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_RectangleList.cpp b/JuceLibraryCode/modules/juce_graphics/geometry/juce_RectangleList.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/geometry/juce_RectangleList.h b/JuceLibraryCode/modules/juce_graphics/geometry/juce_RectangleList.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/README b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/README old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/cderror.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/cderror.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/changes to libjpeg for JUCE.txt b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/changes to libjpeg for JUCE.txt old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcapimin.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcapimin.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcapistd.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcapistd.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jccoefct.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jccoefct.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jccolor.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jccolor.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcdctmgr.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcdctmgr.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jchuff.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jchuff.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jchuff.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jchuff.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcinit.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcinit.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcmainct.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcmainct.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcmarker.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcmarker.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcmaster.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcmaster.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcomapi.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcomapi.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jconfig.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jconfig.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcparam.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcparam.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcphuff.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcphuff.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcprepct.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcprepct.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcsample.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jcsample.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jctrans.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jctrans.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdapimin.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdapimin.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdapistd.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdapistd.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdatasrc.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdatasrc.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdcoefct.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdcoefct.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdcolor.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdcolor.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdct.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdct.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jddctmgr.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jddctmgr.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdhuff.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdhuff.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdhuff.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdhuff.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdinput.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdinput.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdmainct.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdmainct.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdmarker.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdmarker.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdmaster.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdmaster.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdmerge.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdmerge.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdphuff.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdphuff.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdpostct.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdpostct.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdsample.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdsample.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdtrans.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jdtrans.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jerror.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jerror.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jerror.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jerror.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jfdctflt.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jfdctflt.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jfdctfst.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jfdctfst.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jfdctint.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jfdctint.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jidctflt.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jidctflt.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jidctfst.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jidctfst.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jidctint.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jidctint.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jidctred.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jidctred.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jinclude.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jinclude.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jmemmgr.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jmemmgr.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jmemnobs.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jmemnobs.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jmemsys.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jmemsys.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jmorecfg.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jmorecfg.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jpegint.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jpegint.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jpeglib.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jpeglib.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jquant1.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jquant1.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jquant2.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jquant2.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jutils.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jutils.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jversion.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/jversion.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/transupp.c b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/transupp.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/transupp.h b/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib/transupp.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/juce_GIFLoader.cpp b/JuceLibraryCode/modules/juce_graphics/image_formats/juce_GIFLoader.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/juce_JPEGLoader.cpp b/JuceLibraryCode/modules/juce_graphics/image_formats/juce_JPEGLoader.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/juce_PNGLoader.cpp b/JuceLibraryCode/modules/juce_graphics/image_formats/juce_PNGLoader.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/LICENSE b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/LICENSE old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/libpng_readme.txt b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/libpng_readme.txt old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/png.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/png.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/png.h b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/png.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngconf.h b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngconf.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngerror.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngerror.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngget.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngget.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pnginfo.h b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pnginfo.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngmem.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngmem.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngpread.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngpread.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngpriv.h b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngpriv.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngread.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngread.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngrio.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngrio.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngrtran.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngrtran.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngrutil.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngrutil.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngset.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngset.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngstruct.h b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngstruct.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngtrans.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngtrans.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngwio.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngwio.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngwrite.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngwrite.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngwtran.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngwtran.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngwutil.c b/JuceLibraryCode/modules/juce_graphics/image_formats/pnglib/pngwutil.c old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/images/juce_Image.cpp b/JuceLibraryCode/modules/juce_graphics/images/juce_Image.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/images/juce_Image.h b/JuceLibraryCode/modules/juce_graphics/images/juce_Image.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/images/juce_ImageCache.cpp b/JuceLibraryCode/modules/juce_graphics/images/juce_ImageCache.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/images/juce_ImageCache.h b/JuceLibraryCode/modules/juce_graphics/images/juce_ImageCache.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp b/JuceLibraryCode/modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/images/juce_ImageConvolutionKernel.h b/JuceLibraryCode/modules/juce_graphics/images/juce_ImageConvolutionKernel.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/images/juce_ImageFileFormat.cpp b/JuceLibraryCode/modules/juce_graphics/images/juce_ImageFileFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/images/juce_ImageFileFormat.h b/JuceLibraryCode/modules/juce_graphics/images/juce_ImageFileFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/juce_graphics.cpp b/JuceLibraryCode/modules/juce_graphics/juce_graphics.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/juce_graphics.h b/JuceLibraryCode/modules/juce_graphics/juce_graphics.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/juce_graphics.mm b/JuceLibraryCode/modules/juce_graphics/juce_graphics.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/juce_module_info b/JuceLibraryCode/modules/juce_graphics/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h b/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_android_Fonts.cpp b/JuceLibraryCode/modules/juce_graphics/native/juce_android_Fonts.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_android_GraphicsContext.cpp b/JuceLibraryCode/modules/juce_graphics/native/juce_android_GraphicsContext.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_freetype_Fonts.cpp b/JuceLibraryCode/modules/juce_graphics/native/juce_freetype_Fonts.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_linux_Fonts.cpp b/JuceLibraryCode/modules/juce_graphics/native/juce_linux_Fonts.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h b/JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm b/JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h b/JuceLibraryCode/modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_mac_Fonts.mm b/JuceLibraryCode/modules/juce_graphics/native/juce_mac_Fonts.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp b/JuceLibraryCode/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp b/JuceLibraryCode/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp b/JuceLibraryCode/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/native/juce_win32_Fonts.cpp b/JuceLibraryCode/modules/juce_graphics/native/juce_win32_Fonts.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/placement/juce_Justification.cpp b/JuceLibraryCode/modules/juce_graphics/placement/juce_Justification.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/placement/juce_Justification.h b/JuceLibraryCode/modules/juce_graphics/placement/juce_Justification.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/placement/juce_RectanglePlacement.cpp b/JuceLibraryCode/modules/juce_graphics/placement/juce_RectanglePlacement.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_graphics/placement/juce_RectanglePlacement.h b/JuceLibraryCode/modules/juce_graphics/placement/juce_RectanglePlacement.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/application/juce_Application.cpp b/JuceLibraryCode/modules/juce_gui_basics/application/juce_Application.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/application/juce_Application.h b/JuceLibraryCode/modules/juce_gui_basics/application/juce_Application.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/application/juce_Initialisation.h b/JuceLibraryCode/modules/juce_gui_basics/application/juce_Initialisation.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.cpp b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.h b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ArrowButton.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_Button.cpp b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_Button.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_Button.h b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_Button.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_DrawableButton.cpp b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_DrawableButton.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_DrawableButton.h b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_DrawableButton.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_HyperlinkButton.h b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_HyperlinkButton.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ImageButton.cpp b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ImageButton.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ImageButton.h b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ImageButton.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ShapeButton.h b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ShapeButton.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_TextButton.cpp b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_TextButton.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_TextButton.h b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_TextButton.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.cpp b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.h b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToggleButton.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToolbarButton.h b/JuceLibraryCode/modules/juce_gui_basics/buttons/juce_ToolbarButton.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandID.h b/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandID.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp b/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h b/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp b/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h b/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp b/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h b/JuceLibraryCode/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp b/JuceLibraryCode/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h b/JuceLibraryCode/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/components/juce_CachedComponentImage.h b/JuceLibraryCode/modules/juce_gui_basics/components/juce_CachedComponentImage.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/components/juce_Component.cpp b/JuceLibraryCode/modules/juce_gui_basics/components/juce_Component.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/components/juce_Component.h b/JuceLibraryCode/modules/juce_gui_basics/components/juce_Component.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/components/juce_ComponentListener.cpp b/JuceLibraryCode/modules/juce_gui_basics/components/juce_ComponentListener.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/components/juce_ComponentListener.h b/JuceLibraryCode/modules/juce_gui_basics/components/juce_ComponentListener.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/components/juce_Desktop.cpp b/JuceLibraryCode/modules/juce_gui_basics/components/juce_Desktop.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/components/juce_Desktop.h b/JuceLibraryCode/modules/juce_gui_basics/components/juce_Desktop.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/components/juce_ModalComponentManager.cpp b/JuceLibraryCode/modules/juce_gui_basics/components/juce_ModalComponentManager.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/components/juce_ModalComponentManager.h b/JuceLibraryCode/modules/juce_gui_basics/components/juce_ModalComponentManager.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_Drawable.cpp b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_Drawable.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_Drawable.h b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_Drawable.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableComposite.h b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableComposite.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableImage.h b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableImage.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawablePath.cpp b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawablePath.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawablePath.h b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawablePath.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableRectangle.h b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableRectangle.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableShape.cpp b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableShape.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableShape.h b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableShape.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableText.cpp b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableText.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableText.h b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_DrawableText.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_SVGParser.cpp b/JuceLibraryCode/modules/juce_gui_basics/drawables/juce_SVGParser.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooser.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooser.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileFilter.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileFilter.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileFilter.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileFilter.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileListComponent.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileListComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.cpp b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.h b/JuceLibraryCode/modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.cpp b/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h b/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.mm b/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/juce_module_info b/JuceLibraryCode/modules/juce_gui_basics/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_CaretComponent.h b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_CaretComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyListener.cpp b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyListener.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyListener.h b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyListener.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyPress.cpp b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyPress.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyPress.h b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyPress.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_ModifierKeys.h b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_ModifierKeys.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_SystemClipboard.h b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_SystemClipboard.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h b/JuceLibraryCode/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_AnimatedPosition.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_AnimatedPosition.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentAnimator.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentAnimator.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBuilder.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentBuilder.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_GroupComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_GroupComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_GroupComponent.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_GroupComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ScrollBar.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ScrollBar.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ScrollBar.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_ScrollBar.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedButtonBar.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedButtonBar.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedComponent.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_TabbedComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_Viewport.cpp b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_Viewport.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/layout/juce_Viewport.h b/JuceLibraryCode/modules/juce_gui_basics/layout/juce_Viewport.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp b/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h b/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp b/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h b/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp b/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h b/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp b/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h b/JuceLibraryCode/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarComponent.h b/JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarModel.cpp b/JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarModel.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarModel.h b/JuceLibraryCode/modules/juce_gui_basics/menus/juce_MenuBarModel.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/menus/juce_PopupMenu.cpp b/JuceLibraryCode/modules/juce_gui_basics/menus/juce_PopupMenu.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/menus/juce_PopupMenu.h b/JuceLibraryCode/modules/juce_gui_basics/menus/juce_PopupMenu.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/misc/juce_BubbleComponent.h b/JuceLibraryCode/modules/juce_gui_basics/misc/juce_BubbleComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/misc/juce_DropShadower.cpp b/JuceLibraryCode/modules/juce_gui_basics/misc/juce_DropShadower.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/misc/juce_DropShadower.h b/JuceLibraryCode/modules/juce_gui_basics/misc/juce_DropShadower.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_ComponentDragger.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_ComponentDragger.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_LassoComponent.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_LassoComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseCursor.cpp b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseCursor.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseCursor.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseCursor.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseEvent.cpp b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseEvent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseEvent.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseEvent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInputSource.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseInputSource.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.cpp b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_MouseListener.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_SelectedItemSet.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_SelectedItemSet.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_TooltipClient.h b/JuceLibraryCode/modules/juce_gui_basics/mouse/juce_TooltipClient.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_MultiTouchMapper.h b/JuceLibraryCode/modules/juce_gui_basics/native/juce_MultiTouchMapper.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_android_FileChooser.cpp b/JuceLibraryCode/modules/juce_gui_basics/native/juce_android_FileChooser.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_android_Windowing.cpp b/JuceLibraryCode/modules/juce_gui_basics/native/juce_android_Windowing.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm b/JuceLibraryCode/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_ios_Windowing.mm b/JuceLibraryCode/modules/juce_gui_basics/native/juce_ios_Windowing.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_Clipboard.cpp b/JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_Clipboard.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp b/JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_Windowing.cpp b/JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_Windowing.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_FileChooser.mm b/JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_FileChooser.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_MainMenu.mm b/JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_MainMenu.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_MouseCursor.mm b/JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_MouseCursor.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm b/JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_Windowing.mm b/JuceLibraryCode/modules/juce_gui_basics/native/juce_mac_Windowing.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp b/JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp b/JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_Windowing.cpp b/JuceLibraryCode/modules/juce_gui_basics/native/juce_win32_Windowing.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_MarkerList.cpp b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_MarkerList.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_MarkerList.h b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_MarkerList.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePoint.cpp b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePoint.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePoint.h b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePoint.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePointPath.h b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativePointPath.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.h b/JuceLibraryCode/modules/juce_gui_basics/positioning/juce_RelativeRectangle.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.h b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyPanel.cpp b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyPanel.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyPanel.h b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_PropertyPanel.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/properties/juce_TextPropertyComponent.h b/JuceLibraryCode/modules/juce_gui_basics/properties/juce_TextPropertyComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ComboBox.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ComboBox.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ComboBox.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ComboBox.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ImageComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ImageComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ImageComponent.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ImageComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Label.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Label.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Label.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Label.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ListBox.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ListBox.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ListBox.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ListBox.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ProgressBar.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ProgressBar.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ProgressBar.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ProgressBar.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Slider.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Slider.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Slider.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Slider.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableListBox.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableListBox.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableListBox.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TableListBox.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TextEditor.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TextEditor.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TextEditor.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TextEditor.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Toolbar.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Toolbar.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Toolbar.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_Toolbar.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TreeView.cpp b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TreeView.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TreeView.h b/JuceLibraryCode/modules/juce_gui_basics/widgets/juce_TreeView.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_AlertWindow.cpp b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_AlertWindow.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_AlertWindow.h b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_AlertWindow.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.cpp b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.h b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ComponentPeer.h b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ComponentPeer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_DialogWindow.cpp b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_DialogWindow.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_DialogWindow.h b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_DialogWindow.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_DocumentWindow.cpp b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_DocumentWindow.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_DocumentWindow.h b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_DocumentWindow.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_NativeMessageBox.h b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_NativeMessageBox.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ResizableWindow.h b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ResizableWindow.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_TooltipWindow.h b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_TooltipWindow.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_basics/windows/juce_TopLevelWindow.h b/JuceLibraryCode/modules/juce_gui_basics/windows/juce_TopLevelWindow.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeDocument.h b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeDocument.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h b/JuceLibraryCode/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp b/JuceLibraryCode/modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/documents/juce_FileBasedDocument.h b/JuceLibraryCode/modules/juce_gui_extra/documents/juce_FileBasedDocument.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h b/JuceLibraryCode/modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/embedding/juce_NSViewComponent.h b/JuceLibraryCode/modules/juce_gui_extra/embedding/juce_NSViewComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/embedding/juce_UIViewComponent.h b/JuceLibraryCode/modules/juce_gui_extra/embedding/juce_UIViewComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.cpp b/JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.h b/JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.mm b/JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/juce_module_info b/JuceLibraryCode/modules/juce_gui_extra/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.cpp b/JuceLibraryCode/modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.h b/JuceLibraryCode/modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_AppleRemote.h b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_AppleRemote.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_ColourSelector.cpp b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_ColourSelector.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_ColourSelector.h b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_ColourSelector.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_LiveConstantEditor.h b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_LiveConstantEditor.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_PreferencesPanel.h b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_PreferencesPanel.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_SplashScreen.cpp b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_SplashScreen.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_SplashScreen.h b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_SplashScreen.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/misc/juce_WebBrowserComponent.h b/JuceLibraryCode/modules/juce_gui_extra/misc/juce_WebBrowserComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp b/JuceLibraryCode/modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm b/JuceLibraryCode/modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp b/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp b/JuceLibraryCode/modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_AppleRemote.mm b/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_AppleRemote.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h b/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm b/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp b/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm b/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp b/JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp b/JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp b/JuceLibraryCode/modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/juce_module_info b/JuceLibraryCode/modules/juce_opengl/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/juce_opengl.cpp b/JuceLibraryCode/modules/juce_opengl/juce_opengl.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/juce_opengl.h b/JuceLibraryCode/modules/juce_opengl/juce_opengl.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/juce_opengl.mm b/JuceLibraryCode/modules/juce_opengl/juce_opengl.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/native/juce_MissingGLDefinitions.h b/JuceLibraryCode/modules/juce_opengl/native/juce_MissingGLDefinitions.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGLExtensions.h b/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGLExtensions.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_android.h b/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_android.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_ios.h b/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_ios.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_linux.h b/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_linux.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_osx.h b/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_osx.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_win32.h b/JuceLibraryCode/modules/juce_opengl/native/juce_OpenGL_win32.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_Draggable3DOrientation.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_Draggable3DOrientation.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_Matrix3D.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_Matrix3D.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLContext.cpp b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLContext.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLContext.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLContext.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLHelpers.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLHelpers.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLImage.cpp b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLImage.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLImage.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLImage.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLRenderer.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLRenderer.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLTexture.cpp b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLTexture.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLTexture.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_OpenGLTexture.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_Quaternion.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_Quaternion.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_opengl/opengl/juce_Vector3D.h b/JuceLibraryCode/modules/juce_opengl/opengl/juce_Vector3D.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/capture/juce_CameraDevice.h b/JuceLibraryCode/modules/juce_video/capture/juce_CameraDevice.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/juce_module_info b/JuceLibraryCode/modules/juce_video/juce_module_info old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/juce_video.cpp b/JuceLibraryCode/modules/juce_video/juce_video.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/juce_video.h b/JuceLibraryCode/modules/juce_video/juce_video.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/juce_video.mm b/JuceLibraryCode/modules/juce_video/juce_video.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/native/juce_android_CameraDevice.cpp b/JuceLibraryCode/modules/juce_video/native/juce_android_CameraDevice.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/native/juce_mac_CameraDevice.mm b/JuceLibraryCode/modules/juce_video/native/juce_mac_CameraDevice.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/native/juce_mac_QuickTimeMovieComponent.mm b/JuceLibraryCode/modules/juce_video/native/juce_mac_QuickTimeMovieComponent.mm old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/native/juce_win32_CameraDevice.cpp b/JuceLibraryCode/modules/juce_video/native/juce_win32_CameraDevice.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/native/juce_win32_DirectShowComponent.cpp b/JuceLibraryCode/modules/juce_video/native/juce_win32_DirectShowComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/native/juce_win32_QuickTimeMovieComponent.cpp b/JuceLibraryCode/modules/juce_video/native/juce_win32_QuickTimeMovieComponent.cpp old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/playback/juce_DirectShowComponent.h b/JuceLibraryCode/modules/juce_video/playback/juce_DirectShowComponent.h old mode 100644 new mode 100755 diff --git a/JuceLibraryCode/modules/juce_video/playback/juce_QuickTimeMovieComponent.h b/JuceLibraryCode/modules/juce_video/playback/juce_QuickTimeMovieComponent.h old mode 100644 new mode 100755 diff --git a/Licenses/HDF5.txt b/Licenses/HDF5.txt new file mode 100644 index 0000000000000000000000000000000000000000..e4537f2d10c3c9e7558d304254c7be8f62d21504 --- /dev/null +++ b/Licenses/HDF5.txt @@ -0,0 +1,89 @@ +Copyright Notice and License Terms for +HDF5 (Hierarchical Data Format 5) Software Library and Utilities +----------------------------------------------------------------------------- + +HDF5 (Hierarchical Data Format 5) Software Library and Utilities +Copyright 2006-2014 by The HDF Group. + +NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities +Copyright 1998-2006 by the Board of Trustees of the University of Illinois. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted for any purpose (including commercial purposes) +provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions, and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions, and the following disclaimer in the documentation + and/or materials provided with the distribution. + +3. In addition, redistributions of modified forms of the source or binary + code must carry prominent notices stating that the original code was + changed and the date of the change. + +4. All publications or advertising materials mentioning features or use of + this software are asked, but not required, to acknowledge that it was + developed by The HDF Group and by the National Center for Supercomputing + Applications at the University of Illinois at Urbana-Champaign and + credit the contributors. + +5. Neither the name of The HDF Group, the name of the University, nor the + name of any Contributor may be used to endorse or promote products derived + from this software without specific prior written permission from + The HDF Group, the University, or the Contributor, respectively. + +DISCLAIMER: +THIS SOFTWARE IS PROVIDED BY THE HDF GROUP AND THE CONTRIBUTORS +"AS IS" WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. In no +event shall The HDF Group or the Contributors be liable for any damages +suffered by the users arising out of the use of this software, even if +advised of the possibility of such damage. + +----------------------------------------------------------------------------- +----------------------------------------------------------------------------- + +Contributors: National Center for Supercomputing Applications (NCSA) at +the University of Illinois, Fortner Software, Unidata Program Center (netCDF), +The Independent JPEG Group (JPEG), Jean-loup Gailly and Mark Adler (gzip), +and Digital Equipment Corporation (DEC). + +----------------------------------------------------------------------------- + +Portions of HDF5 were developed with support from the Lawrence Berkeley +National Laboratory (LBNL) and the United States Department of Energy +under Prime Contract No. DE-AC02-05CH11231. + +----------------------------------------------------------------------------- + +Portions of HDF5 were developed with support from the University of +California, Lawrence Livermore National Laboratory (UC LLNL). +The following statement applies to those portions of the product and must +be retained in any redistribution of source code, binaries, documentation, +and/or accompanying materials: + + This work was partially produced at the University of California, + Lawrence Livermore National Laboratory (UC LLNL) under contract + no. W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy + (DOE) and The Regents of the University of California (University) + for the operation of UC LLNL. + + DISCLAIMER: + This work was prepared as an account of work sponsored by an agency of + the United States Government. Neither the United States Government nor + the University of California nor any of their employees, makes any + warranty, express or implied, or assumes any liability or responsibility + for the accuracy, completeness, or usefulness of any information, + apparatus, product, or process disclosed, or represents that its use + would not infringe privately- owned rights. Reference herein to any + specific commercial products, process, or service by trade name, + trademark, manufacturer, or otherwise, does not necessarily constitute + or imply its endorsement, recommendation, or favoring by the United + States Government or the University of California. The views and + opinions of authors expressed herein do not necessarily state or reflect + those of the United States Government or the University of California, + and shall not be used for advertising or product endorsement purposes. +----------------------------------------------------------------------------- \ No newline at end of file diff --git a/license.txt b/Licenses/Open-Ephys-GPL-3.txt similarity index 100% rename from license.txt rename to Licenses/Open-Ephys-GPL-3.txt diff --git a/Licenses/SZIP.txt b/Licenses/SZIP.txt new file mode 100644 index 0000000000000000000000000000000000000000..faa09517649d256b4dd29364b6c9a9fe52b5cc4e --- /dev/null +++ b/Licenses/SZIP.txt @@ -0,0 +1,39 @@ +The SZIP Science Data Lossless Compression Program is Copyright (C) 2001 Science +& Technology Corporation @ UNM. All rights released. Copyright (C) 2003 Lowell +H. Miles and Jack A. Venbrux. Licensed to ICs, LLC, for distribution by the +University of Illinois' National Center for Supercomputing Applications as a +part of the HDF data storage and retrieval file format and software library +products package. All rights reserved. Do not modify or use for other +purposes. + +SZIP implements an extended Rice adaptive lossless compression algorithm +for sample data. The primary algorithm was developed by R. F. Rice at +Jet Propulsion Laboratory. + +SZIP embodies certain inventions patented by the National Aeronautics & +Space Administration. United States Patent Nos. 5,448,642, 5,687,255, +and 5,822,457 have been licensed to ICs, LLC, for distribution with the +HDF data storage and retrieval file format and software library products. +All rights reserved. + +Revocable, royalty-free, nonexclusive sublicense to use SZIP decompression +software routines and underlying patents is hereby granted by ICs, LLC, to +all users of and in conjunction with HDF data storage and retrieval file +format and software library products. + +Revocable, royalty-free, nonexclusive sublicense to use SZIP compression +software routines and underlying patents for non-commercial, scientific use +only is hereby granted by ICs, LLC, to users of and in conjunction with HDF +data storage and retrieval file format and software library products. + +For commercial use license to SZIP compression software routines and underlying +patents please contact ICs, LLC, at: + + Joseph J. Feeley, Ph.D., P.E. + Chief Executive Officer + ICs, LLC + PO Box 2236 + McCall, ID 83638 + + Phone: (208) 315-0029 + Email: Joe.Feeley@frontiernet.net \ No newline at end of file diff --git a/README.rst b/README.rst index 49d893fd9fcec2dffa8dd1e526f9caac3cc570ca..8996eee90593b553b27d65be2e1cb7d70390bff9 100644 --- a/README.rst +++ b/README.rst @@ -10,8 +10,8 @@ This repository contains all of the files you'll need to compile and run the GUI We recommend reading through the wiki_ before attempting to make any changes. -If you want to add files, you'll have to do that through the "Introjucer," using the "open-ephys.jucer" file. The Introjucer makefiles are located in the JuceLibraryCode/Introjucer/Builds folder, or as part of the Juce library package on SourceForge_. +If you want to add files, you'll have to do that through the "Introjucer," using the "open-ephys.jucer" file. The Introjucer makefiles are located in the JuceLibraryCode/Introjucer/Builds folder, or as part of the Juce source_. -.. _SourceForge: http://sourceforge.net/projects/juce/files/juce/ +.. _source: https://github.com/julianstorer/juce .. _JUCE: http://www.rawmaterialsoftware.com/juce.php .. _wiki: http://open-ephys.atlassian.net diff --git a/Resources/DLLs/InstallEcubeApi_0_11.exe b/Resources/DLLs/InstallEcubeApi_0_11.exe new file mode 100644 index 0000000000000000000000000000000000000000..e27b63318da3f5a9298686ac4bdae24787667659 Binary files /dev/null and b/Resources/DLLs/InstallEcubeApi_0_11.exe differ diff --git a/Resources/DLLs/Win64/hdf5.dll b/Resources/DLLs/Win64/hdf5.dll new file mode 100644 index 0000000000000000000000000000000000000000..9b76ced3c77baaa30f7013ef3bf52c32bc7ae8b8 Binary files /dev/null and b/Resources/DLLs/Win64/hdf5.dll differ diff --git a/Resources/DLLs/Win64/hdf5_cpp.dll b/Resources/DLLs/Win64/hdf5_cpp.dll new file mode 100644 index 0000000000000000000000000000000000000000..c9e2fd4a6262c1503aee1c19a547e375bc6d65e4 Binary files /dev/null and b/Resources/DLLs/Win64/hdf5_cpp.dll differ diff --git a/Resources/DLLs/Win64/szip.dll b/Resources/DLLs/Win64/szip.dll new file mode 100644 index 0000000000000000000000000000000000000000..995df5e7a8a64e3a1d5b07b6d51e37f05b026bb9 Binary files /dev/null and b/Resources/DLLs/Win64/szip.dll differ diff --git a/Resources/DLLs/Win64/zlib.dll b/Resources/DLLs/Win64/zlib.dll new file mode 100644 index 0000000000000000000000000000000000000000..d4818cb38aed99f7b08e5b7ce1e04d4b69ac8921 Binary files /dev/null and b/Resources/DLLs/Win64/zlib.dll differ diff --git a/Resources/DLLs/hdf5.dll b/Resources/DLLs/hdf5.dll new file mode 100644 index 0000000000000000000000000000000000000000..1b366605be935866db48fe92e8b1d804108d0d8b Binary files /dev/null and b/Resources/DLLs/hdf5.dll differ diff --git a/Resources/DLLs/hdf5_cpp.dll b/Resources/DLLs/hdf5_cpp.dll new file mode 100644 index 0000000000000000000000000000000000000000..b92846f10c9b5a0215105582fcc3dc61c0d2905c Binary files /dev/null and b/Resources/DLLs/hdf5_cpp.dll differ diff --git a/Resources/DLLs/libokFrontPanel_centOS_x86_64.so b/Resources/DLLs/libokFrontPanel_centOS_x86_64.so new file mode 100755 index 0000000000000000000000000000000000000000..f8c6386c193b5822adc9a585a0445c1e5efa2c95 Binary files /dev/null and b/Resources/DLLs/libokFrontPanel_centOS_x86_64.so differ diff --git a/Resources/DLLs/szip.dll b/Resources/DLLs/szip.dll new file mode 100644 index 0000000000000000000000000000000000000000..ba836b4e734761dbba81321dd9a8405b6c28984d Binary files /dev/null and b/Resources/DLLs/szip.dll differ diff --git a/Resources/DLLs/zlib.dll b/Resources/DLLs/zlib.dll new file mode 100644 index 0000000000000000000000000000000000000000..68efaa4ba4bdc7564d5f824030d1d1e3fc9bb8e3 Binary files /dev/null and b/Resources/DLLs/zlib.dll differ diff --git a/Resources/windows-libs/HDF5/include/H5ACpkg.h b/Resources/windows-libs/HDF5/include/H5ACpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..3060a70dc8079f20806cde7071f0c194170489ae --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5ACpkg.h @@ -0,0 +1,392 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: John Mainzer -- 4/19/06 + * + * Purpose: This file contains declarations which are normally visible + * only within the H5AC package (just H5AC.c at present). + * + * Source files outside the H5AC package should include + * H5ACprivate.h instead. + * + * The one exception to this rule is testpar/t_cache.c. The + * test code is easier to write if it can look at H5AC_aux_t. + * Indeed, this is the main reason why this file was created. + * + */ + +#ifndef H5AC_PACKAGE +#error "Do not include this file outside the H5AC package!" +#endif + +#ifndef _H5ACpkg_H +#define _H5ACpkg_H + +/* Get package's private header */ +#include "H5ACprivate.h" /* Metadata cache */ + + +/* Get needed headers */ +#include "H5Cprivate.h" /* Cache */ +#include "H5SLprivate.h" /* Skip lists */ + + +#define H5AC_DEBUG_DIRTY_BYTES_CREATION 0 + +#ifdef H5_HAVE_PARALLEL + +/* the following #defined are used to specify the operation required + * at a sync point. + */ + +#define H5AC_SYNC_POINT_OP__FLUSH_TO_MIN_CLEAN 0 +#define H5AC_SYNC_POINT_OP__FLUSH_CACHE 1 + +#endif /* H5_HAVE_PARALLEL */ + +/*------------------------------------------------------------------------- + * It is a bit difficult to set ranges of allowable values on the + * dirty_bytes_threshold field of H5AC_aux_t. The following are + * probably broader than they should be. + *------------------------------------------------------------------------- + */ + +#define H5AC__MIN_DIRTY_BYTES_THRESHOLD (int32_t) \ + (H5C__MIN_MAX_CACHE_SIZE / 2) +#define H5AC__DEFAULT_DIRTY_BYTES_THRESHOLD (256 * 1024) +#define H5AC__MAX_DIRTY_BYTES_THRESHOLD (int32_t) \ + (H5C__MAX_MAX_CACHE_SIZE / 4) + +#define H5AC__DEFAULT_METADATA_WRITE_STRATEGY \ + H5AC_METADATA_WRITE_STRATEGY__DISTRIBUTED + +/**************************************************************************** + * + * structure H5AC_aux_t + * + * While H5AC has become a wrapper for the cache implemented in H5C.c, there + * are some features of the metadata cache that are specific to it, and which + * therefore do not belong in the more generic H5C cache code. + * + * In particular, there is the matter of synchronizing writes from the + * metadata cache to disk in the PHDF5 case. + * + * Prior to this update, the presumption was that all metadata caches would + * write the same data at the same time since all operations modifying + * metadata must be performed collectively. Given this assumption, it was + * safe to allow only the writes from process 0 to actually make it to disk, + * while metadata writes from all other processes were discarded. + * + * Unfortunately, this presumption is in error as operations that read + * metadata need not be collective, but can change the location of dirty + * entries in the metadata cache LRU lists. This can result in the same + * metadata write operation triggering writes from the metadata caches on + * some processes, but not all (causing a hang), or in different sets of + * entries being written from different caches (potentially resulting in + * metadata corruption in the file). + * + * To deal with this issue, I decided to apply a paradigm shift to the way + * metadata is written to disk. + * + * With this set of changes, only the metadata cache on process 0 is able + * to write metadata to disk, although metadata caches on all other + * processes can read metadata from disk as before. + * + * To keep all the other caches from getting plugged up with dirty metadata, + * process 0 periodically broadcasts a list of entries that it has flushed + * since that last notice, and which are currently clean. The other caches + * mark these entries as clean as well, which allows them to evict the + * entries as needed. + * + * One obvious problem in this approach is synchronizing the broadcasts + * and receptions, as different caches may see different amounts of + * activity. + * + * The current solution is for the caches to track the number of bytes + * of newly generated dirty metadata, and to broadcast and receive + * whenever this value exceeds some user specified threshold. + * + * Maintaining this count is easy for all processes not on process 0 -- + * all that is necessary is to add the size of the entry to the total + * whenever there is an insertion, a move of a previously clean entry, + * or whever a previously clean entry is marked dirty in an unprotect. + * + * On process 0, we have to be careful not to count dirty bytes twice. + * If an entry is marked dirty, flushed, and marked dirty again, all + * within a single reporting period, it only th first marking should + * be added to the dirty bytes generated tally, as that is all that + * the other processes will see. + * + * At present, this structure exists to maintain the fields needed to + * implement the above scheme, and thus is only used in the parallel + * case. However, other uses may arise in the future. + * + * Instance of this structure are associated with metadata caches via + * the aux_ptr field of H5C_t (see H5Cpkg.h). The H5AC code is + * responsible for allocating, maintaining, and discarding instances + * of H5AC_aux_t. + * + * The remainder of this header comments documents the individual fields + * of the structure. + * + * JRM - 6/27/05 + * + * magic: Unsigned 32 bit integer always set to + * H5AC__H5AC_AUX_T_MAGIC. This field is used to validate + * pointers to instances of H5AC_aux_t. + * + * mpi_comm: MPI communicator associated with the file for which the + * cache has been created. + * + * mpi_rank: MPI rank of this process within mpi_comm. + * + * mpi_size: Number of processes in mpi_comm. + * + * write_permitted: Boolean flag used to control whether the cache + * is permitted to write to file. + * + * dirty_bytes_threshold: Integer field containing the dirty bytes + * generation threashold. Whenever dirty byte creation + * exceeds this value, the metadata cache on process 0 + * broadcasts a list of the entries it has flushed since + * the last broadcast (or since the beginning of execution) + * and which are currently clean (if they are still in the + * cache) + * + * Similarly, metadata caches on processes other than process + * 0 will attempt to receive a list of clean entries whenever + * the threshold is exceeded. + * + * dirty_bytes: Integer field containing the number of bytes of dirty + * metadata generated since the beginning of the computation, + * or (more typically) since the last clean entries list + * broadcast. This field is reset to zero after each such + * broadcast. + * + * metadata_write_strategy: Integer code indicating how we will be + * writing the metadata. In the first incarnation of + * this code, all writes were done from process 0. This + * field exists to facilitate experiments with other + * strategies. + * + * dirty_bytes_propagations: This field only exists when the + * H5AC_DEBUG_DIRTY_BYTES_CREATION #define is TRUE. + * + * It is used to track the number of times the cleaned list + * has been propagated from process 0 to the other + * processes. + * + * unprotect_dirty_bytes: This field only exists when the + * H5AC_DEBUG_DIRTY_BYTES_CREATION #define is TRUE. + * + * It is used to track the number of dirty bytes created + * via unprotect operations since the last time the cleaned + * list was propagated. + * + * unprotect_dirty_bytes_updates: This field only exists when the + * H5AC_DEBUG_DIRTY_BYTES_CREATION #define is TRUE. + * + * It is used to track the number of times dirty bytes have + * been created via unprotect operations since the last time + * the cleaned list was propagated. + * + * insert_dirty_bytes: This field only exists when the + * H5AC_DEBUG_DIRTY_BYTES_CREATION #define is TRUE. + * + * It is used to track the number of dirty bytes created + * via insert operations since the last time the cleaned + * list was propagated. + * + * insert_dirty_bytes_updates: This field only exists when the + * H5AC_DEBUG_DIRTY_BYTES_CREATION #define is TRUE. + * + * It is used to track the number of times dirty bytes have + * been created via insert operations since the last time + * the cleaned list was propagated. + * + * move_dirty_bytes: This field only exists when the + * H5AC_DEBUG_DIRTY_BYTES_CREATION #define is TRUE. + * + * It is used to track the number of dirty bytes created + * via move operations since the last time the cleaned + * list was propagated. + * + * move_dirty_bytes_updates: This field only exists when the + * H5AC_DEBUG_DIRTY_BYTES_CREATION #define is TRUE. + * + * It is used to track the number of times dirty bytes have + * been created via move operations since the last time + * the cleaned list was propagated. + * + * Things have changed a bit since the following four fields were defined. + * If metadata_write_strategy is H5AC_METADATA_WRITE_STRATEGY__PROCESS_0_ONLY, + * all comments hold as before -- with the caviate that pending further + * coding, the process 0 metadata cache is forbidden to flush entries outside + * of a sync point. + * + * However, for different metadata write strategies, these fields are used + * only to maintain the correct dirty byte count on process zero -- and in + * most if not all cases, this is redundant, as process zero will be barred + * from flushing entries outside of a sync point. + * + * JRM -- 3/16/10 + * + * d_slist_ptr: Pointer to an instance of H5SL_t used to maintain a list + * of entries that have been dirtied since the last time they + * were listed in a clean entries broadcast. This list is + * only maintained by the metadata cache on process 0 -- it + * it used to maintain a view of the dirty entries as seen + * by the other caches, so as to keep the dirty bytes count + * in synchronization with them. + * + * Thus on process 0, the dirty_bytes count is incremented + * only if either + * + * 1) an entry is inserted in the metadata cache, or + * + * 2) a previously clean entry is moved, and it does not + * already appear in the dirty entry list, or + * + * 3) a previously clean entry is unprotected with the + * dirtied flag set and the entry does not already appear + * in the dirty entry list. + * + * Entries are added to the dirty entry list whever they cause + * the dirty bytes count to be increased. They are removed + * when they appear in a clean entries broadcast. Note that + * moves must be reflected in the dirty entry list. + * + * To reitterate, this field is only used on process 0 -- it + * should be NULL on all other processes. + * + * d_slist_len: Integer field containing the number of entries in the + * dirty entry list. This field should always contain the + * value 0 on all processes other than process 0. It exists + * primarily for sanity checking. + * + * c_slist_ptr: Pointer to an instance of H5SL_t used to maintain a list + * of entries that were dirty, have been flushed + * to disk since the last clean entries broadcast, and are + * still clean. Since only process 0 can write to disk, this + * list only exists on process 0. + * + * In essence, this slist is used to assemble the contents of + * the next clean entries broadcast. The list emptied after + * each broadcast. + * + * c_slist_len: Integer field containing the number of entries in the clean + * entries list (*c_slist_ptr). This field should always + * contain the value 0 on all processes other than process 0. + * It exists primarily for sanity checking. + * + * The following two fields are used only when metadata_write_strategy + * is H5AC_METADATA_WRITE_STRATEGY__DISTRIBUTED. + * + * candidate_slist_ptr: Pointer to an instance of H5SL_t used by process 0 + * to construct a list of entries to be flushed at this sync + * point. This list is then broadcast to the other processes, + * which then either flush or mark clean all entries on it. + * + * candidate_slist_len: Integer field containing the number of entries on the + * candidate list. It exists primarily for sanity checking. + * + * write_done: In the parallel test bed, it is necessary to ensure that + * all writes to the server process from cache 0 complete + * before it enters the barrier call with the other caches. + * + * The write_done callback allows t_cache to do this without + * requiring an ACK on each write. Since these ACKs greatly + * increase the run time on some platforms, this is a + * significant optimization. + * + * This field must be set to NULL when the callback is not + * needed. + * + * Note: This field has been extended for use by all processes + * with the addition of support for the distributed + * metadata write strategy. + * JRM -- 5/9/10 + * + * sync_point_done: In the parallel test bed, it is necessary to verify + * that the expected writes, and only the expected writes, + * have taken place at the end of each sync point. + * + * The sync_point_done callback allows t_cache to perform + * this verification. The field is set to NULL when the + * callback is not needed. + * + ****************************************************************************/ + +#ifdef H5_HAVE_PARALLEL + +#define H5AC__H5AC_AUX_T_MAGIC (unsigned)0x00D0A01 + +typedef struct H5AC_aux_t +{ + uint32_t magic; + + MPI_Comm mpi_comm; + + int mpi_rank; + + int mpi_size; + + hbool_t write_permitted; + + int32_t dirty_bytes_threshold; + + int32_t dirty_bytes; + + int32_t metadata_write_strategy; + +#if H5AC_DEBUG_DIRTY_BYTES_CREATION + + int32_t dirty_bytes_propagations; + + int32_t unprotect_dirty_bytes; + int32_t unprotect_dirty_bytes_updates; + + int32_t insert_dirty_bytes; + int32_t insert_dirty_bytes_updates; + + int32_t move_dirty_bytes; + int32_t move_dirty_bytes_updates; + +#endif /* H5AC_DEBUG_DIRTY_BYTES_CREATION */ + + H5SL_t * d_slist_ptr; + + int32_t d_slist_len; + + H5SL_t * c_slist_ptr; + + int32_t c_slist_len; + + H5SL_t * candidate_slist_ptr; + + int32_t candidate_slist_len; + + void (* write_done)(void); + + void (* sync_point_done)(int num_writes, + haddr_t * written_entries_tbl); + +} H5AC_aux_t; /* struct H5AC_aux_t */ + +#endif /* H5_HAVE_PARALLEL */ + +#endif /* _H5ACpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5ACpublic.h b/Resources/windows-libs/HDF5/include/H5ACpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..639179ce3b2bcc253739764d7f5f1b4b648c9024 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5ACpublic.h @@ -0,0 +1,508 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5ACpublic.h + * Jul 10 1997 + * Robb Matzke <matzke@llnl.gov> + * + * Purpose: Public include file for cache functions. + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifndef _H5ACpublic_H +#define _H5ACpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Cpublic.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/**************************************************************************** + * + * structure H5AC_cache_config_t + * + * H5AC_cache_config_t is a public structure intended for use in public APIs. + * At least in its initial incarnation, it is basicaly a copy of struct + * H5C_auto_size_ctl_t, minus the report_fcn field, and plus the + * dirty_bytes_threshold field. + * + * The report_fcn field is omitted, as including it would require us to + * make H5C_t structure public. + * + * The dirty_bytes_threshold field does not appear in H5C_auto_size_ctl_t, + * as synchronization between caches on different processes is handled at + * the H5AC level, not at the level of H5C. Note however that there is + * considerable interaction between this value and the other fields in this + * structure. + * + * Similarly, the open_trace_file, close_trace_file, and trace_file_name + * fields do not appear in H5C_auto_size_ctl_t, as most trace file + * issues are handled at the H5AC level. The one exception is storage of + * the pointer to the trace file, which is handled by H5C. + * + * The structure is in H5ACpublic.h as we may wish to allow different + * configuration options for metadata and raw data caches. + * + * The fields of the structure are discussed individually below: + * + * version: Integer field containing the version number of this version + * of the H5AC_cache_config_t structure. Any instance of + * H5AC_cache_config_t passed to the cache must have a known + * version number, or an error will be flagged. + * + * rpt_fcn_enabled: Boolean field used to enable and disable the default + * reporting function. This function is invoked every time the + * automatic cache resize code is run, and reports on its activities. + * + * This is a debugging function, and should normally be turned off. + * + * open_trace_file: Boolean field indicating whether the trace_file_name + * field should be used to open a trace file for the cache. + * + * The trace file is a debuging feature that allow the capture of + * top level metadata cache requests for purposes of debugging and/or + * optimization. This field should normally be set to FALSE, as + * trace file collection imposes considerable overhead. + * + * This field should only be set to TRUE when the trace_file_name + * contains the full path of the desired trace file, and either + * there is no open trace file on the cache, or the close_trace_file + * field is also TRUE. + * + * close_trace_file: Boolean field indicating whether the current trace + * file (if any) should be closed. + * + * See the above comments on the open_trace_file field. This field + * should be set to FALSE unless there is an open trace file on the + * cache that you wish to close. + * + * trace_file_name: Full path of the trace file to be opened if the + * open_trace_file field is TRUE. + * + * In the parallel case, an ascii representation of the mpi rank of + * the process will be appended to the file name to yield a unique + * trace file name for each process. + * + * The length of the path must not exceed H5AC__MAX_TRACE_FILE_NAME_LEN + * characters. + * + * evictions_enabled: Boolean field used to either report the current + * evictions enabled status of the cache, or to set the cache's + * evictions enabled status. + * + * In general, the metadata cache should always be allowed to + * evict entries. However, in some cases it is advantageous to + * disable evictions briefly, and thereby postpone metadata + * writes. However, this must be done with care, as the cache + * can grow quickly. If you do this, re-enable evictions as + * soon as possible and monitor cache size. + * + * At present, evictions can only be disabled if automatic + * cache resizing is also disabled (that is, ( incr_mode == + * H5C_incr__off ) && ( decr_mode == H5C_decr__off )). There + * is no logical reason why this should be so, but it simplifies + * implementation and testing, and I can't think of any reason + * why it would be desireable. If you can think of one, I'll + * revisit the issue. + * + * set_initial_size: Boolean flag indicating whether the size of the + * initial size of the cache is to be set to the value given in + * the initial_size field. If set_initial_size is FALSE, the + * initial_size field is ignored. + * + * initial_size: If enabled, this field contain the size the cache is + * to be set to upon receipt of this structure. Needless to say, + * initial_size must lie in the closed interval [min_size, max_size]. + * + * min_clean_fraction: double in the range 0 to 1 indicating the fraction + * of the cache that is to be kept clean. This field is only used + * in parallel mode. Typical values are 0.1 to 0.5. + * + * max_size: Maximum size to which the cache can be adjusted. The + * supplied value must fall in the closed interval + * [MIN_MAX_CACHE_SIZE, MAX_MAX_CACHE_SIZE]. Also, max_size must + * be greater than or equal to min_size. + * + * min_size: Minimum size to which the cache can be adjusted. The + * supplied value must fall in the closed interval + * [H5C__MIN_MAX_CACHE_SIZE, H5C__MAX_MAX_CACHE_SIZE]. Also, min_size + * must be less than or equal to max_size. + * + * epoch_length: Number of accesses on the cache over which to collect + * hit rate stats before running the automatic cache resize code, + * if it is enabled. + * + * At the end of an epoch, we discard prior hit rate data and start + * collecting afresh. The epoch_length must lie in the closed + * interval [H5C__MIN_AR_EPOCH_LENGTH, H5C__MAX_AR_EPOCH_LENGTH]. + * + * + * Cache size increase control fields: + * + * incr_mode: Instance of the H5C_cache_incr_mode enumerated type whose + * value indicates how we determine whether the cache size should be + * increased. At present there are two possible values: + * + * H5C_incr__off: Don't attempt to increase the size of the cache + * automatically. + * + * When this increment mode is selected, the remaining fields + * in the cache size increase section ar ignored. + * + * H5C_incr__threshold: Attempt to increase the size of the cache + * whenever the average hit rate over the last epoch drops + * below the value supplied in the lower_hr_threshold + * field. + * + * Note that this attempt will fail if the cache is already + * at its maximum size, or if the cache is not already using + * all available space. + * + * Note that you must set decr_mode to H5C_incr__off if you + * disable metadata cache entry evictions. + * + * lower_hr_threshold: Lower hit rate threshold. If the increment mode + * (incr_mode) is H5C_incr__threshold and the hit rate drops below the + * value supplied in this field in an epoch, increment the cache size by + * size_increment. Note that cache size may not be incremented above + * max_size, and that the increment may be further restricted by the + * max_increment field if it is enabled. + * + * When enabled, this field must contain a value in the range [0.0, 1.0]. + * Depending on the incr_mode selected, it may also have to be less than + * upper_hr_threshold. + * + * increment: Double containing the multiplier used to derive the new + * cache size from the old if a cache size increment is triggered. + * The increment must be greater than 1.0, and should not exceed 2.0. + * + * The new cache size is obtained my multiplying the current max cache + * size by the increment, and then clamping to max_size and to stay + * within the max_increment as necessary. + * + * apply_max_increment: Boolean flag indicating whether the max_increment + * field should be used to limit the maximum cache size increment. + * + * max_increment: If enabled by the apply_max_increment field described + * above, this field contains the maximum number of bytes by which the + * cache size can be increased in a single re-size. + * + * flash_incr_mode: Instance of the H5C_cache_flash_incr_mode enumerated + * type whose value indicates whether and by which algorithm we should + * make flash increases in the size of the cache to accomodate insertion + * of large entries and large increases in the size of a single entry. + * + * The addition of the flash increment mode was occasioned by performance + * problems that appear when a local heap is increased to a size in excess + * of the current cache size. While the existing re-size code dealt with + * this eventually, performance was very bad for the remainder of the + * epoch. + * + * At present, there are two possible values for the flash_incr_mode: + * + * H5C_flash_incr__off: Don't perform flash increases in the size of + * the cache. + * + * H5C_flash_incr__add_space: Let x be either the size of a newly + * newly inserted entry, or the number of bytes by which the + * size of an existing entry has been increased. + * + * If + * x > flash_threshold * current max cache size, + * + * increase the current maximum cache size by x * flash_multiple + * less any free space in the cache, and star a new epoch. For + * now at least, pay no attention to the maximum increment. + * + * In both of the above cases, the flash increment pays no attention to + * the maximum increment (at least in this first incarnation), but DOES + * stay within max_size. + * + * With a little thought, it should be obvious that the above flash + * cache size increase algorithm is not sufficient for all circumstances + * -- for example, suppose the user round robins through + * (1/flash_threshold) +1 groups, adding one data set to each on each + * pass. Then all will increase in size at about the same time, requiring + * the max cache size to at least double to maintain acceptable + * performance, however the above flash increment algorithm will not be + * triggered. + * + * Hopefully, the add space algorithms detailed above will be sufficient + * for the performance problems encountered to date. However, we should + * expect to revisit the issue. + * + * flash_multiple: Double containing the multiple described above in the + * H5C_flash_incr__add_space section of the discussion of the + * flash_incr_mode section. This field is ignored unless flash_incr_mode + * is H5C_flash_incr__add_space. + * + * flash_threshold: Double containing the factor by which current max cache + * size is multiplied to obtain the size threshold for the add_space flash + * increment algorithm. The field is ignored unless flash_incr_mode is + * H5C_flash_incr__add_space. + * + * + * Cache size decrease control fields: + * + * decr_mode: Instance of the H5C_cache_decr_mode enumerated type whose + * value indicates how we determine whether the cache size should be + * decreased. At present there are four possibilities. + * + * H5C_decr__off: Don't attempt to decrease the size of the cache + * automatically. + * + * When this increment mode is selected, the remaining fields + * in the cache size decrease section are ignored. + * + * H5C_decr__threshold: Attempt to decrease the size of the cache + * whenever the average hit rate over the last epoch rises + * above the value supplied in the upper_hr_threshold + * field. + * + * H5C_decr__age_out: At the end of each epoch, search the cache for + * entries that have not been accessed for at least the number + * of epochs specified in the epochs_before_eviction field, and + * evict these entries. Conceptually, the maximum cache size + * is then decreased to match the new actual cache size. However, + * this reduction may be modified by the min_size, the + * max_decrement, and/or the empty_reserve. + * + * H5C_decr__age_out_with_threshold: Same as age_out, but we only + * attempt to reduce the cache size when the hit rate observed + * over the last epoch exceeds the value provided in the + * upper_hr_threshold field. + * + * Note that you must set decr_mode to H5C_decr__off if you + * disable metadata cache entry evictions. + * + * upper_hr_threshold: Upper hit rate threshold. The use of this field + * varies according to the current decr_mode: + * + * H5C_decr__off or H5C_decr__age_out: The value of this field is + * ignored. + * + * H5C_decr__threshold: If the hit rate exceeds this threshold in any + * epoch, attempt to decrement the cache size by size_decrement. + * + * Note that cache size may not be decremented below min_size. + * + * Note also that if the upper_threshold is 1.0, the cache size + * will never be reduced. + * + * H5C_decr__age_out_with_threshold: If the hit rate exceeds this + * threshold in any epoch, attempt to reduce the cache size + * by evicting entries that have not been accessed for more + * than the specified number of epochs. + * + * decrement: This field is only used when the decr_mode is + * H5C_decr__threshold. + * + * The field is a double containing the multiplier used to derive the + * new cache size from the old if a cache size decrement is triggered. + * The decrement must be in the range 0.0 (in which case the cache will + * try to contract to its minimum size) to 1.0 (in which case the + * cache will never shrink). + * + * apply_max_decrement: Boolean flag used to determine whether decrements + * in cache size are to be limited by the max_decrement field. + * + * max_decrement: Maximum number of bytes by which the cache size can be + * decreased in a single re-size. Note that decrements may also be + * restricted by the min_size of the cache, and (in age out modes) by + * the empty_reserve field. + * + * epochs_before_eviction: Integer field used in H5C_decr__age_out and + * H5C_decr__age_out_with_threshold decrement modes. + * + * This field contains the number of epochs an entry must remain + * unaccessed before it is evicted in an attempt to reduce the + * cache size. If applicable, this field must lie in the range + * [1, H5C__MAX_EPOCH_MARKERS]. + * + * apply_empty_reserve: Boolean field controlling whether the empty_reserve + * field is to be used in computing the new cache size when the + * decr_mode is H5C_decr__age_out or H5C_decr__age_out_with_threshold. + * + * empty_reserve: To avoid a constant racheting down of cache size by small + * amounts in the H5C_decr__age_out and H5C_decr__age_out_with_threshold + * modes, this field allows one to require that any cache size + * reductions leave the specified fraction of unused space in the cache. + * + * The value of this field must be in the range [0.0, 1.0]. I would + * expect typical values to be in the range of 0.01 to 0.1. + * + * + * Parallel Configuration Fields: + * + * In PHDF5, all operations that modify metadata must be executed collectively. + * + * We used to think that this was enough to ensure consistency across the + * metadata caches, but since we allow processes to read metadata individually, + * the order of dirty entries in the LRU list can vary across processes, + * which can result in inconsistencies between the caches. + * + * PHDF5 uses several strategies to prevent such inconsistencies in metadata, + * all of which use the fact that the same stream of dirty metadata is seen + * by all processes for purposes of synchronization. This is done by + * having each process count the number of bytes of dirty metadata generated, + * and then running a "sync point" whenever this count exceeds a user + * specified threshold (see dirty_bytes_threshold below). + * + * The current metadata write strategy is indicated by the + * metadata_write_strategy field. The possible values of this field, along + * with the associated metadata write strategies are discussed below. + * + * dirty_bytes_threshold: Threshold of dirty byte creation used to + * synchronize updates between caches. (See above for outline and + * motivation.) + * + * This value MUST be consistant across all processes accessing the + * file. This field is ignored unless HDF5 has been compiled for + * parallel. + * + * metadata_write_strategy: Integer field containing a code indicating the + * desired metadata write strategy. The valid values of this field + * are enumerated and discussed below: + * + * + * H5AC_METADATA_WRITE_STRATEGY__PROCESS_0_ONLY: + * + * When metadata_write_strategy is set to this value, only process + * zero is allowed to write dirty metadata to disk. All other + * processes must retain dirty metadata until they are informed at + * a sync point that the dirty metadata in question has been written + * to disk. + * + * When the sync point is reached (or when there is a user generated + * flush), process zero flushes sufficient entries to bring it into + * complience with its min clean size (or flushes all dirty entries in + * the case of a user generated flush), broad casts the list of + * entries just cleaned to all the other processes, and then exits + * the sync point. + * + * Upon receipt of the broadcast, the other processes mark the indicated + * entries as clean, and leave the sync point as well. + * + * + * H5AC_METADATA_WRITE_STRATEGY__DISTRIBUTED: + * + * In the distributed metadata write strategy, process zero still makes + * the decisions as to what entries should be flushed, but the actual + * flushes are distributed across the processes in the computation to + * the extent possible. + * + * In this strategy, when a sync point is triggered (either by dirty + * metadata creation or manual flush), all processes enter a barrier. + * + * On the other side of the barrier, process 0 constructs an ordered + * list of the entries to be flushed, and then broadcasts this list + * to the caches in all the processes. + * + * All processes then scan the list of entries to be flushed, flushing + * some, and marking the rest as clean. The algorithm for this purpose + * ensures that each entry in the list is flushed exactly once, and + * all are marked clean in each cache. + * + * Note that in the case of a flush of the cache, no message passing + * is necessary, as all processes have the same list of dirty entries, + * and all of these entries must be flushed. Thus in this case it is + * sufficient for each process to sort its list of dirty entries after + * leaving the initial barrier, and use this list as if it had been + * received from process zero. + * + * To avoid possible messages from the past/future, all caches must + * wait until all caches are done before leaving the sync point. + * + ****************************************************************************/ + +#define H5AC__CURR_CACHE_CONFIG_VERSION 1 +#define H5AC__MAX_TRACE_FILE_NAME_LEN 1024 + +#define H5AC_METADATA_WRITE_STRATEGY__PROCESS_0_ONLY 0 +#define H5AC_METADATA_WRITE_STRATEGY__DISTRIBUTED 1 + +typedef struct H5AC_cache_config_t +{ + /* general configuration fields: */ + int version; + + hbool_t rpt_fcn_enabled; + + hbool_t open_trace_file; + hbool_t close_trace_file; + char trace_file_name[H5AC__MAX_TRACE_FILE_NAME_LEN + 1]; + + hbool_t evictions_enabled; + + hbool_t set_initial_size; + size_t initial_size; + + double min_clean_fraction; + + size_t max_size; + size_t min_size; + + long int epoch_length; + + + /* size increase control fields: */ + enum H5C_cache_incr_mode incr_mode; + + double lower_hr_threshold; + + double increment; + + hbool_t apply_max_increment; + size_t max_increment; + + enum H5C_cache_flash_incr_mode flash_incr_mode; + double flash_multiple; + double flash_threshold; + + + /* size decrease control fields: */ + enum H5C_cache_decr_mode decr_mode; + + double upper_hr_threshold; + + double decrement; + + hbool_t apply_max_decrement; + size_t max_decrement; + + int epochs_before_eviction; + + hbool_t apply_empty_reserve; + double empty_reserve; + + + /* parallel configuration fields: */ + int dirty_bytes_threshold; + int metadata_write_strategy; + +} H5AC_cache_config_t; + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Resources/windows-libs/HDF5/include/H5AbstractDs.h b/Resources/windows-libs/HDF5/include/H5AbstractDs.h new file mode 100644 index 0000000000000000000000000000000000000000..6904d768df53d37d55a159dae6aef4645dda61e9 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5AbstractDs.h @@ -0,0 +1,93 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __AbstractDs_H +#define __AbstractDs_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +class ArrayType; +class CompType; +class EnumType; +class FloatType; +class IntType; +class StrType; +class VarLenType; + +/*! \class AbstractDs + \brief AbstractDs is an abstract base class, inherited by Attribute + and DataSet. + + It provides a collection of services that are common to both Attribute + and DataSet. AbstractDs inherits from H5Object. +*/ +class H5_DLLCPP AbstractDs { + public: + // Gets a copy the datatype of that this abstract dataset uses. + // Note that this datatype is a generic one and can only be accessed + // via generic member functions, i.e., member functions belong + // to DataType. To get specific datatype, i.e. EnumType, FloatType, + // etc..., use the specific functions, that follow, instead. + DataType getDataType() const; + + // Gets a copy of the specific datatype of this abstract dataset. + ArrayType getArrayType() const; + CompType getCompType() const; + EnumType getEnumType() const; + IntType getIntType() const; + FloatType getFloatType() const; + StrType getStrType() const; + VarLenType getVarLenType() const; + + ///\brief Gets the size in memory of this abstract dataset. + virtual size_t getInMemDataSize() const = 0; + + ///\brief Gets the dataspace of this abstract dataset - pure virtual. + virtual DataSpace getSpace() const = 0; + + // Gets the class of the datatype that is used by this abstract + // dataset. + H5T_class_t getTypeClass() const; + + ///\brief Returns the amount of storage size required - pure virtual. + virtual hsize_t getStorageSize() const = 0; + + // Returns this class name - pure virtual. + virtual H5std_string fromClass() const = 0; + + // Copy constructor + AbstractDs( const AbstractDs& original ); + + // Destructor + virtual ~AbstractDs(); + + protected: + // Default constructor + AbstractDs(); + + // Constructor that takes an attribute id or a dataset id. + AbstractDs( const hid_t ds_id ); + + private: + // This member function is implemented by DataSet and Attribute - pure virtual. + virtual hid_t p_get_type() const = 0; +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __AbstractDs_H diff --git a/Resources/windows-libs/HDF5/include/H5Alltypes.h b/Resources/windows-libs/HDF5/include/H5Alltypes.h new file mode 100644 index 0000000000000000000000000000000000000000..b1d792d9bd3fa080045ffbd5a78ad868ddb062dc --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Alltypes.h @@ -0,0 +1,29 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +// This header file simply serves as a container to hold the +// header files of all datatypes. It simplifies the header +// file including in the code. + +#include "H5DataType.h" +#include "H5AtomType.h" +#include "H5EnumType.h" +#include "H5IntType.h" +#include "H5FloatType.h" +#include "H5StrType.h" +#include "H5CompType.h" +#include "H5ArrayType.h" +#include "H5VarLenType.h" diff --git a/Resources/windows-libs/HDF5/include/H5Apkg.h b/Resources/windows-libs/HDF5/include/H5Apkg.h new file mode 100644 index 0000000000000000000000000000000000000000..fa26a9a3d4efff3884b3e3fe72fdf81edf481f99 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Apkg.h @@ -0,0 +1,272 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol + * Monday, Apr 20 + * + * Purpose: This file contains declarations which are visible only within + * the H5A package. Source files outside the H5A package should + * include H5Aprivate.h instead. + */ +#ifndef H5A_PACKAGE +#error "Do not include this file outside the H5A package!" +#endif + +#ifndef _H5Apkg_H +#define _H5Apkg_H + +/* + * Define this to enable debugging. + */ +#ifdef NDEBUG +# undef H5A_DEBUG +#endif + +/* Get package's private header */ +#include "H5Aprivate.h" + +/* Other private headers needed by this file */ +#include "H5B2private.h" /* v2 B-trees */ +#include "H5FLprivate.h" /* Free Lists */ +#include "H5HFprivate.h" /* Fractal heaps */ +#include "H5Oprivate.h" /* Object headers */ +#include "H5Sprivate.h" /* Dataspace */ +#include "H5Tprivate.h" /* Datatype functions */ + + +/**************************/ +/* Package Private Macros */ +/**************************/ + +/* This is the initial version, which does not have support for shared datatypes */ +#define H5O_ATTR_VERSION_1 1 + +/* This version allows support for shared datatypes & dataspaces by adding a + * 'flag' byte indicating when those components are shared. This version + * also dropped the alignment on all the components. + */ +#define H5O_ATTR_VERSION_2 2 + +/* Add support for different character encodings of attribute names */ +#define H5O_ATTR_VERSION_3 3 + +/* The latest version of the format. Look through the 'encode', 'decode' + * and 'size' message callbacks for places to change when updating this. + */ +#define H5O_ATTR_VERSION_LATEST H5O_ATTR_VERSION_3 + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ +/* Define the shared attribute structure */ +typedef struct H5A_shared_t { + uint8_t version; /* Version to encode attribute with */ + + char *name; /* Attribute's name */ + H5T_cset_t encoding; /* Character encoding of attribute name */ + + H5T_t *dt; /* Attribute's datatype */ + size_t dt_size; /* Size of datatype on disk */ + + H5S_t *ds; /* Attribute's dataspace */ + size_t ds_size; /* Size of dataspace on disk */ + + void *data; /* Attribute data (on a temporary basis) */ + size_t data_size; /* Size of data on disk */ + H5O_msg_crt_idx_t crt_idx; /* Attribute's creation index in the object header */ + unsigned nrefs; /* Ref count for times this object is refered */ +} H5A_shared_t; + +/* Define the main attribute structure */ +struct H5A_t { + H5O_shared_t sh_loc; /* Shared message info (must be first) */ + H5O_loc_t oloc; /* Object location for object attribute is on */ + hbool_t obj_opened; /* Object header entry opened? */ + H5G_name_t path; /* Group hierarchy path */ + H5A_shared_t *shared; /* Shared attribute information */ +}; + +/* Typedefs for "dense" attribute storage */ +/* (fractal heap & v2 B-tree info) */ + +/* Typedef for native 'name' field index records in the v2 B-tree */ +/* (Keep 'id' field first so generic record handling in callbacks works) */ +typedef struct H5A_dense_bt2_name_rec_t { + H5O_fheap_id_t id; /* Heap ID for attribute */ + uint8_t flags; /* Object header message flags for attribute */ + H5O_msg_crt_idx_t corder; /* 'creation order' field value */ + uint32_t hash; /* Hash of 'name' field value */ +} H5A_dense_bt2_name_rec_t; + +/* Typedef for native 'creation order' field index records in the v2 B-tree */ +/* (Keep 'id' field first so generic record handling in callbacks works) */ +typedef struct H5A_dense_bt2_corder_rec_t { + H5O_fheap_id_t id; /* Heap ID for attribute */ + uint8_t flags; /* Object header message flags for attribute */ + H5O_msg_crt_idx_t corder; /* 'creation order' field value */ +} H5A_dense_bt2_corder_rec_t; + +/* Define the 'found' callback function pointer for matching an attribute record in a v2 B-tree */ +typedef herr_t (*H5A_bt2_found_t)(const H5A_t *attr, hbool_t *took_ownership, void *op_data); + +/* + * Common data exchange structure for dense attribute storage. This structure + * is passed through the v2 B-tree layer to the methods for the objects + * to which the v2 B-tree points. + */ +typedef struct H5A_bt2_ud_common_t { + /* downward */ + H5F_t *f; /* Pointer to file that fractal heap is in */ + hid_t dxpl_id; /* DXPL for operation */ + H5HF_t *fheap; /* Fractal heap handle */ + H5HF_t *shared_fheap; /* Fractal heap handle for shared messages */ + const char *name; /* Name of attribute to compare */ + uint32_t name_hash; /* Hash of name of attribute to compare */ + uint8_t flags; /* Flags for attribute storage location */ + H5O_msg_crt_idx_t corder; /* Creation order value of attribute to compare */ + H5A_bt2_found_t found_op; /* Callback when correct attribute is found */ + void *found_op_data; /* Callback data when correct attribute is found */ +} H5A_bt2_ud_common_t; + +/* + * Data exchange structure for dense attribute storage. This structure is + * passed through the v2 B-tree layer when inserting attributes. + */ +typedef struct H5A_bt2_ud_ins_t { + /* downward */ + H5A_bt2_ud_common_t common; /* Common info for B-tree user data (must be first) */ + H5O_fheap_id_t id; /* Heap ID of attribute to insert */ +} H5A_bt2_ud_ins_t; + +/* Data structure to hold table of attributes for an object */ +typedef struct { + size_t nattrs; /* # of attributes in table */ + H5A_t **attrs; /* Pointer to array of attribute pointers */ +} H5A_attr_table_t; + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + +/* Declare extern the free list for H5A_t's */ +H5FL_EXTERN(H5A_t); + +/* Declare the external free lists for H5A_shared_t's */ +H5FL_EXTERN(H5A_shared_t); + +/* Declare extern a free list to manage blocks of type conversion data */ +H5FL_BLK_EXTERN(attr_buf); + +/* The v2 B-tree class for indexing 'name' field on attributes */ +H5_DLLVAR const H5B2_class_t H5A_BT2_NAME[1]; + +/* The v2 B-tree class for indexing 'creation order' field on attributes */ +H5_DLLVAR const H5B2_class_t H5A_BT2_CORDER[1]; + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +/* Function prototypes for H5A package scope */ +H5_DLL herr_t H5A_init(void); +H5_DLL herr_t H5A__term_deprec_interface(void); +H5_DLL hid_t H5A_create(const H5G_loc_t *loc, const char *name, + const H5T_t *type, const H5S_t *space, hid_t acpl_id, hid_t dxpl_id); +H5_DLL H5A_t * H5A_open_by_name(const H5G_loc_t *loc, const char *obj_name, + const char *attr_name, hid_t lapl_id, hid_t dxpl_id); +H5_DLL H5A_t *H5A_open_by_idx(const H5G_loc_t *loc, const char *obj_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id, hid_t dxpl_id); +H5_DLL ssize_t H5A_get_name(H5A_t *attr, size_t buf_size, char *buf); +H5_DLL H5A_t *H5A_copy(H5A_t *new_attr, const H5A_t *old_attr); +H5_DLL herr_t H5A_get_info(const H5A_t *attr, H5A_info_t *ainfo); +H5_DLL herr_t H5A_free(H5A_t *attr); +H5_DLL herr_t H5A_close(H5A_t *attr); +H5_DLL htri_t H5A_get_ainfo(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5O_ainfo_t *ainfo); +H5_DLL herr_t H5A_set_version(const H5F_t *f, H5A_t *attr); + +/* Attribute "dense" storage routines */ +H5_DLL herr_t H5A_dense_create(H5F_t *f, hid_t dxpl_id, H5O_ainfo_t *ainfo); +H5_DLL H5A_t *H5A_dense_open(H5F_t *f, hid_t dxpl_id, const H5O_ainfo_t *ainfo, + const char *name); +H5_DLL herr_t H5A_dense_insert(H5F_t *f, hid_t dxpl_id, const H5O_ainfo_t *ainfo, + H5A_t *attr); +H5_DLL herr_t H5A_dense_write(H5F_t *f, hid_t dxpl_id, const H5O_ainfo_t *ainfo, + H5A_t *attr); +H5_DLL herr_t H5A_dense_rename(H5F_t *f, hid_t dxpl_id, const H5O_ainfo_t *ainfo, + const char *old_name, const char *new_name); +H5_DLL herr_t H5A_dense_iterate(H5F_t *f, hid_t dxpl_id, hid_t loc_id, + const H5O_ainfo_t *ainfo, H5_index_t idx_type, H5_iter_order_t order, + hsize_t skip, hsize_t *last_attr, const H5A_attr_iter_op_t *attr_op, + void *op_data); +H5_DLL herr_t H5A_dense_remove(H5F_t *f, hid_t dxpl_id, const H5O_ainfo_t *ainfo, + const char *name); +H5_DLL herr_t H5A_dense_remove_by_idx(H5F_t *f, hid_t dxpl_id, const H5O_ainfo_t *ainfo, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n); +H5_DLL htri_t H5A_dense_exists(H5F_t *f, hid_t dxpl_id, const H5O_ainfo_t *ainfo, + const char *name); +H5_DLL herr_t H5A_dense_delete(H5F_t *f, hid_t dxpl_id, H5O_ainfo_t *ainfo); + + +/* Attribute table operations */ +H5_DLL herr_t H5A_compact_build_table(H5F_t *f, hid_t dxpl_id, H5O_t *oh, + H5_index_t idx_type, H5_iter_order_t order, H5A_attr_table_t *atable); +H5_DLL herr_t H5A_dense_build_table(H5F_t *f, hid_t dxpl_id, + const H5O_ainfo_t *ainfo, H5_index_t idx_type, H5_iter_order_t order, + H5A_attr_table_t *atable); +H5_DLL herr_t H5A_attr_iterate_table(const H5A_attr_table_t *atable, + hsize_t skip, hsize_t *last_attr, hid_t loc_id, + const H5A_attr_iter_op_t *attr_op, void *op_data); +H5_DLL herr_t H5A_attr_release_table(H5A_attr_table_t *atable); + +/* Attribute operations */ +H5_DLL herr_t H5O_attr_create(const H5O_loc_t *loc, hid_t dxpl_id, H5A_t *attr); +H5_DLL H5A_t *H5O_attr_open_by_name(const H5O_loc_t *loc, const char *name, + hid_t dxpl_id); +H5_DLL H5A_t *H5O_attr_open_by_idx(const H5O_loc_t *loc, H5_index_t idx_type, + H5_iter_order_t order, hsize_t n, hid_t dxpl_id); +H5_DLL herr_t H5O_attr_update_shared(H5F_t *f, hid_t dxpl_id, H5O_t *oh, + H5A_t *attr, H5O_shared_t *sh_mesg); +H5_DLL herr_t H5O_attr_write(const H5O_loc_t *loc, hid_t dxpl_id, + H5A_t *attr); +H5_DLL herr_t H5O_attr_rename(const H5O_loc_t *loc, hid_t dxpl_id, + const char *old_name, const char *new_name); +H5_DLL herr_t H5O_attr_remove(const H5O_loc_t *loc, const char *name, + hid_t dxpl_id); +H5_DLL herr_t H5O_attr_remove_by_idx(const H5O_loc_t *loc, H5_index_t idx_type, + H5_iter_order_t order, hsize_t n, hid_t dxpl_id); +H5_DLL htri_t H5O_attr_exists(const H5O_loc_t *loc, const char *name, hid_t dxpl_id); +#ifndef H5_NO_DEPRECATED_SYMBOLS +H5_DLL int H5O_attr_count(const H5O_loc_t *loc, hid_t dxpl_id); +#endif /* H5_NO_DEPRECATED_SYMBOLS */ +H5_DLL H5A_t *H5A_attr_copy_file(const H5A_t *attr_src, H5F_t *file_dst, hbool_t *recompute_size, + H5O_copy_t *cpy_info, hid_t dxpl_id); +H5_DLL herr_t H5A_attr_post_copy_file(const H5O_loc_t *src_oloc, const H5A_t *mesg_src, + H5O_loc_t *dst_oloc, const H5A_t *mesg_dst, hid_t dxpl_id, H5O_copy_t *cpy_info); +H5_DLL herr_t H5A_dense_post_copy_file_all(const H5O_loc_t *src_oloc, const H5O_ainfo_t * ainfo_src, + H5O_loc_t *dst_oloc, H5O_ainfo_t *ainfo_dst, hid_t dxpl_id, H5O_copy_t *cpy_info); + + +/* Testing functions */ +#ifdef H5A_TESTING +H5_DLL htri_t H5A_is_shared_test(hid_t aid); +H5_DLL herr_t H5A_get_shared_rc_test(hid_t attr_id, hsize_t *ref_count); +#endif /* H5A_TESTING */ + +#endif /* _H5Apkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Apublic.h b/Resources/windows-libs/HDF5/include/H5Apublic.h new file mode 100644 index 0000000000000000000000000000000000000000..99ca90e114a779e464ad138f57e5b045baf30a13 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Apublic.h @@ -0,0 +1,120 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5A module. + */ +#ifndef _H5Apublic_H +#define _H5Apublic_H + +/* Public headers needed by this file */ +#include "H5Ipublic.h" /* IDs */ +#include "H5Opublic.h" /* Object Headers */ +#include "H5Tpublic.h" /* Datatypes */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Information struct for attribute (for H5Aget_info/H5Aget_info_by_idx) */ +typedef struct { + hbool_t corder_valid; /* Indicate if creation order is valid */ + H5O_msg_crt_idx_t corder; /* Creation order */ + H5T_cset_t cset; /* Character set of attribute name */ + hsize_t data_size; /* Size of raw data */ +} H5A_info_t; + +/* Typedef for H5Aiterate2() callbacks */ +typedef herr_t (*H5A_operator2_t)(hid_t location_id/*in*/, + const char *attr_name/*in*/, const H5A_info_t *ainfo/*in*/, void *op_data/*in,out*/); + +/* Public function prototypes */ +H5_DLL hid_t H5Acreate2(hid_t loc_id, const char *attr_name, hid_t type_id, + hid_t space_id, hid_t acpl_id, hid_t aapl_id); +H5_DLL hid_t H5Acreate_by_name(hid_t loc_id, const char *obj_name, const char *attr_name, + hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id); +H5_DLL hid_t H5Aopen(hid_t obj_id, const char *attr_name, hid_t aapl_id); +H5_DLL hid_t H5Aopen_by_name(hid_t loc_id, const char *obj_name, + const char *attr_name, hid_t aapl_id, hid_t lapl_id); +H5_DLL hid_t H5Aopen_by_idx(hid_t loc_id, const char *obj_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t aapl_id, + hid_t lapl_id); +H5_DLL herr_t H5Awrite(hid_t attr_id, hid_t type_id, const void *buf); +H5_DLL herr_t H5Aread(hid_t attr_id, hid_t type_id, void *buf); +H5_DLL herr_t H5Aclose(hid_t attr_id); +H5_DLL hid_t H5Aget_space(hid_t attr_id); +H5_DLL hid_t H5Aget_type(hid_t attr_id); +H5_DLL hid_t H5Aget_create_plist(hid_t attr_id); +H5_DLL ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf); +H5_DLL ssize_t H5Aget_name_by_idx(hid_t loc_id, const char *obj_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, + char *name /*out*/, size_t size, hid_t lapl_id); +H5_DLL hsize_t H5Aget_storage_size(hid_t attr_id); +H5_DLL herr_t H5Aget_info(hid_t attr_id, H5A_info_t *ainfo /*out*/); +H5_DLL herr_t H5Aget_info_by_name(hid_t loc_id, const char *obj_name, + const char *attr_name, H5A_info_t *ainfo /*out*/, hid_t lapl_id); +H5_DLL herr_t H5Aget_info_by_idx(hid_t loc_id, const char *obj_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, + H5A_info_t *ainfo /*out*/, hid_t lapl_id); +H5_DLL herr_t H5Arename(hid_t loc_id, const char *old_name, const char *new_name); +H5_DLL herr_t H5Arename_by_name(hid_t loc_id, const char *obj_name, + const char *old_attr_name, const char *new_attr_name, hid_t lapl_id); +H5_DLL herr_t H5Aiterate2(hid_t loc_id, H5_index_t idx_type, + H5_iter_order_t order, hsize_t *idx, H5A_operator2_t op, void *op_data); +H5_DLL herr_t H5Aiterate_by_name(hid_t loc_id, const char *obj_name, H5_index_t idx_type, + H5_iter_order_t order, hsize_t *idx, H5A_operator2_t op, void *op_data, + hid_t lapd_id); +H5_DLL herr_t H5Adelete(hid_t loc_id, const char *name); +H5_DLL herr_t H5Adelete_by_name(hid_t loc_id, const char *obj_name, + const char *attr_name, hid_t lapl_id); +H5_DLL herr_t H5Adelete_by_idx(hid_t loc_id, const char *obj_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id); +H5_DLL htri_t H5Aexists(hid_t obj_id, const char *attr_name); +H5_DLL htri_t H5Aexists_by_name(hid_t obj_id, const char *obj_name, + const char *attr_name, hid_t lapl_id); + +/* Symbols defined for compatibility with previous versions of the HDF5 API. + * + * Use of these symbols is deprecated. + */ +#ifndef H5_NO_DEPRECATED_SYMBOLS + +/* Macros */ + + +/* Typedefs */ + +/* Typedef for H5Aiterate1() callbacks */ +typedef herr_t (*H5A_operator1_t)(hid_t location_id/*in*/, + const char *attr_name/*in*/, void *operator_data/*in,out*/); + + +/* Function prototypes */ +H5_DLL hid_t H5Acreate1(hid_t loc_id, const char *name, hid_t type_id, + hid_t space_id, hid_t acpl_id); +H5_DLL hid_t H5Aopen_name(hid_t loc_id, const char *name); +H5_DLL hid_t H5Aopen_idx(hid_t loc_id, unsigned idx); +H5_DLL int H5Aget_num_attrs(hid_t loc_id); +H5_DLL herr_t H5Aiterate1(hid_t loc_id, unsigned *attr_num, H5A_operator1_t op, + void *op_data); + +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +#ifdef __cplusplus +} +#endif + +#endif /* _H5Apublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5ArrayType.h b/Resources/windows-libs/HDF5/include/H5ArrayType.h new file mode 100644 index 0000000000000000000000000000000000000000..511126ee4a49a0cd696bc8f06a801f7b5b3329c9 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5ArrayType.h @@ -0,0 +1,63 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5ArrayType_H +#define __H5ArrayType_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/*! \class ArrayType + \brief Class ArrayType inherits from DataType and provides wrappers for + the HDF5's Array Datatypes. +*/ +class H5_DLLCPP ArrayType : public DataType { + public: + // Constructor that creates a new array data type based on the + // specified base type. + ArrayType(const DataType& base_type, int ndims, const hsize_t* dims); + + // Returns the number of dimensions of this array datatype. + int getArrayNDims(); + + // Returns the sizes of dimensions of this array datatype. + int getArrayDims(hsize_t* dims); + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("ArrayType"); } + + // Copy constructor: makes copy of the original object. + ArrayType( const ArrayType& original ); + + // Constructor that takes an existing id + ArrayType( const hid_t existing_id ); + + // Noop destructor + virtual ~ArrayType(); + + protected: + // Default constructor + ArrayType(); + + private: + int rank; // Rank of the array + hsize_t* dimensions; // Sizes of the array dimensions +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5ArrayType_H diff --git a/Resources/windows-libs/HDF5/include/H5AtomType.h b/Resources/windows-libs/HDF5/include/H5AtomType.h new file mode 100644 index 0000000000000000000000000000000000000000..792312ac8edcb5b55b0711cde25a92b3b5cfc701 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5AtomType.h @@ -0,0 +1,85 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5AtomType_H +#define __H5AtomType_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/*! \class AtomType + \brief AtomType is a base class, inherited by IntType, FloatType, + StrType, and PredType. + + AtomType provides operations on HDF5 atomic datatypes. It also inherits + from DataType. +*/ +class H5_DLLCPP AtomType : public DataType { + public: + // Returns the byte order of an atomic datatype. + H5T_order_t getOrder() const; + H5T_order_t getOrder( H5std_string& order_string ) const; + + // Sets the byte ordering of an atomic datatype. + void setOrder( H5T_order_t order ) const; + + // Retrieves the bit offset of the first significant bit. + // 12/05/00 - changed return type to int from size_t - C API + int getOffset() const; + + // Sets the bit offset of the first significant bit. + void setOffset( size_t offset ) const; + + // Retrieves the padding type of the least and most-significant bit padding. + void getPad( H5T_pad_t& lsb, H5T_pad_t& msb ) const; + + // Sets the least and most-significant bits padding types + void setPad( H5T_pad_t lsb, H5T_pad_t msb ) const; + + // Returns the precision of an atomic datatype. + size_t getPrecision() const; + + // Sets the precision of an atomic datatype. + void setPrecision( size_t precision ) const; + + // Sets the total size for an atomic datatype. + void setSize( size_t size ) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("AtomType"); } + +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Copy constructor - makes copy of the original object + AtomType( const AtomType& original ); + + // Noop destructor + virtual ~AtomType(); +#endif // DOXYGEN_SHOULD_SKIP_THIS + + protected: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Default constructor + AtomType(); + + // Constructor that takes an existing id + AtomType( const hid_t existing_id ); +#endif // DOXYGEN_SHOULD_SKIP_THIS +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5AtomType_H diff --git a/Resources/windows-libs/HDF5/include/H5Attribute.h b/Resources/windows-libs/HDF5/include/H5Attribute.h new file mode 100644 index 0000000000000000000000000000000000000000..33c4db319646fe54fb8be61c1e3f1252dc4506f8 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Attribute.h @@ -0,0 +1,114 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5Attribute_H +#define __H5Attribute_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/*! \class Attribute + \brief Class Attribute operates on HDF5 attributes. + + An attribute has many characteristics similar to a dataset, thus both + Attribute and DataSet are derivatives of AbstractDs. Attribute also + inherits from IdComponent because an attribute is an HDF5 component that + is identified by an identifier. +*/ +class H5_DLLCPP Attribute : public AbstractDs, public IdComponent { + public: + // Closes this attribute. + virtual void close(); + + // Gets the name of the file, in which this attribute belongs. + H5std_string getFileName() const; + + // Gets the name of this attribute. + ssize_t getName(char* attr_name, size_t buf_size = 0) const; + H5std_string getName(size_t len) const; + H5std_string getName() const; + ssize_t getName(H5std_string& attr_name, size_t len = 0) const; + // The overloaded function below is replaced by the one above and it + // is kept for backward compatibility purpose. + ssize_t getName( size_t buf_size, H5std_string& attr_name ) const; + + // Gets a copy of the dataspace for this attribute. + virtual DataSpace getSpace() const; + + // Returns the amount of storage size required for this attribute. + virtual hsize_t getStorageSize() const; + + // Returns the in memory size of this attribute's data. + virtual size_t getInMemDataSize() const; + + // Reads data from this attribute. + void read( const DataType& mem_type, void *buf ) const; + void read( const DataType& mem_type, H5std_string& strg ) const; + + // Writes data to this attribute. + void write(const DataType& mem_type, const void *buf ) const; + void write(const DataType& mem_type, const H5std_string& strg ) const; + + // Flushes all buffers associated with the file specified by this + // attribute to disk. + void flush( H5F_scope_t scope ) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("Attribute"); } + + // Creates a copy of an existing attribute using the attribute id + Attribute( const hid_t attr_id ); + + // Copy constructor: makes a copy of an existing Attribute object. + Attribute( const Attribute& original ); + + // Default constructor + Attribute(); + + // Gets the attribute id. + virtual hid_t getId() const; + + // Destructor: properly terminates access to this attribute. + virtual ~Attribute(); + + protected: + // Sets the attribute id. + virtual void p_setId(const hid_t new_id); + + private: + hid_t id; // HDF5 attribute id + + // This function contains the common code that is used by + // getTypeClass and various API functions getXxxType + // defined in AbstractDs for generic datatype and specific + // sub-types + virtual hid_t p_get_type() const; + + // Reads variable or fixed len strings from this attribute. + void p_read_variable_len(const DataType& mem_type, H5std_string& strg) const; + void p_read_fixed_len(const DataType& mem_type, H5std_string& strg) const; + + // do not inherit H5Object::iterateAttrs + int iterateAttrs() { return 0; } + + // do not inherit H5Object::renameAttr + void renameAttr() {} +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5Attribute_H diff --git a/Resources/windows-libs/HDF5/include/H5B2pkg.h b/Resources/windows-libs/HDF5/include/H5B2pkg.h new file mode 100644 index 0000000000000000000000000000000000000000..b820853b4c557afd52c29b5fc4d72e4208c97675 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5B2pkg.h @@ -0,0 +1,366 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Monday, January 31, 2005 + * + * Purpose: This file contains declarations which are visible only within + * the H5B2 package. Source files outside the H5B2 package should + * include H5B2private.h instead. + */ +#ifndef H5B2_PACKAGE +#error "Do not include this file outside the H5B2 package!" +#endif + +#ifndef _H5B2pkg_H +#define _H5B2pkg_H + +/* Get package's private header */ +#include "H5B2private.h" + +/* Other private headers needed by this file */ +#include "H5ACprivate.h" /* Metadata cache */ +#include "H5FLprivate.h" /* Free Lists */ + + +/**************************/ +/* Package Private Macros */ +/**************************/ + +/* Size of storage for number of records per node (on disk) */ +#define H5B2_SIZEOF_RECORDS_PER_NODE (unsigned)2 + +/* Size of a "tree pointer" (on disk) */ +/* (essentially, the largest internal pointer allowed) */ +#define H5B2_TREE_POINTER_SIZE(h) ( \ + (h)->sizeof_addr + \ + H5B2_SIZEOF_RECORDS_PER_NODE + \ + (h)->sizeof_size \ + ) + +/* Size of a internal node pointer (on disk) */ +#define H5B2_INT_POINTER_SIZE(h, d) ( \ + (unsigned)(h)->sizeof_addr /* Address of child node */ \ + + (h)->max_nrec_size /* # of records in child node */ \ + + (h)->node_info[(d) - 1].cum_max_nrec_size /* Total # of records in child & below */ \ + ) + +/* Size of checksum information (on disk) */ +#define H5B2_SIZEOF_CHKSUM 4 + +/* Format overhead for all v2 B-tree metadata in the file */ +#define H5B2_METADATA_PREFIX_SIZE ( \ + (unsigned)H5_SIZEOF_MAGIC /* Signature */ \ + + (unsigned)1 /* Version */ \ + + (unsigned)1 /* Tree type */ \ + + (unsigned)H5B2_SIZEOF_CHKSUM /* Metadata checksum */ \ + ) + +/* Size of the v2 B-tree header on disk */ +#define H5B2_HEADER_SIZE(h) ( \ + /* General metadata fields */ \ + H5B2_METADATA_PREFIX_SIZE \ + \ + /* Header specific fields */ \ + + (unsigned)4 /* Node size, in bytes */ \ + + (unsigned)2 /* Record size, in bytes */ \ + + (unsigned)2 /* Depth of tree */ \ + + (unsigned)1 /* Split % of full (as integer, ie. "98" means 98%) */ \ + + (unsigned)1 /* Merge % of full (as integer, ie. "98" means 98%) */ \ + + H5B2_TREE_POINTER_SIZE(h) /* Node pointer to root node in tree */ \ + ) + +/* Size of the v2 B-tree internal node prefix */ +#define H5B2_INT_PREFIX_SIZE ( \ + /* General metadata fields */ \ + H5B2_METADATA_PREFIX_SIZE \ + \ + /* Header specific fields */ \ + /* <none> */ \ + ) + +/* Size of the v2 B-tree leaf node prefix */ +#define H5B2_LEAF_PREFIX_SIZE ( \ + /* General metadata fields */ \ + H5B2_METADATA_PREFIX_SIZE \ + \ + /* Header specific fields */ \ + /* <none> */ \ + ) + +/* Macro to retrieve pointer to i'th native record for native record buffer */ +#define H5B2_NAT_NREC(b, hdr, idx) ((b) + (hdr)->nat_off[(idx)]) + +/* Macro to retrieve pointer to i'th native record for internal node */ +#define H5B2_INT_NREC(i, hdr, idx) H5B2_NAT_NREC((i)->int_native, (hdr), (idx)) + +/* Macro to retrieve pointer to i'th native record for leaf node */ +#define H5B2_LEAF_NREC(l, hdr, idx) H5B2_NAT_NREC((l)->leaf_native, (hdr), (idx)) + +/* Number of records that fit into internal node */ +/* (accounts for extra node pointer by counting it in with the prefix bytes) */ +#define H5B2_NUM_INT_REC(h, d) \ + (((h)->node_size - (H5B2_INT_PREFIX_SIZE + H5B2_INT_POINTER_SIZE(h, d))) / ((h)->rrec_size + H5B2_INT_POINTER_SIZE(h, d))) + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +/* A "node pointer" to another B-tree node */ +typedef struct { + haddr_t addr; /* Address of other node */ + uint16_t node_nrec; /* Number of records used in node pointed to */ + hsize_t all_nrec; /* Number of records in node pointed to and all it's children */ +} H5B2_node_ptr_t; + +/* Information about a node at a given depth */ +typedef struct { + unsigned max_nrec; /* Max. number of records in node */ + unsigned split_nrec; /* Number of records to split node at */ + unsigned merge_nrec; /* Number of records to merge node at */ + hsize_t cum_max_nrec; /* Cumulative max. # of records below this node's depth */ + uint8_t cum_max_nrec_size; /* Size to store cumulative max. # of records for this node (in bytes) */ + H5FL_fac_head_t *nat_rec_fac; /* Factory for native record blocks */ + H5FL_fac_head_t *node_ptr_fac; /* Factory for node pointer blocks */ +} H5B2_node_info_t; + +/* The B-tree header information */ +typedef struct H5B2_hdr_t { + /* Information for H5AC cache functions, _must_ be first field in structure */ + H5AC_info_t cache_info; + + /* Internal B-tree information (stored) */ + H5B2_node_ptr_t root; /* Node pointer to root node in B-tree */ + + /* Information set by user (stored) */ + uint8_t split_percent; /* Percent full at which to split the node, when inserting */ + uint8_t merge_percent; /* Percent full at which to merge the node, when deleting */ + uint32_t node_size; /* Size of B-tree nodes, in bytes */ + uint32_t rrec_size; /* Size of "raw" (on disk) record, in bytes */ + + /* Dynamic information (stored) */ + uint16_t depth; /* B-tree's overall depth */ + + /* Derived information from user's information (not stored) */ + uint8_t max_nrec_size; /* Size to store max. # of records in any node (in bytes) */ + + /* Shared internal data structures (not stored) */ + H5F_t *f; /* Pointer to the file that the B-tree is in */ + haddr_t addr; /* Address of B-tree header in the file */ + size_t hdr_size; /* Size of the B-tree header on disk */ + size_t rc; /* Reference count of nodes using this header */ + size_t file_rc; /* Reference count of files using this header */ + hbool_t pending_delete; /* B-tree is pending deletion */ + uint8_t sizeof_size; /* Size of file sizes */ + uint8_t sizeof_addr; /* Size of file addresses */ + H5B2_remove_t remove_op; /* Callback operator for deleting B-tree */ + void *remove_op_data;/* B-tree deletion callback's context */ + uint8_t *page; /* Common disk page for I/O */ + size_t *nat_off; /* Array of offsets of native records */ + H5B2_node_info_t *node_info; /* Table of node info structs for current depth of B-tree */ + + /* Client information (not stored) */ + const H5B2_class_t *cls; /* Class of B-tree client */ + void *cb_ctx; /* Client callback context */ +} H5B2_hdr_t; + +/* B-tree leaf node information */ +typedef struct H5B2_leaf_t { + /* Information for H5AC cache functions, _must_ be first field in structure */ + H5AC_info_t cache_info; + + /* Internal B-tree information */ + H5B2_hdr_t *hdr; /* Pointer to the [pinned] v2 B-tree header */ + uint8_t *leaf_native; /* Pointer to native records */ + uint16_t nrec; /* Number of records in node */ +} H5B2_leaf_t; + +/* B-tree internal node information */ +typedef struct H5B2_internal_t { + /* Information for H5AC cache functions, _must_ be first field in structure */ + H5AC_info_t cache_info; + + /* Internal B-tree information */ + H5B2_hdr_t *hdr; /* Pointer to the [pinned] v2 B-tree header */ + uint8_t *int_native; /* Pointer to native records */ + H5B2_node_ptr_t *node_ptrs; /* Pointer to node pointers */ + uint16_t nrec; /* Number of records in node */ + uint16_t depth; /* Depth of this node in the B-tree */ +} H5B2_internal_t; + +/* v2 B-tree */ +struct H5B2_t { + H5B2_hdr_t *hdr; /* Pointer to internal v2 B-tree header info */ + H5F_t *f; /* Pointer to file for v2 B-tree */ +}; + +/* Callback info for loading a free space header into the cache */ +typedef struct H5B2_hdr_cache_ud_t { + H5F_t *f; /* File that v2 b-tree header is within */ + void *ctx_udata; /* User-data for protecting */ +} H5B2_hdr_cache_ud_t; + +/* Callback info for loading a free space internal node into the cache */ +typedef struct H5B2_internal_cache_ud_t { + H5F_t *f; /* File that v2 b-tree header is within */ + H5B2_hdr_t *hdr; /* v2 B-tree header */ + unsigned nrec; /* Number of records in node to load */ + unsigned depth; /* Depth of node to load */ +} H5B2_internal_cache_ud_t; + +/* Callback info for loading a free space leaf node into the cache */ +typedef struct H5B2_leaf_cache_ud_t { + H5F_t *f; /* File that v2 b-tree header is within */ + H5B2_hdr_t *hdr; /* v2 B-tree header */ + unsigned nrec; /* Number of records in node to load */ +} H5B2_leaf_cache_ud_t; + +#ifdef H5B2_TESTING +/* Node information for testing */ +typedef struct { + unsigned depth; /* Depth of node */ + unsigned nrec; /* Number of records in node */ +} H5B2_node_info_test_t; +#endif /* H5B2_TESTING */ + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + +/* H5B2 header inherits cache-like properties from H5AC */ +H5_DLLVAR const H5AC_class_t H5AC_BT2_HDR[1]; + +/* H5B2 internal node inherits cache-like properties from H5AC */ +H5_DLLVAR const H5AC_class_t H5AC_BT2_INT[1]; + +/* H5B2 leaf node inherits cache-like properties from H5AC */ +H5_DLLVAR const H5AC_class_t H5AC_BT2_LEAF[1]; + +/* Declare a free list to manage the H5B2_internal_t struct */ +H5FL_EXTERN(H5B2_internal_t); + +/* Declare a free list to manage the H5B2_leaf_t struct */ +H5FL_EXTERN(H5B2_leaf_t); + +/* Internal v2 B-tree testing class */ +#ifdef H5B2_TESTING +H5_DLLVAR const H5B2_class_t H5B2_TEST[1]; +#endif /* H5B2_TESTING */ + +/* Array of v2 B-tree client ID -> client class mappings */ +extern const H5B2_class_t *const H5B2_client_class_g[H5B2_NUM_BTREE_ID]; + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +/* Routines for managing B-tree header info */ +H5_DLL H5B2_hdr_t *H5B2_hdr_alloc(H5F_t *f); +H5_DLL haddr_t H5B2_hdr_create(H5F_t *f, hid_t dxpl_id, + const H5B2_create_t *cparam, void *ctx_udata); +H5_DLL herr_t H5B2_hdr_init(H5B2_hdr_t *hdr, const H5B2_create_t *cparam, + void *ctx_udata, uint16_t depth); +H5_DLL herr_t H5B2_hdr_incr(H5B2_hdr_t *hdr); +H5_DLL herr_t H5B2_hdr_decr(H5B2_hdr_t *hdr); +H5_DLL herr_t H5B2_hdr_fuse_incr(H5B2_hdr_t *hdr); +H5_DLL size_t H5B2_hdr_fuse_decr(H5B2_hdr_t *hdr); +H5_DLL herr_t H5B2_hdr_dirty(H5B2_hdr_t *hdr); +H5_DLL herr_t H5B2_hdr_delete(H5B2_hdr_t *hdr, hid_t dxpl_id); + +/* Routines for operating on leaf nodes */ +H5B2_leaf_t *H5B2_protect_leaf(H5B2_hdr_t *hdr, hid_t dxpl_id, haddr_t addr, + unsigned nrec, H5AC_protect_t rw); + +/* Routines for operating on internal nodes */ +H5_DLL H5B2_internal_t *H5B2_protect_internal(H5B2_hdr_t *hdr, hid_t dxpl_id, + haddr_t addr, unsigned nrec, unsigned depth, H5AC_protect_t rw); + +/* Routines for allocating nodes */ +H5_DLL herr_t H5B2_split_root(H5B2_hdr_t *hdr, hid_t dxpl_id); +H5_DLL herr_t H5B2_create_leaf(H5B2_hdr_t *hdr, hid_t dxpl_id, + H5B2_node_ptr_t *node_ptr); + +/* Routines for releasing structures */ +H5_DLL herr_t H5B2_hdr_free(H5B2_hdr_t *hdr); +H5_DLL herr_t H5B2_leaf_free(H5B2_leaf_t *l); +H5_DLL herr_t H5B2_internal_free(H5B2_internal_t *i); + +/* Routines for inserting records */ +H5_DLL herr_t H5B2_insert_internal(H5B2_hdr_t *hdr, hid_t dxpl_id, + unsigned depth, unsigned *parent_cache_info_flags_ptr, + H5B2_node_ptr_t *curr_node_ptr, void *udata); +H5_DLL herr_t H5B2_insert_leaf(H5B2_hdr_t *hdr, hid_t dxpl_id, + H5B2_node_ptr_t *curr_node_ptr, void *udata); + +/* Routines for iterating over nodes/records */ +H5_DLL herr_t H5B2_iterate_node(H5B2_hdr_t *hdr, hid_t dxpl_id, unsigned depth, + const H5B2_node_ptr_t *curr_node, H5B2_operator_t op, void *op_data); +H5_DLL herr_t H5B2_node_size(H5B2_hdr_t *hdr, hid_t dxpl_id, + unsigned depth, const H5B2_node_ptr_t *curr_node, hsize_t *op_data); + +/* Routines for locating records */ +H5_DLL int H5B2_locate_record(const H5B2_class_t *type, unsigned nrec, + size_t *rec_off, const uint8_t *native, const void *udata, unsigned *idx); +H5_DLL herr_t H5B2_neighbor_internal(H5B2_hdr_t *hdr, hid_t dxpl_id, + unsigned depth, H5B2_node_ptr_t *curr_node_ptr, void *neighbor_loc, + H5B2_compare_t comp, void *udata, H5B2_found_t op, void *op_data); +H5_DLL herr_t H5B2_neighbor_leaf(H5B2_hdr_t *hdr, hid_t dxpl_id, + H5B2_node_ptr_t *curr_node_ptr, void *neighbor_loc, + H5B2_compare_t comp, void *udata, H5B2_found_t op, void *op_data); + +/* Routines for removing records */ +H5_DLL herr_t H5B2_remove_internal(H5B2_hdr_t *hdr, hid_t dxpl_id, + hbool_t *depth_decreased, void *swap_loc, unsigned depth, H5AC_info_t *parent_cache_info, + hbool_t * parent_cache_info_dirtied_ptr, H5B2_node_ptr_t *curr_node_ptr, void *udata, + H5B2_remove_t op, void *op_data); +H5_DLL herr_t H5B2_remove_leaf(H5B2_hdr_t *hdr, hid_t dxpl_id, + H5B2_node_ptr_t *curr_node_ptr, void *udata, H5B2_remove_t op, + void *op_data); +H5_DLL herr_t H5B2_remove_internal_by_idx(H5B2_hdr_t *hdr, hid_t dxpl_id, + hbool_t *depth_decreased, void *swap_loc, unsigned depth, H5AC_info_t *parent_cache_info, + hbool_t * parent_cache_info_dirtied_ptr, H5B2_node_ptr_t *curr_node_ptr, hsize_t idx, + H5B2_remove_t op, void *op_data); +H5_DLL herr_t H5B2_remove_leaf_by_idx(H5B2_hdr_t *hdr, hid_t dxpl_id, + H5B2_node_ptr_t *curr_node_ptr, unsigned idx, H5B2_remove_t op, + void *op_data); + +/* Routines for deleting nodes */ +H5_DLL herr_t H5B2_delete_node(H5B2_hdr_t *hdr, hid_t dxpl_id, unsigned depth, + const H5B2_node_ptr_t *curr_node, H5B2_remove_t op, void *op_data); + +/* Debugging routines for dumping file structures */ +H5_DLL herr_t H5B2_hdr_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, + FILE *stream, int indent, int fwidth, const H5B2_class_t *type, haddr_t obj_addr); +H5_DLL herr_t H5B2_int_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, + FILE *stream, int indent, int fwidth, const H5B2_class_t *type, + haddr_t hdr_addr, unsigned nrec, unsigned depth, haddr_t obj_addr); +H5_DLL herr_t H5B2_leaf_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, + FILE *stream, int indent, int fwidth, const H5B2_class_t *type, + haddr_t hdr_addr, unsigned nrec, haddr_t obj_addr); + +/* Testing routines */ +#ifdef H5B2_TESTING +H5_DLL herr_t H5B2_get_root_addr_test(H5B2_t *bt2, haddr_t *root_addr); +H5_DLL int H5B2_get_node_depth_test(H5B2_t *bt2, hid_t dxpl_id, void *udata); +H5_DLL herr_t H5B2_get_node_info_test(H5B2_t *bt2, hid_t dxpl_id, + void *udata, H5B2_node_info_test_t *ninfo); +#endif /* H5B2_TESTING */ + +#endif /* _H5B2pkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5B2public.h b/Resources/windows-libs/HDF5/include/H5B2public.h new file mode 100644 index 0000000000000000000000000000000000000000..43ec5d781b1ffa09d1381ec04b00b9f6c8f9c224 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5B2public.h @@ -0,0 +1,54 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5B2public.h + * Jan 31 2005 + * Quincey Koziol <koziol@ncsa.uiuc.edu> + * + * Purpose: Public declarations for the v2 B-tree package. + * + *------------------------------------------------------------------------- + */ + +#ifndef _H5B2public_H +#define _H5B2public_H + +/* Public headers needed by this file */ +#include "H5public.h" + +/*****************/ +/* Public Macros */ +/*****************/ + +/*******************/ +/* Public Typedefs */ +/*******************/ + +/**********************************/ +/* Public API Function Prototypes */ +/**********************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _H5B2public_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Bpkg.h b/Resources/windows-libs/HDF5/include/H5Bpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..46e2b28fc1d3108fbaaad9aa2fb60d5d584376f7 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Bpkg.h @@ -0,0 +1,98 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Thursday, May 15, 2003 + * + * Purpose: This file contains declarations which are visible only within + * the H5B package. Source files outside the H5B package should + * include H5Bprivate.h instead. + */ +#ifndef H5B_PACKAGE +#error "Do not include this file outside the H5B package!" +#endif + +#ifndef _H5Bpkg_H +#define _H5Bpkg_H + +/* Get package's private header */ +#include "H5Bprivate.h" + +/* Other private headers needed by this file */ +#include "H5ACprivate.h" /* Metadata cache */ +#include "H5FLprivate.h" /* Free Lists */ + + +/**************************/ +/* Package Private Macros */ +/**************************/ + +/* Get the native key at a given index */ +#define H5B_NKEY(b, shared, idx) ((b)->native + (shared)->nkey[(idx)]) + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +/* The B-tree node as stored in memory... */ +typedef struct H5B_t { + H5AC_info_t cache_info; /* Information for H5AC cache functions */ + /* _must_ be first field in structure */ + H5RC_t *rc_shared; /*ref-counted shared info */ + unsigned level; /*node level */ + unsigned nchildren; /*number of child pointers */ + haddr_t left; /*address of left sibling */ + haddr_t right; /*address of right sibling */ + uint8_t *native; /*array of keys in native format */ + haddr_t *child; /*2k child pointers */ +} H5B_t; + +/* Callback info for loading a B-tree node into the cache */ +typedef struct H5B_cache_ud_t { + H5F_t *f; /* File that B-tree node is within */ + const struct H5B_class_t *type; /* Type of tree */ + H5RC_t *rc_shared; /* Ref-counted shared info */ +} H5B_cache_ud_t; + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + +/* H5B header inherits cache-like properties from H5AC */ +H5_DLLVAR const H5AC_class_t H5AC_BT[1]; + +/* Declare a free list to manage the haddr_t sequence information */ +H5FL_SEQ_EXTERN(haddr_t); + +/* Declare a PQ free list to manage the native block information */ +H5FL_BLK_EXTERN(native_block); + +/* Declare a free list to manage the H5B_t struct */ +H5FL_EXTERN(H5B_t); + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ +H5_DLL herr_t H5B_node_dest(H5B_t *bt); +#ifdef H5B_DEBUG +herr_t H5B_assert(H5F_t *f, hid_t dxpl_id, haddr_t addr, const H5B_class_t *type, + void *udata); +#endif + +#endif /*_H5Bpkg_H*/ + diff --git a/Resources/windows-libs/HDF5/include/H5Bpublic.h b/Resources/windows-libs/HDF5/include/H5Bpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..0016996075a42cc3e5ba720816e09ca2247e20f5 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Bpublic.h @@ -0,0 +1,41 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5Bproto.h + * Jul 10 1997 + * Robb Matzke <matzke@llnl.gov> + * + * Purpose: Public declarations for the H5B package. + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifndef _H5Bpublic_H +#define _H5Bpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Resources/windows-libs/HDF5/include/H5Classes.h b/Resources/windows-libs/HDF5/include/H5Classes.h new file mode 100644 index 0000000000000000000000000000000000000000..de7cf4a739dd19739eab6dea98f58d80f5b29f01 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Classes.h @@ -0,0 +1,52 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5Classes_H +#define __H5Classes_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + class Exception; + class IdComponent; + class H5Location; + class H5Object; + class PropList; + class FileCreatPropList; + class FileAccPropList; + class DSetCreatPropList; + class DSetMemXferPropList; + class DTypePropList; + class DataType; + class DataSpace; + class AtomType; + class PredType; + class EnumType; + class IntType; + class FloatType; + class StrType; + class CompType; + //class RefType; + class AbstractDs; + class DataSet; + class Group; + class H5File; + class Attribute; + class H5Library; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5Classes_H diff --git a/Resources/windows-libs/HDF5/include/H5CommonFG.h b/Resources/windows-libs/HDF5/include/H5CommonFG.h new file mode 100644 index 0000000000000000000000000000000000000000..f11548a56fb769b69bd1db687b60b873fb433d0c --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5CommonFG.h @@ -0,0 +1,171 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __CommonFG_H +#define __CommonFG_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +// Class forwarding +class Group; +class H5File; +class ArrayType; +class VarLenType; + +/*! \class CommonFG + \brief \a CommonFG is an abstract base class of H5File and H5Group. + + It provides common operations of H5File and H5Group. +*/ +class H5_DLLCPP CommonFG { + public: + // Creates a new group at this location which can be a file + // or another group. + Group createGroup(const char* name, size_t size_hint = 0) const; + Group createGroup(const H5std_string& name, size_t size_hint = 0) const; + + // Opens an existing group in a location which can be a file + // or another group. + Group openGroup(const char* name) const; + Group openGroup(const H5std_string& name) const; + + // Creates a new dataset at this location. + DataSet createDataSet(const char* name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT) const; + DataSet createDataSet(const H5std_string& name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT) const; + + // Opens an existing dataset at this location. + DataSet openDataSet(const char* name) const; + DataSet openDataSet(const H5std_string& name) const; + + // Returns the value of a symbolic link. + H5std_string getLinkval(const char* link_name, size_t size=0) const; + H5std_string getLinkval(const H5std_string& link_name, size_t size=0) const; + + // Returns the number of objects in this group. + hsize_t getNumObjs() const; + + // Retrieves the name of an object in this group, given the + // object's index. + H5std_string getObjnameByIdx(hsize_t idx) const; + ssize_t getObjnameByIdx(hsize_t idx, char* name, size_t size) const; + ssize_t getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const; + + // Retrieves the type of an object in this file or group, given the + // object's name + H5O_type_t childObjType(const H5std_string& objname) const; + H5O_type_t childObjType(const char* objname) const; + H5O_type_t childObjType(hsize_t index, H5_index_t index_type=H5_INDEX_NAME, H5_iter_order_t order=H5_ITER_INC, const char* objname=".") const; + +#ifndef H5_NO_DEPRECATED_SYMBOLS + // Returns the type of an object in this group, given the + // object's index. + H5G_obj_t getObjTypeByIdx(hsize_t idx) const; + H5G_obj_t getObjTypeByIdx(hsize_t idx, char* type_name) const; + H5G_obj_t getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const; + + // Returns information about an HDF5 object, given by its name, + // at this location. + void getObjinfo(const char* name, hbool_t follow_link, H5G_stat_t& statbuf) const; + void getObjinfo(const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf) const; + void getObjinfo(const char* name, H5G_stat_t& statbuf) const; + void getObjinfo(const H5std_string& name, H5G_stat_t& statbuf) const; + + // Iterates over the elements of this group - not implemented in + // C++ style yet. + int iterateElems(const char* name, int *idx, H5G_iterate_t op, void *op_data); + int iterateElems(const H5std_string& name, int *idx, H5G_iterate_t op, void *op_data); +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + + // Creates a link of the specified type from new_name to current_name; + // both names are interpreted relative to the specified location id. + void link(H5L_type_t link_type, const char* curr_name, const char* new_name) const; + void link(H5L_type_t link_type, const H5std_string& curr_name, const H5std_string& new_name) const; + + // Removes the specified name at this location. + void unlink(const char* name) const; + void unlink(const H5std_string& name) const; + + // Mounts the file 'child' onto this location. + void mount(const char* name, const H5File& child, const PropList& plist) const; + void mount(const char* name, H5File& child, PropList& plist) const; // backward compatibility + void mount(const H5std_string& name, const H5File& child, const PropList& plist) const; + void mount(const H5std_string& name, H5File& child, PropList& plist) const; // backward compatibility + + // Unmounts the file named 'name' from this parent location. + void unmount(const char* name) const; + void unmount(const H5std_string& name) const; + + // Renames an object at this location. + void move(const char* src, const char* dst) const; + void move(const H5std_string& src, const H5std_string& dst) const; + + // Opens a generic named datatype in this location. + DataType openDataType(const char* name) const; + DataType openDataType(const H5std_string& name) const; + + // Opens a named array datatype in this location. + ArrayType openArrayType(const char* name) const; + ArrayType openArrayType(const H5std_string& name) const; + + // Opens a named compound datatype in this location. + CompType openCompType(const char* name) const; + CompType openCompType(const H5std_string& name) const; + + // Opens a named enumeration datatype in this location. + EnumType openEnumType(const char* name) const; + EnumType openEnumType(const H5std_string& name) const; + + // Opens a named integer datatype in this location. + IntType openIntType(const char* name) const; + IntType openIntType(const H5std_string& name) const; + + // Opens a named floating-point datatype in this location. + FloatType openFloatType(const char* name) const; + FloatType openFloatType(const H5std_string& name) const; + + // Opens a named string datatype in this location. + StrType openStrType(const char* name) const; + StrType openStrType(const H5std_string& name) const; + + // Opens a named variable length datatype in this location. + VarLenType openVarLenType(const char* name) const; + VarLenType openVarLenType(const H5std_string& name) const; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS + /// For subclasses, H5File and Group, to return the correct + /// object id, i.e. file or group id. + virtual hid_t getLocId() const = 0; + + + /// For subclasses, H5File and Group, to throw appropriate exception. + virtual void throwException(const H5std_string& func_name, const H5std_string& msg) const = 0; + + // Default constructor. + CommonFG(); + + // Noop destructor. + virtual ~CommonFG(); +#endif // DOXYGEN_SHOULD_SKIP_THIS + +}; // end of CommonFG declaration + +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __CommonFG_H + diff --git a/Resources/windows-libs/HDF5/include/H5CompType.h b/Resources/windows-libs/HDF5/include/H5CompType.h new file mode 100644 index 0000000000000000000000000000000000000000..bd6d76c96e612593b24122d50338dfb75dce200a --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5CompType.h @@ -0,0 +1,118 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5CompType_H +#define __H5CompType_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/*! \class CompType + \brief CompType is a derivative of a DataType and operates on HDF5 + compound datatypes. +*/ +class H5_DLLCPP CompType : public DataType { + public: + // Default constructor + CompType(); + + // Creates a compound datatype using an existing id + CompType( const hid_t existing_id ); + + // Creates a new compound datatype, given the type's size + CompType( size_t size ); // H5Tcreate + + // Gets the compound datatype of the specified dataset + CompType( const DataSet& dataset ); // H5Dget_type + + // Copy constructor - makes a copy of original object + CompType( const CompType& original ); + + // Returns the type class of the specified member of this compound + // datatype. It provides to the user a way of knowing what type + // to create another datatype of the same class + H5T_class_t getMemberClass( unsigned member_num ) const; + + // Returns the index of a member in this compound data type. + int getMemberIndex(const char* name) const; + int getMemberIndex(const H5std_string& name) const; + + // Returns the offset of a member of this compound datatype. + size_t getMemberOffset( unsigned memb_no ) const; + + // Returns the name of a member of this compound datatype. + H5std_string getMemberName( unsigned member_num ) const; + + // Returns the generic datatype of the specified member in + // this compound datatype. + DataType getMemberDataType( unsigned member_num ) const; + + // Returns the array datatype of the specified member in + // this compound datatype. + ArrayType getMemberArrayType( unsigned member_num ) const; + + // Returns the compound datatype of the specified member in + // this compound datatype. + CompType getMemberCompType( unsigned member_num ) const; + + // Returns the enumeration datatype of the specified member in + // this compound datatype. + EnumType getMemberEnumType( unsigned member_num ) const; + + // Returns the integer datatype of the specified member in + // this compound datatype. + IntType getMemberIntType( unsigned member_num ) const; + + // Returns the floating-point datatype of the specified member in + // this compound datatype. + FloatType getMemberFloatType( unsigned member_num ) const; + + // Returns the string datatype of the specified member in + // this compound datatype. + StrType getMemberStrType( unsigned member_num ) const; + + // Returns the variable length datatype of the specified member in + // this compound datatype. + VarLenType getMemberVarLenType( unsigned member_num ) const; + + // Returns the number of members in this compound datatype. + int getNmembers() const; + + // Adds a new member to this compound datatype. + void insertMember( const H5std_string& name, size_t offset, const DataType& new_member ) const; + + // Recursively removes padding from within this compound datatype. + void pack() const; + + // Sets the total size for this compound datatype. + void setSize(size_t size) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("CompType"); } + + // Noop destructor. + virtual ~CompType(); + + private: + // Contains common code that is used by the member functions + // getMemberXxxType + hid_t p_get_member_type(unsigned member_num) const; +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5CompType_H diff --git a/Resources/windows-libs/HDF5/include/H5Cpkg.h b/Resources/windows-libs/HDF5/include/H5Cpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..af39dfb9a22aaf3c1f2ed6242ff608622d5f2d94 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Cpkg.h @@ -0,0 +1,3566 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: John Mainzer -- 10/12/04 + * + * Purpose: This file contains declarations which are normally visible + * only within the H5C package. + * + * Source files outside the H5C package should include + * H5Cprivate.h instead. + * + * The one exception to this rule is test/cache.c. The test + * code is easier to write if it can look at the cache's + * internal data structures. Indeed, this is the main + * reason why this file was created. + */ + +#ifndef H5C_PACKAGE +#error "Do not include this file outside the H5C package!" +#endif + +#ifndef _H5Cpkg_H +#define _H5Cpkg_H + + +/* Get package's private header */ +#include "H5Cprivate.h" + + +/* Get needed headers */ +#include "H5SLprivate.h" /* Skip lists */ + +/* With the introduction of the fractal heap, it is now possible for + * entries to be dirtied, resized, and/or moved in the flush callbacks. + * As a result, on flushes, it may be necessary to make multiple passes + * through the slist before it is empty. The H5C__MAX_PASSES_ON_FLUSH + * #define is used to set an upper limit on the number of passes. + * The current value was obtained via personal communication with + * Quincey. I have applied a fudge factor of 2. + * + * -- JRM + */ + +#define H5C__MAX_PASSES_ON_FLUSH 4 + + + +/**************************************************************************** + * + * structure H5C_t + * + * Catchall structure for all variables specific to an instance of the cache. + * + * While the individual fields of the structure are discussed below, the + * following overview may be helpful. + * + * Entries in the cache are stored in an instance of H5TB_TREE, indexed on + * the entry's disk address. While the H5TB_TREE is less efficient than + * hash table, it keeps the entries in address sorted order. As flushes + * in parallel mode are more efficient if they are issued in increasing + * address order, this is a significant benefit. Also the H5TB_TREE code + * was readily available, which reduced development time. + * + * While the cache was designed with multiple replacement policies in mind, + * at present only a modified form of LRU is supported. + * + * JRM - 4/26/04 + * + * Profiling has indicated that searches in the instance of H5TB_TREE are + * too expensive. To deal with this issue, I have augmented the cache + * with a hash table in which all entries will be stored. Given the + * advantages of flushing entries in increasing address order, the TBBT + * is retained, but only dirty entries are stored in it. At least for + * now, we will leave entries in the TBBT after they are flushed. + * + * Note that index_size and index_len now refer to the total size of + * and number of entries in the hash table. + * + * JRM - 7/19/04 + * + * The TBBT has since been replaced with a skip list. This change + * greatly predates this note. + * + * JRM - 9/26/05 + * + * magic: Unsigned 32 bit integer always set to H5C__H5C_T_MAGIC. + * This field is used to validate pointers to instances of + * H5C_t. + * + * flush_in_progress: Boolean flag indicating whether a flush is in + * progress. + * + * trace_file_ptr: File pointer pointing to the trace file, which is used + * to record cache operations for use in simulations and design + * studies. This field will usually be NULL, indicating that + * no trace file should be recorded. + * + * Since much of the code supporting the parallel metadata + * cache is in H5AC, we don't write the trace file from + * H5C. Instead, H5AC reads the trace_file_ptr as needed. + * + * When we get to using H5C in other places, we may add + * code to write trace file data at the H5C level as well. + * + * aux_ptr: Pointer to void used to allow wrapper code to associate + * its data with an instance of H5C_t. The H5C cache code + * sets this field to NULL, and otherwise leaves it alone. + * + * max_type_id: Integer field containing the maximum type id number assigned + * to a type of entry in the cache. All type ids from 0 to + * max_type_id inclusive must be defined. The names of the + * types are stored in the type_name_table discussed below, and + * indexed by the ids. + * + * type_name_table_ptr: Pointer to an array of pointer to char of length + * max_type_id + 1. The strings pointed to by the entries + * in the array are the names of the entry types associated + * with the indexing type IDs. + * + * max_cache_size: Nominal maximum number of bytes that may be stored in the + * cache. This value should be viewed as a soft limit, as the + * cache can exceed this value under the following circumstances: + * + * a) All entries in the cache are protected, and the cache is + * asked to insert a new entry. In this case the new entry + * will be created. If this causes the cache to exceed + * max_cache_size, it will do so. The cache will attempt + * to reduce its size as entries are unprotected. + * + * b) When running in parallel mode, the cache may not be + * permitted to flush a dirty entry in response to a read. + * If there are no clean entries available to evict, the + * cache will exceed its maximum size. Again the cache + * will attempt to reduce its size to the max_cache_size + * limit on the next cache write. + * + * c) When an entry increases in size, the cache may exceed + * the max_cache_size limit until the next time the cache + * attempts to load or insert an entry. + * + * min_clean_size: Nominal minimum number of clean bytes in the cache. + * The cache attempts to maintain this number of bytes of + * clean data so as to avoid case b) above. Again, this is + * a soft limit. + * + * + * In addition to the call back functions required for each entry, the + * cache requires the following call back functions for this instance of + * the cache as a whole: + * + * check_write_permitted: In certain applications, the cache may not + * be allowed to write to disk at certain time. If specified, + * the check_write_permitted function is used to determine if + * a write is permissible at any given point in time. + * + * If no such function is specified (i.e. this field is NULL), + * the cache uses the following write_permitted field to + * determine whether writes are permitted. + * + * write_permitted: If check_write_permitted is NULL, this boolean flag + * indicates whether writes are permitted. + * + * log_flush: If provided, this function is called whenever a dirty + * entry is flushed to disk. + * + * + * In cases where memory is plentiful, and performance is an issue, it + * is useful to disable all cache evictions, and thereby postpone metadata + * writes. The following field is used to implement this. + * + * evictions_enabled: Boolean flag that is initialized to TRUE. When + * this flag is set to FALSE, the metadata cache will not + * attempt to evict entries to make space for newly protected + * entries, and instead the will grow without limit. + * + * Needless to say, this feature must be used with care. + * + * + * The cache requires an index to facilitate searching for entries. The + * following fields support that index. + * + * index_len: Number of entries currently in the hash table used to index + * the cache. + * + * index_size: Number of bytes of cache entries currently stored in the + * hash table used to index the cache. + * + * This value should not be mistaken for footprint of the + * cache in memory. The average cache entry is small, and + * the cache has a considerable overhead. Multiplying the + * index_size by two should yield a conservative estimate + * of the cache's memory footprint. + * + * clean_index_size: Number of bytes of clean entries currently stored in + * the hash table. Note that the index_size field (above) + * is also the sum of the sizes of all entries in the cache. + * Thus we should have the invarient that clean_index_size + + * dirty_index_size == index_size. + * + * WARNING: + * + * 1) The clean_index_size field is not maintained by the + * index macros, as the hash table doesn't care whether + * the entry is clean or dirty. Instead the field is + * maintained in the H5C__UPDATE_RP macros. + * + * 2) The value of the clean_index_size must not be mistaken + * for the current clean size of the cache. Rather, the + * clean size of the cache is the current value of + * clean_index_size plus the amount of empty space (if any) + * in the cache. + * + * dirty_index_size: Number of bytes of dirty entries currently stored in + * the hash table. Note that the index_size field (above) + * is also the sum of the sizes of all entries in the cache. + * Thus we should have the invarient that clean_index_size + + * dirty_index_size == index_size. + * + * WARNING: + * + * 1) The dirty_index_size field is not maintained by the + * index macros, as the hash table doesn't care whether + * the entry is clean or dirty. Instead the field is + * maintained in the H5C__UPDATE_RP macros. + * + * index: Array of pointer to H5C_cache_entry_t of size + * H5C__HASH_TABLE_LEN. At present, this value is a power + * of two, not the usual prime number. + * + * I hope that the variable size of cache elements, the large + * hash table size, and the way in which HDF5 allocates space + * will combine to avoid problems with periodicity. If so, we + * can use a trivial hash function (a bit-and and a 3 bit left + * shift) with some small savings. + * + * If not, it will become evident in the statistics. Changing + * to the usual prime number length hash table will require + * changing the H5C__HASH_FCN macro and the deletion of the + * H5C__HASH_MASK #define. No other changes should be required. + * + * + * When we flush the cache, we need to write entries out in increasing + * address order. An instance of a skip list is used to store dirty entries in + * sorted order. Whether it is cheaper to sort the dirty entries as needed, + * or to maintain the list is an open question. At a guess, it depends + * on how frequently the cache is flushed. We will see how it goes. + * + * For now at least, I will not remove dirty entries from the list as they + * are flushed. (this has been changed -- dirty entries are now removed from + * the skip list as they are flushed. JRM - 10/25/05) + * + * slist_len: Number of entries currently in the skip list + * used to maintain a sorted list of dirty entries in the + * cache. + * + * slist_size: Number of bytes of cache entries currently stored in the + * skip list used to maintain a sorted list of + * dirty entries in the cache. + * + * slist_ptr: pointer to the instance of H5SL_t used maintain a sorted + * list of dirty entries in the cache. This sorted list has + * two uses: + * + * a) It allows us to flush dirty entries in increasing address + * order, which results in significant savings. + * + * b) It facilitates checking for adjacent dirty entries when + * attempting to evict entries from the cache. While we + * don't use this at present, I hope that this will allow + * some optimizations when I get to it. + * + * With the addition of the fractal heap, the cache must now deal with + * the case in which entries may be dirtied, moved, or have their sizes + * changed during a flush. To allow sanity checks in this situation, the + * following two fields have been added. They are only compiled in when + * H5C_DO_SANITY_CHECKS is TRUE. + * + * slist_len_increase: Number of entries that have been added to the + * slist since the last time this field was set to zero. + * + * slist_size_increase: Total size of all entries that have been added + * to the slist since the last time this field was set to + * zero. + * + * + * When a cache entry is protected, it must be removed from the LRU + * list(s) as it cannot be either flushed or evicted until it is unprotected. + * The following fields are used to implement the protected list (pl). + * + * pl_len: Number of entries currently residing on the protected list. + * + * pl_size: Number of bytes of cache entries currently residing on the + * protected list. + * + * pl_head_ptr: Pointer to the head of the doubly linked list of protected + * entries. Note that cache entries on this list are linked + * by their next and prev fields. + * + * This field is NULL if the list is empty. + * + * pl_tail_ptr: Pointer to the tail of the doubly linked list of protected + * entries. Note that cache entries on this list are linked + * by their next and prev fields. + * + * This field is NULL if the list is empty. + * + * + * For very frequently used entries, the protect/unprotect overhead can + * become burdensome. To avoid this overhead, I have modified the cache + * to allow entries to be "pinned". A pinned entry is similar to a + * protected entry, in the sense that it cannot be evicted, and that + * the entry can be modified at any time. + * + * Pinning an entry has the following implications: + * + * 1) A pinned entry cannot be evicted. Thus unprotected + * pinned entries reside in the pinned entry list, instead + * of the LRU list(s) (or other lists maintained by the current + * replacement policy code). + * + * 2) A pinned entry can be accessed or modified at any time. + * Therefore, the cache must check with the entry owner + * before flushing it. If permission is denied, the + * cache just skips the entry in the flush. + * + * 3) A pinned entry can be marked as dirty (and possibly + * change size) while it is unprotected. + * + * 4) The flush-destroy code must allow pinned entries to + * be unpinned (and possibly unprotected) during the + * flush. + * + * Since pinned entries cannot be evicted, they must be kept on a pinned + * entry list, instead of being entrusted to the replacement policy code. + * + * Maintaining the pinned entry list requires the following fields: + * + * pel_len: Number of entries currently residing on the pinned + * entry list. + * + * pel_size: Number of bytes of cache entries currently residing on + * the pinned entry list. + * + * pel_head_ptr: Pointer to the head of the doubly linked list of pinned + * but not protected entries. Note that cache entries on + * this list are linked by their next and prev fields. + * + * This field is NULL if the list is empty. + * + * pel_tail_ptr: Pointer to the tail of the doubly linked list of pinned + * but not protected entries. Note that cache entries on + * this list are linked by their next and prev fields. + * + * This field is NULL if the list is empty. + * + * + * The cache must have a replacement policy, and the fields supporting this + * policy must be accessible from this structure. + * + * While there has been interest in several replacement policies for + * this cache, the initial development schedule is tight. Thus I have + * elected to support only a modified LRU policy for the first cut. + * + * To further simplify matters, I have simply included the fields needed + * by the modified LRU in this structure. When and if we add support for + * other policies, it will probably be easiest to just add the necessary + * fields to this structure as well -- we only create one instance of this + * structure per file, so the overhead is not excessive. + * + * + * Fields supporting the modified LRU policy: + * + * See most any OS text for a discussion of the LRU replacement policy. + * + * When operating in parallel mode, we must ensure that a read does not + * cause a write. If it does, the process will hang, as the write will + * be collective and the other processes will not know to participate. + * + * To deal with this issue, I have modified the usual LRU policy by adding + * clean and dirty LRU lists to the usual LRU list. + * + * The clean LRU list is simply the regular LRU list with all dirty cache + * entries removed. + * + * Similarly, the dirty LRU list is the regular LRU list with all the clean + * cache entries removed. + * + * When reading in parallel mode, we evict from the clean LRU list only. + * This implies that we must try to ensure that the clean LRU list is + * reasonably well stocked at all times. + * + * We attempt to do this by trying to flush enough entries on each write + * to keep the cLRU_list_size >= min_clean_size. + * + * Even if we start with a completely clean cache, a sequence of protects + * without unprotects can empty the clean LRU list. In this case, the + * cache must grow temporarily. At the next write, we will attempt to + * evict enough entries to reduce index_size to less than max_cache_size. + * While this will usually be possible, all bets are off if enough entries + * are protected. + * + * Discussions of the individual fields used by the modified LRU replacement + * policy follow: + * + * LRU_list_len: Number of cache entries currently on the LRU list. + * + * Observe that LRU_list_len + pl_len must always equal + * index_len. + * + * LRU_list_size: Number of bytes of cache entries currently residing on the + * LRU list. + * + * Observe that LRU_list_size + pl_size must always equal + * index_size. + * + * LRU_head_ptr: Pointer to the head of the doubly linked LRU list. Cache + * entries on this list are linked by their next and prev fields. + * + * This field is NULL if the list is empty. + * + * LRU_tail_ptr: Pointer to the tail of the doubly linked LRU list. Cache + * entries on this list are linked by their next and prev fields. + * + * This field is NULL if the list is empty. + * + * cLRU_list_len: Number of cache entries currently on the clean LRU list. + * + * Observe that cLRU_list_len + dLRU_list_len must always + * equal LRU_list_len. + * + * cLRU_list_size: Number of bytes of cache entries currently residing on + * the clean LRU list. + * + * Observe that cLRU_list_size + dLRU_list_size must always + * equal LRU_list_size. + * + * cLRU_head_ptr: Pointer to the head of the doubly linked clean LRU list. + * Cache entries on this list are linked by their aux_next and + * aux_prev fields. + * + * This field is NULL if the list is empty. + * + * cLRU_tail_ptr: Pointer to the tail of the doubly linked clean LRU list. + * Cache entries on this list are linked by their aux_next and + * aux_prev fields. + * + * This field is NULL if the list is empty. + * + * dLRU_list_len: Number of cache entries currently on the dirty LRU list. + * + * Observe that cLRU_list_len + dLRU_list_len must always + * equal LRU_list_len. + * + * dLRU_list_size: Number of cache entries currently on the dirty LRU list. + * + * Observe that cLRU_list_len + dLRU_list_len must always + * equal LRU_list_len. + * + * dLRU_head_ptr: Pointer to the head of the doubly linked dirty LRU list. + * Cache entries on this list are linked by their aux_next and + * aux_prev fields. + * + * This field is NULL if the list is empty. + * + * dLRU_tail_ptr: Pointer to the tail of the doubly linked dirty LRU list. + * Cache entries on this list are linked by their aux_next and + * aux_prev fields. + * + * This field is NULL if the list is empty. + * + * + * Automatic cache size adjustment: + * + * While the default cache size is adequate for most cases, we can run into + * cases where the default is too small. Ideally, we will let the user + * adjust the cache size as required. However, this is not possible in all + * cases. Thus I have added automatic cache size adjustment code. + * + * The configuration for the automatic cache size adjustment is stored in + * the structure described below: + * + * size_increase_possible: Depending on the configuration data given + * in the resize_ctl field, it may or may not be possible + * to increase the size of the cache. Rather than test for + * all the ways this can happen, we simply set this flag when + * we receive a new configuration. + * + * flash_size_increase_possible: Depending on the configuration data given + * in the resize_ctl field, it may or may not be possible + * for a flash size increase to occur. We set this flag + * whenever we receive a new configuration so as to avoid + * repeated calculations. + * + * flash_size_increase_threshold: If a flash cache size increase is possible, + * this field is used to store the minimum size of a new entry + * or size increase needed to trigger a flash cache size + * increase. Note that this field must be updated whenever + * the size of the cache is changed. + * + * size_decrease_possible: Depending on the configuration data given + * in the resize_ctl field, it may or may not be possible + * to decrease the size of the cache. Rather than test for + * all the ways this can happen, we simply set this flag when + * we receive a new configuration. + * + * cache_full: Boolean flag used to keep track of whether the cache is + * full, so we can refrain from increasing the size of a + * cache which hasn't used up the space alotted to it. + * + * The field is initialized to FALSE, and then set to TRUE + * whenever we attempt to make space in the cache. + * + * resize_enabled: This is another convenience flag which is set whenever + * a new set of values for resize_ctl are provided. Very + * simply, + * + * resize_enabled = size_increase_possible || + * size_decrease_possible; + * + * size_decreased: Boolean flag set to TRUE whenever the maximun cache + * size is decreased. The flag triggers a call to + * H5C_make_space_in_cache() on the next call to H5C_protect(). + * + * resize_ctl: Instance of H5C_auto_size_ctl_t containing configuration + * data for automatic cache resizing. + * + * epoch_markers_active: Integer field containing the number of epoch + * markers currently in use in the LRU list. This value + * must be in the range [0, H5C__MAX_EPOCH_MARKERS - 1]. + * + * epoch_marker_active: Array of boolean of length H5C__MAX_EPOCH_MARKERS. + * This array is used to track which epoch markers are currently + * in use. + * + * epoch_marker_ringbuf: Array of int of length H5C__MAX_EPOCH_MARKERS + 1. + * + * To manage the epoch marker cache entries, it is necessary + * to track their order in the LRU list. This is done with + * epoch_marker_ringbuf. When markers are inserted at the + * head of the LRU list, the index of the marker in the + * epoch_markers array is inserted at the tail of the ring + * buffer. When it becomes the epoch_marker_active'th marker + * in the LRU list, it will have worked its way to the head + * of the ring buffer as well. This allows us to remove it + * without scanning the LRU list if such is required. + * + * epoch_marker_ringbuf_first: Integer field containing the index of the + * first entry in the ring buffer. + * + * epoch_marker_ringbuf_last: Integer field containing the index of the + * last entry in the ring buffer. + * + * epoch_marker_ringbuf_size: Integer field containing the number of entries + * in the ring buffer. + * + * epoch_markers: Array of instances of H5C_cache_entry_t of length + * H5C__MAX_EPOCH_MARKERS. The entries are used as markers + * in the LRU list to identify cache entries that haven't + * been accessed for some (small) specified number of + * epochs. These entries (if any) can then be evicted and + * the cache size reduced -- ideally without evicting any + * of the current working set. Needless to say, the epoch + * length and the number of epochs before an unused entry + * must be chosen so that all, or almost all, the working + * set will be accessed before the limit. + * + * Epoch markers only appear in the LRU list, never in + * the index or slist. While they are of type + * H5C__EPOCH_MARKER_TYPE, and have associated class + * functions, these functions should never be called. + * + * The addr fields of these instances of H5C_cache_entry_t + * are set to the index of the instance in the epoch_markers + * array, the size is set to 0, and the type field points + * to the constant structure epoch_marker_class defined + * in H5C.c. The next and prev fields are used as usual + * to link the entry into the LRU list. + * + * All other fields are unused. + * + * + * Cache hit rate collection fields: + * + * We supply the current cache hit rate on request, so we must keep a + * simple cache hit rate computation regardless of whether statistics + * collection is enabled. The following fields support this capability. + * + * cache_hits: Number of cache hits since the last time the cache hit + * rate statistics were reset. Note that when automatic cache + * re-sizing is enabled, this field will be reset every automatic + * resize epoch. + * + * cache_accesses: Number of times the cache has been accessed while + * since the last since the last time the cache hit rate statistics + * were reset. Note that when automatic cache re-sizing is enabled, + * this field will be reset every automatic resize epoch. + * + * + * Statistics collection fields: + * + * When enabled, these fields are used to collect statistics as described + * below. The first set are collected only when H5C_COLLECT_CACHE_STATS + * is true. + * + * hits: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the number of times an entry with type id + * equal to the array index has been in cache when requested in + * the current epoch. + * + * misses: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the number of times an entry with type id + * equal to the array index has not been in cache when + * requested in the current epoch. + * + * write_protects: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The + * cells are used to record the number of times an entry with + * type id equal to the array index has been write protected + * in the current epoch. + * + * Observe that (hits + misses) = (write_protects + read_protects). + * + * read_protects: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The + * cells are used to record the number of times an entry with + * type id equal to the array index has been read protected in + * the current epoch. + * + * Observe that (hits + misses) = (write_protects + read_protects). + * + * max_read_protects: Array of int32 of length H5C__MAX_NUM_TYPE_IDS + 1. + * The cells are used to maximum number of simultaneous read + * protects on any entry with type id equal to the array index + * in the current epoch. + * + * insertions: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the number of times an entry with type + * id equal to the array index has been inserted into the + * cache in the current epoch. + * + * pinned_insertions: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. + * The cells are used to record the number of times an entry + * with type id equal to the array index has been inserted + * pinned into the cache in the current epoch. + * + * clears: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the number of times an entry with type + * id equal to the array index has been cleared in the current + * epoch. + * + * flushes: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the number of times an entry with type id + * equal to the array index has been written to disk in the + * current epoch. + * + * evictions: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the number of times an entry with type id + * equal to the array index has been evicted from the cache in + * the current epoch. + * + * moves: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the number of times an entry with type + * id equal to the array index has been moved in the current + * epoch. + * + * entry_flush_moves: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. + * The cells are used to record the number of times an entry + * with type id equal to the array index has been moved + * during its flush callback in the current epoch. + * + * cache_flush_moves: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. + * The cells are used to record the number of times an entry + * with type id equal to the array index has been moved + * during a cache flush in the current epoch. + * + * pins: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the number of times an entry with type + * id equal to the array index has been pinned in the current + * epoch. + * + * unpins: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the number of times an entry with type + * id equal to the array index has been unpinned in the current + * epoch. + * + * dirty_pins: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the number of times an entry with type + * id equal to the array index has been marked dirty while pinned + * in the current epoch. + * + * pinned_flushes: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The + * cells are used to record the number of times an entry + * with type id equal to the array index has been flushed while + * pinned in the current epoch. + * + * pinned_cleared: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. The + * cells are used to record the number of times an entry + * with type id equal to the array index has been cleared while + * pinned in the current epoch. + * + * size_increases: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. + * The cells are used to record the number of times an entry + * with type id equal to the array index has increased in + * size in the current epoch. + * + * size_decreases: Array of int64 of length H5C__MAX_NUM_TYPE_IDS + 1. + * The cells are used to record the number of times an entry + * with type id equal to the array index has decreased in + * size in the current epoch. + * + * entry_flush_size_changes: Array of int64 of length + * H5C__MAX_NUM_TYPE_IDS + 1. The cells are used to record + * the number of times an entry with type id equal to the + * array index has changed size while in its flush callback. + * + * cache_flush_size_changes: Array of int64 of length + * H5C__MAX_NUM_TYPE_IDS + 1. The cells are used to record + * the number of times an entry with type id equal to the + * array index has changed size during a cache flush + * + * total_ht_insertions: Number of times entries have been inserted into the + * hash table in the current epoch. + * + * total_ht_deletions: Number of times entries have been deleted from the + * hash table in the current epoch. + * + * successful_ht_searches: int64 containing the total number of successful + * searches of the hash table in the current epoch. + * + * total_successful_ht_search_depth: int64 containing the total number of + * entries other than the targets examined in successful + * searches of the hash table in the current epoch. + * + * failed_ht_searches: int64 containing the total number of unsuccessful + * searches of the hash table in the current epoch. + * + * total_failed_ht_search_depth: int64 containing the total number of + * entries examined in unsuccessful searches of the hash + * table in the current epoch. + * + * max_index_len: Largest value attained by the index_len field in the + * current epoch. + * + * max_index_size: Largest value attained by the index_size field in the + * current epoch. + * + * max_clean_index_size: Largest value attained by the clean_index_size field + * in the current epoch. + * + * max_dirty_index_size: Largest value attained by the dirty_index_size field + * in the current epoch. + * + * max_slist_len: Largest value attained by the slist_len field in the + * current epoch. + * + * max_slist_size: Largest value attained by the slist_size field in the + * current epoch. + * + * max_pl_len: Largest value attained by the pl_len field in the + * current epoch. + * + * max_pl_size: Largest value attained by the pl_size field in the + * current epoch. + * + * max_pel_len: Largest value attained by the pel_len field in the + * current epoch. + * + * max_pel_size: Largest value attained by the pel_size field in the + * current epoch. + * + * calls_to_msic: Total number of calls to H5C_make_space_in_cache + * + * total_entries_skipped_in_msic: Number of clean entries skipped while + * enforcing the min_clean_fraction in H5C_make_space_in_cache(). + * + * total_entries_scanned_in_msic: Number of clean entries skipped while + * enforcing the min_clean_fraction in H5C_make_space_in_cache(). + * + * max_entries_skipped_in_msic: Maximum number of clean entries skipped + * in any one call to H5C_make_space_in_cache(). + * + * max_entries_scanned_in_msic: Maximum number of entries scanned over + * in any one call to H5C_make_space_in_cache(). + * + * entries_scanned_to_make_space: Number of entries scanned only when looking + * for entries to evict in order to make space in cache. + + * The remaining stats are collected only when both H5C_COLLECT_CACHE_STATS + * and H5C_COLLECT_CACHE_ENTRY_STATS are true. + * + * max_accesses: Array of int32 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the maximum number of times any single + * entry with type id equal to the array index has been + * accessed in the current epoch. + * + * min_accesses: Array of int32 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the minimum number of times any single + * entry with type id equal to the array index has been + * accessed in the current epoch. + * + * max_clears: Array of int32 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the maximum number of times any single + * entry with type id equal to the array index has been cleared + * in the current epoch. + * + * max_flushes: Array of int32 of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the maximum number of times any single + * entry with type id equal to the array index has been + * flushed in the current epoch. + * + * max_size: Array of size_t of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the maximum size of any single entry + * with type id equal to the array index that has resided in + * the cache in the current epoch. + * + * max_pins: Array of size_t of length H5C__MAX_NUM_TYPE_IDS + 1. The cells + * are used to record the maximum number of times that any single + * entry with type id equal to the array index that has been + * marked as pinned in the cache in the current epoch. + * + * + * Fields supporting testing: + * + * prefix Array of char used to prefix debugging output. The + * field is intended to allow marking of output of with + * the processes mpi rank. + * + ****************************************************************************/ + +#define H5C__HASH_TABLE_LEN (64 * 1024) /* must be a power of 2 */ + +#define H5C__H5C_T_MAGIC 0x005CAC0E +#define H5C__MAX_NUM_TYPE_IDS 19 +#define H5C__PREFIX_LEN 32 + +struct H5C_t +{ + uint32_t magic; + + hbool_t flush_in_progress; + + FILE * trace_file_ptr; + + void * aux_ptr; + + int32_t max_type_id; + const char * (* type_name_table_ptr); + + size_t max_cache_size; + size_t min_clean_size; + + H5C_write_permitted_func_t check_write_permitted; + hbool_t write_permitted; + + H5C_log_flush_func_t log_flush; + + hbool_t evictions_enabled; + + int32_t index_len; + size_t index_size; + size_t clean_index_size; + size_t dirty_index_size; + H5C_cache_entry_t * (index[H5C__HASH_TABLE_LEN]); + + + int32_t slist_len; + size_t slist_size; + H5SL_t * slist_ptr; +#if H5C_DO_SANITY_CHECKS + int64_t slist_len_increase; + int64_t slist_size_increase; +#endif /* H5C_DO_SANITY_CHECKS */ + + int32_t pl_len; + size_t pl_size; + H5C_cache_entry_t * pl_head_ptr; + H5C_cache_entry_t * pl_tail_ptr; + + int32_t pel_len; + size_t pel_size; + H5C_cache_entry_t * pel_head_ptr; + H5C_cache_entry_t * pel_tail_ptr; + + int32_t LRU_list_len; + size_t LRU_list_size; + H5C_cache_entry_t * LRU_head_ptr; + H5C_cache_entry_t * LRU_tail_ptr; + + int32_t cLRU_list_len; + size_t cLRU_list_size; + H5C_cache_entry_t * cLRU_head_ptr; + H5C_cache_entry_t * cLRU_tail_ptr; + + int32_t dLRU_list_len; + size_t dLRU_list_size; + H5C_cache_entry_t * dLRU_head_ptr; + H5C_cache_entry_t * dLRU_tail_ptr; + + hbool_t size_increase_possible; + hbool_t flash_size_increase_possible; + size_t flash_size_increase_threshold; + hbool_t size_decrease_possible; + hbool_t resize_enabled; + hbool_t cache_full; + hbool_t size_decreased; + H5C_auto_size_ctl_t resize_ctl; + + int32_t epoch_markers_active; + hbool_t epoch_marker_active[H5C__MAX_EPOCH_MARKERS]; + int32_t epoch_marker_ringbuf[H5C__MAX_EPOCH_MARKERS+1]; + int32_t epoch_marker_ringbuf_first; + int32_t epoch_marker_ringbuf_last; + int32_t epoch_marker_ringbuf_size; + H5C_cache_entry_t epoch_markers[H5C__MAX_EPOCH_MARKERS]; + + int64_t cache_hits; + int64_t cache_accesses; + +#if H5C_COLLECT_CACHE_STATS + + /* stats fields */ + int64_t hits[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t misses[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t write_protects[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t read_protects[H5C__MAX_NUM_TYPE_IDS + 1]; + int32_t max_read_protects[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t insertions[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t pinned_insertions[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t clears[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t flushes[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t evictions[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t moves[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t entry_flush_moves[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t cache_flush_moves[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t pins[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t unpins[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t dirty_pins[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t pinned_flushes[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t pinned_clears[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t size_increases[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t size_decreases[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t entry_flush_size_changes[H5C__MAX_NUM_TYPE_IDS + 1]; + int64_t cache_flush_size_changes[H5C__MAX_NUM_TYPE_IDS + 1]; + + int64_t total_ht_insertions; + int64_t total_ht_deletions; + int64_t successful_ht_searches; + int64_t total_successful_ht_search_depth; + int64_t failed_ht_searches; + int64_t total_failed_ht_search_depth; + + int32_t max_index_len; + size_t max_index_size; + size_t max_clean_index_size; + size_t max_dirty_index_size; + + int32_t max_slist_len; + size_t max_slist_size; + + int32_t max_pl_len; + size_t max_pl_size; + + int32_t max_pel_len; + size_t max_pel_size; + + int64_t calls_to_msic; + int64_t total_entries_skipped_in_msic; + int64_t total_entries_scanned_in_msic; + int32_t max_entries_skipped_in_msic; + int32_t max_entries_scanned_in_msic; + int64_t entries_scanned_to_make_space; + +#if H5C_COLLECT_CACHE_ENTRY_STATS + + int32_t max_accesses[H5C__MAX_NUM_TYPE_IDS + 1]; + int32_t min_accesses[H5C__MAX_NUM_TYPE_IDS + 1]; + int32_t max_clears[H5C__MAX_NUM_TYPE_IDS + 1]; + int32_t max_flushes[H5C__MAX_NUM_TYPE_IDS + 1]; + size_t max_size[H5C__MAX_NUM_TYPE_IDS + 1]; + int32_t max_pins[H5C__MAX_NUM_TYPE_IDS + 1]; + +#endif /* H5C_COLLECT_CACHE_ENTRY_STATS */ + +#endif /* H5C_COLLECT_CACHE_STATS */ + + char prefix[H5C__PREFIX_LEN]; +}; + + +/****************************************************************************/ +/***************************** Macro Definitions ****************************/ +/****************************************************************************/ + +/**************************************************************************** + * + * We maintain doubly linked lists of instances of H5C_cache_entry_t for a + * variety of reasons -- protected list, LRU list, and the clean and dirty + * LRU lists at present. The following macros support linking and unlinking + * of instances of H5C_cache_entry_t by both their regular and auxilary next + * and previous pointers. + * + * The size and length fields are also maintained. + * + * Note that the relevant pair of prev and next pointers are presumed to be + * NULL on entry in the insertion macros. + * + * Finally, observe that the sanity checking macros evaluate to the empty + * string when H5C_DO_SANITY_CHECKS is FALSE. They also contain calls + * to the HGOTO_ERROR macro, which may not be appropriate in all cases. + * If so, we will need versions of the insertion and deletion macros which + * do not reference the sanity checking macros. + * JRM - 5/5/04 + * + * Changes: + * + * - Removed the line: + * + * ( ( (Size) == (entry_ptr)->size ) && ( (len) != 1 ) ) || + * + * from the H5C__DLL_PRE_REMOVE_SC macro. With the addition of the + * epoch markers used in the age out based cache size reduction algorithm, + * this invarient need not hold, as the epoch markers are of size 0. + * + * One could argue that I should have given the epoch markers a positive + * size, but this would break the index_size = LRU_list_size + pl_size + * + pel_size invarient. + * + * Alternatively, I could pass the current decr_mode in to the macro, + * and just skip the check whenever epoch markers may be in use. + * + * However, any size errors should be caught when the cache is flushed + * and destroyed. Until we are tracking such an error, this should be + * good enough. + * JRM - 12/9/04 + * + * + * - In the H5C__DLL_PRE_INSERT_SC macro, replaced the lines: + * + * ( ( (len) == 1 ) && + * ( ( (head_ptr) != (tail_ptr) ) || ( (Size) <= 0 ) || + * ( (head_ptr) == NULL ) || ( (head_ptr)->size != (Size) ) + * ) + * ) || + * + * with: + * + * ( ( (len) == 1 ) && + * ( ( (head_ptr) != (tail_ptr) ) || + * ( (head_ptr) == NULL ) || ( (head_ptr)->size != (Size) ) + * ) + * ) || + * + * Epoch markers have size 0, so we can now have a non-empty list with + * zero size. Hence the "( (Size) <= 0 )" clause cause false failures + * in the sanity check. Since "Size" is typically a size_t, it can't + * take on negative values, and thus the revised clause "( (Size) < 0 )" + * caused compiler warnings. + * JRM - 12/22/04 + * + * - In the H5C__DLL_SC macro, replaced the lines: + * + * ( ( (len) == 1 ) && + * ( ( (head_ptr) != (tail_ptr) ) || ( (cache_ptr)->size <= 0 ) || + * ( (head_ptr) == NULL ) || ( (head_ptr)->size != (Size) ) + * ) + * ) || + * + * with + * + * ( ( (len) == 1 ) && + * ( ( (head_ptr) != (tail_ptr) ) || + * ( (head_ptr) == NULL ) || ( (head_ptr)->size != (Size) ) + * ) + * ) || + * + * Epoch markers have size 0, so we can now have a non-empty list with + * zero size. Hence the "( (Size) <= 0 )" clause cause false failures + * in the sanity check. Since "Size" is typically a size_t, it can't + * take on negative values, and thus the revised clause "( (Size) < 0 )" + * caused compiler warnings. + * JRM - 1/10/05 + * + * - Added the H5C__DLL_UPDATE_FOR_SIZE_CHANGE macro and the associated + * sanity checking macros. These macro are used to update the size of + * a DLL when one of its entries changes size. + * + * JRM - 9/8/05 + * + ****************************************************************************/ + +#if H5C_DO_SANITY_CHECKS + +#define H5C__DLL_PRE_REMOVE_SC(entry_ptr, head_ptr, tail_ptr, len, Size, fv) \ +if ( ( (head_ptr) == NULL ) || \ + ( (tail_ptr) == NULL ) || \ + ( (entry_ptr) == NULL ) || \ + ( (len) <= 0 ) || \ + ( (Size) < (entry_ptr)->size ) || \ + ( ( (entry_ptr)->prev == NULL ) && ( (head_ptr) != (entry_ptr) ) ) || \ + ( ( (entry_ptr)->next == NULL ) && ( (tail_ptr) != (entry_ptr) ) ) || \ + ( ( (len) == 1 ) && \ + ( ! ( ( (head_ptr) == (entry_ptr) ) && \ + ( (tail_ptr) == (entry_ptr) ) && \ + ( (entry_ptr)->next == NULL ) && \ + ( (entry_ptr)->prev == NULL ) && \ + ( (Size) == (entry_ptr)->size ) \ + ) \ + ) \ + ) \ + ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, (fv), "DLL pre remove SC failed") \ +} + +#define H5C__DLL_SC(head_ptr, tail_ptr, len, Size, fv) \ +if ( ( ( ( (head_ptr) == NULL ) || ( (tail_ptr) == NULL ) ) && \ + ( (head_ptr) != (tail_ptr) ) \ + ) || \ + ( (len) < 0 ) || \ + ( (Size) < 0 ) || \ + ( ( (len) == 1 ) && \ + ( ( (head_ptr) != (tail_ptr) ) || \ + ( (head_ptr) == NULL ) || ( (head_ptr)->size != (Size) ) \ + ) \ + ) || \ + ( ( (len) >= 1 ) && \ + ( ( (head_ptr) == NULL ) || ( (head_ptr)->prev != NULL ) || \ + ( (tail_ptr) == NULL ) || ( (tail_ptr)->next != NULL ) \ + ) \ + ) \ + ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, (fv), "DLL sanity check failed") \ +} + +#define H5C__DLL_PRE_INSERT_SC(entry_ptr, head_ptr, tail_ptr, len, Size, fv) \ +if ( ( (entry_ptr) == NULL ) || \ + ( (entry_ptr)->next != NULL ) || \ + ( (entry_ptr)->prev != NULL ) || \ + ( ( ( (head_ptr) == NULL ) || ( (tail_ptr) == NULL ) ) && \ + ( (head_ptr) != (tail_ptr) ) \ + ) || \ + ( (len) < 0 ) || \ + ( ( (len) == 1 ) && \ + ( ( (head_ptr) != (tail_ptr) ) || \ + ( (head_ptr) == NULL ) || ( (head_ptr)->size != (Size) ) \ + ) \ + ) || \ + ( ( (len) >= 1 ) && \ + ( ( (head_ptr) == NULL ) || ( (head_ptr)->prev != NULL ) || \ + ( (tail_ptr) == NULL ) || ( (tail_ptr)->next != NULL ) \ + ) \ + ) \ + ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, (fv), "DLL pre insert SC failed") \ +} + +#define H5C__DLL_PRE_SIZE_UPDATE_SC(dll_len, dll_size, old_size, new_size) \ +if ( ( (dll_len) <= 0 ) || \ + ( (dll_size) <= 0 ) || \ + ( (old_size) <= 0 ) || \ + ( (old_size) > (dll_size) ) || \ + ( (new_size) <= 0 ) || \ + ( ( (dll_len) == 1 ) && ( (old_size) != (dll_size) ) ) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "DLL pre size update SC failed") \ +} + +#define H5C__DLL_POST_SIZE_UPDATE_SC(dll_len, dll_size, old_size, new_size) \ +if ( ( (new_size) > (dll_size) ) || \ + ( ( (dll_len) == 1 ) && ( (new_size) != (dll_size) ) ) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "DLL post size update SC failed") \ +} + +#else /* H5C_DO_SANITY_CHECKS */ + +#define H5C__DLL_PRE_REMOVE_SC(entry_ptr, head_ptr, tail_ptr, len, Size, fv) +#define H5C__DLL_SC(head_ptr, tail_ptr, len, Size, fv) +#define H5C__DLL_PRE_INSERT_SC(entry_ptr, head_ptr, tail_ptr, len, Size, fv) +#define H5C__DLL_PRE_SIZE_UPDATE_SC(dll_len, dll_size, old_size, new_size) +#define H5C__DLL_POST_SIZE_UPDATE_SC(dll_len, dll_size, old_size, new_size) + +#endif /* H5C_DO_SANITY_CHECKS */ + + +#define H5C__DLL_APPEND(entry_ptr, head_ptr, tail_ptr, len, Size, fail_val) \ + H5C__DLL_PRE_INSERT_SC(entry_ptr, head_ptr, tail_ptr, len, Size, \ + fail_val) \ + if ( (head_ptr) == NULL ) \ + { \ + (head_ptr) = (entry_ptr); \ + (tail_ptr) = (entry_ptr); \ + } \ + else \ + { \ + (tail_ptr)->next = (entry_ptr); \ + (entry_ptr)->prev = (tail_ptr); \ + (tail_ptr) = (entry_ptr); \ + } \ + (len)++; \ + (Size) += (entry_ptr)->size; + +#define H5C__DLL_PREPEND(entry_ptr, head_ptr, tail_ptr, len, Size, fail_val) \ + H5C__DLL_PRE_INSERT_SC(entry_ptr, head_ptr, tail_ptr, len, Size, \ + fail_val) \ + if ( (head_ptr) == NULL ) \ + { \ + (head_ptr) = (entry_ptr); \ + (tail_ptr) = (entry_ptr); \ + } \ + else \ + { \ + (head_ptr)->prev = (entry_ptr); \ + (entry_ptr)->next = (head_ptr); \ + (head_ptr) = (entry_ptr); \ + } \ + (len)++; \ + (Size) += entry_ptr->size; + +#define H5C__DLL_REMOVE(entry_ptr, head_ptr, tail_ptr, len, Size, fail_val) \ + H5C__DLL_PRE_REMOVE_SC(entry_ptr, head_ptr, tail_ptr, len, Size, \ + fail_val) \ + { \ + if ( (head_ptr) == (entry_ptr) ) \ + { \ + (head_ptr) = (entry_ptr)->next; \ + if ( (head_ptr) != NULL ) \ + { \ + (head_ptr)->prev = NULL; \ + } \ + } \ + else \ + { \ + (entry_ptr)->prev->next = (entry_ptr)->next; \ + } \ + if ( (tail_ptr) == (entry_ptr) ) \ + { \ + (tail_ptr) = (entry_ptr)->prev; \ + if ( (tail_ptr) != NULL ) \ + { \ + (tail_ptr)->next = NULL; \ + } \ + } \ + else \ + { \ + (entry_ptr)->next->prev = (entry_ptr)->prev; \ + } \ + entry_ptr->next = NULL; \ + entry_ptr->prev = NULL; \ + (len)--; \ + (Size) -= entry_ptr->size; \ + } + +#define H5C__DLL_UPDATE_FOR_SIZE_CHANGE(dll_len, dll_size, old_size, new_size) \ + H5C__DLL_PRE_SIZE_UPDATE_SC(dll_len, dll_size, old_size, new_size) \ + (dll_size) -= (old_size); \ + (dll_size) += (new_size); \ + H5C__DLL_POST_SIZE_UPDATE_SC(dll_len, dll_size, old_size, new_size) + +#if H5C_DO_SANITY_CHECKS + +#define H5C__AUX_DLL_PRE_REMOVE_SC(entry_ptr, hd_ptr, tail_ptr, len, Size, fv) \ +if ( ( (hd_ptr) == NULL ) || \ + ( (tail_ptr) == NULL ) || \ + ( (entry_ptr) == NULL ) || \ + ( (len) <= 0 ) || \ + ( (Size) < (entry_ptr)->size ) || \ + ( ( (Size) == (entry_ptr)->size ) && ( ! ( (len) == 1 ) ) ) || \ + ( ( (entry_ptr)->aux_prev == NULL ) && ( (hd_ptr) != (entry_ptr) ) ) || \ + ( ( (entry_ptr)->aux_next == NULL ) && ( (tail_ptr) != (entry_ptr) ) ) || \ + ( ( (len) == 1 ) && \ + ( ! ( ( (hd_ptr) == (entry_ptr) ) && ( (tail_ptr) == (entry_ptr) ) && \ + ( (entry_ptr)->aux_next == NULL ) && \ + ( (entry_ptr)->aux_prev == NULL ) && \ + ( (Size) == (entry_ptr)->size ) \ + ) \ + ) \ + ) \ + ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, (fv), "aux DLL pre remove SC failed") \ +} + +#define H5C__AUX_DLL_SC(head_ptr, tail_ptr, len, Size, fv) \ +if ( ( ( ( (head_ptr) == NULL ) || ( (tail_ptr) == NULL ) ) && \ + ( (head_ptr) != (tail_ptr) ) \ + ) || \ + ( (len) < 0 ) || \ + ( (Size) < 0 ) || \ + ( ( (len) == 1 ) && \ + ( ( (head_ptr) != (tail_ptr) ) || ( (Size) <= 0 ) || \ + ( (head_ptr) == NULL ) || ( (head_ptr)->size != (Size) ) \ + ) \ + ) || \ + ( ( (len) >= 1 ) && \ + ( ( (head_ptr) == NULL ) || ( (head_ptr)->aux_prev != NULL ) || \ + ( (tail_ptr) == NULL ) || ( (tail_ptr)->aux_next != NULL ) \ + ) \ + ) \ + ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, (fv), "AUX DLL sanity check failed") \ +} + +#define H5C__AUX_DLL_PRE_INSERT_SC(entry_ptr, hd_ptr, tail_ptr, len, Size, fv) \ +if ( ( (entry_ptr) == NULL ) || \ + ( (entry_ptr)->aux_next != NULL ) || \ + ( (entry_ptr)->aux_prev != NULL ) || \ + ( ( ( (hd_ptr) == NULL ) || ( (tail_ptr) == NULL ) ) && \ + ( (hd_ptr) != (tail_ptr) ) \ + ) || \ + ( (len) < 0 ) || \ + ( ( (len) == 1 ) && \ + ( ( (hd_ptr) != (tail_ptr) ) || ( (Size) <= 0 ) || \ + ( (hd_ptr) == NULL ) || ( (hd_ptr)->size != (Size) ) \ + ) \ + ) || \ + ( ( (len) >= 1 ) && \ + ( ( (hd_ptr) == NULL ) || ( (hd_ptr)->aux_prev != NULL ) || \ + ( (tail_ptr) == NULL ) || ( (tail_ptr)->aux_next != NULL ) \ + ) \ + ) \ + ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, (fv), "AUX DLL pre insert SC failed") \ +} + +#else /* H5C_DO_SANITY_CHECKS */ + +#define H5C__AUX_DLL_PRE_REMOVE_SC(entry_ptr, hd_ptr, tail_ptr, len, Size, fv) +#define H5C__AUX_DLL_SC(head_ptr, tail_ptr, len, Size, fv) +#define H5C__AUX_DLL_PRE_INSERT_SC(entry_ptr, hd_ptr, tail_ptr, len, Size, fv) + +#endif /* H5C_DO_SANITY_CHECKS */ + + +#define H5C__AUX_DLL_APPEND(entry_ptr, head_ptr, tail_ptr, len, Size, fail_val)\ + H5C__AUX_DLL_PRE_INSERT_SC(entry_ptr, head_ptr, tail_ptr, len, Size, \ + fail_val) \ + if ( (head_ptr) == NULL ) \ + { \ + (head_ptr) = (entry_ptr); \ + (tail_ptr) = (entry_ptr); \ + } \ + else \ + { \ + (tail_ptr)->aux_next = (entry_ptr); \ + (entry_ptr)->aux_prev = (tail_ptr); \ + (tail_ptr) = (entry_ptr); \ + } \ + (len)++; \ + (Size) += entry_ptr->size; + +#define H5C__AUX_DLL_PREPEND(entry_ptr, head_ptr, tail_ptr, len, Size, fv) \ + H5C__AUX_DLL_PRE_INSERT_SC(entry_ptr, head_ptr, tail_ptr, len, Size, \ + fv) \ + if ( (head_ptr) == NULL ) \ + { \ + (head_ptr) = (entry_ptr); \ + (tail_ptr) = (entry_ptr); \ + } \ + else \ + { \ + (head_ptr)->aux_prev = (entry_ptr); \ + (entry_ptr)->aux_next = (head_ptr); \ + (head_ptr) = (entry_ptr); \ + } \ + (len)++; \ + (Size) += entry_ptr->size; + +#define H5C__AUX_DLL_REMOVE(entry_ptr, head_ptr, tail_ptr, len, Size, fv) \ + H5C__AUX_DLL_PRE_REMOVE_SC(entry_ptr, head_ptr, tail_ptr, len, Size, \ + fv) \ + { \ + if ( (head_ptr) == (entry_ptr) ) \ + { \ + (head_ptr) = (entry_ptr)->aux_next; \ + if ( (head_ptr) != NULL ) \ + { \ + (head_ptr)->aux_prev = NULL; \ + } \ + } \ + else \ + { \ + (entry_ptr)->aux_prev->aux_next = (entry_ptr)->aux_next; \ + } \ + if ( (tail_ptr) == (entry_ptr) ) \ + { \ + (tail_ptr) = (entry_ptr)->aux_prev; \ + if ( (tail_ptr) != NULL ) \ + { \ + (tail_ptr)->aux_next = NULL; \ + } \ + } \ + else \ + { \ + (entry_ptr)->aux_next->aux_prev = (entry_ptr)->aux_prev; \ + } \ + entry_ptr->aux_next = NULL; \ + entry_ptr->aux_prev = NULL; \ + (len)--; \ + (Size) -= entry_ptr->size; \ + } + + +/*********************************************************************** + * + * Stats collection macros + * + * The following macros must handle stats collection when this collection + * is enabled, and evaluate to the empty string when it is not. + * + * The sole exception to this rule is + * H5C__UPDATE_CACHE_HIT_RATE_STATS(), which is always active as + * the cache hit rate stats are always collected and available. + * + * Changes: + * + * JRM -- 3/21/06 + * Added / updated macros for pinned entry related stats. + * + * JRM -- 8/9/06 + * More pinned entry stats related updates. + * + * JRM -- 3/31/07 + * Updated H5C__UPDATE_STATS_FOR_PROTECT() to keep stats on + * read and write protects. + * + * MAM -- 1/15/09 + * Created H5C__UPDATE_MAX_INDEX_SIZE_STATS to contain + * common code within macros that update the maximum + * index, clean_index, and dirty_index statistics fields. + * + ***********************************************************************/ + +#define H5C__UPDATE_CACHE_HIT_RATE_STATS(cache_ptr, hit) \ + (cache_ptr->cache_accesses)++; \ + if ( hit ) { \ + (cache_ptr->cache_hits)++; \ + } \ + +#if H5C_COLLECT_CACHE_STATS + +#define H5C__UPDATE_MAX_INDEX_SIZE_STATS(cache_ptr) \ + if ( (cache_ptr)->index_size > (cache_ptr)->max_index_size ) \ + (cache_ptr)->max_index_size = (cache_ptr)->index_size; \ + if ( (cache_ptr)->clean_index_size > \ + (cache_ptr)->max_clean_index_size ) \ + (cache_ptr)->max_clean_index_size = \ + (cache_ptr)->clean_index_size; \ + if ( (cache_ptr)->dirty_index_size > \ + (cache_ptr)->max_dirty_index_size ) \ + (cache_ptr)->max_dirty_index_size = \ + (cache_ptr)->dirty_index_size; + +#define H5C__UPDATE_STATS_FOR_DIRTY_PIN(cache_ptr, entry_ptr) \ + (((cache_ptr)->dirty_pins)[(entry_ptr)->type->id])++; + +#define H5C__UPDATE_STATS_FOR_UNPROTECT(cache_ptr) \ + if ( (cache_ptr)->slist_len > (cache_ptr)->max_slist_len ) \ + (cache_ptr)->max_slist_len = (cache_ptr)->slist_len; \ + if ( (cache_ptr)->slist_size > (cache_ptr)->max_slist_size ) \ + (cache_ptr)->max_slist_size = (cache_ptr)->slist_size; \ + if ( (cache_ptr)->pel_len > (cache_ptr)->max_pel_len ) \ + (cache_ptr)->max_pel_len = (cache_ptr)->pel_len; \ + if ( (cache_ptr)->pel_size > (cache_ptr)->max_pel_size ) \ + (cache_ptr)->max_pel_size = (cache_ptr)->pel_size; + +#define H5C__UPDATE_STATS_FOR_MOVE(cache_ptr, entry_ptr) \ + if ( cache_ptr->flush_in_progress ) { \ + ((cache_ptr)->cache_flush_moves[(entry_ptr)->type->id])++; \ + } \ + if ( entry_ptr->flush_in_progress ) { \ + ((cache_ptr)->entry_flush_moves[(entry_ptr)->type->id])++; \ + } \ + (((cache_ptr)->moves)[(entry_ptr)->type->id])++; + +#define H5C__UPDATE_STATS_FOR_ENTRY_SIZE_CHANGE(cache_ptr, entry_ptr, new_size)\ + if ( cache_ptr->flush_in_progress ) { \ + ((cache_ptr)->cache_flush_size_changes[(entry_ptr)->type->id])++; \ + } \ + if ( entry_ptr->flush_in_progress ) { \ + ((cache_ptr)->entry_flush_size_changes[(entry_ptr)->type->id])++; \ + } \ + if ( (entry_ptr)->size < (new_size) ) { \ + ((cache_ptr)->size_increases[(entry_ptr)->type->id])++; \ + H5C__UPDATE_MAX_INDEX_SIZE_STATS(cache_ptr) \ + if ( (cache_ptr)->slist_size > (cache_ptr)->max_slist_size ) \ + (cache_ptr)->max_slist_size = (cache_ptr)->slist_size; \ + if ( (cache_ptr)->pl_size > (cache_ptr)->max_pl_size ) \ + (cache_ptr)->max_pl_size = (cache_ptr)->pl_size; \ + } else if ( (entry_ptr)->size > (new_size) ) { \ + ((cache_ptr)->size_decreases[(entry_ptr)->type->id])++; \ + } + +#define H5C__UPDATE_STATS_FOR_HT_INSERTION(cache_ptr) \ + (cache_ptr)->total_ht_insertions++; + +#define H5C__UPDATE_STATS_FOR_HT_DELETION(cache_ptr) \ + (cache_ptr)->total_ht_deletions++; + +#define H5C__UPDATE_STATS_FOR_HT_SEARCH(cache_ptr, success, depth) \ + if ( success ) { \ + (cache_ptr)->successful_ht_searches++; \ + (cache_ptr)->total_successful_ht_search_depth += depth; \ + } else { \ + (cache_ptr)->failed_ht_searches++; \ + (cache_ptr)->total_failed_ht_search_depth += depth; \ + } + +#define H5C__UPDATE_STATS_FOR_UNPIN(cache_ptr, entry_ptr) \ + ((cache_ptr)->unpins)[(entry_ptr)->type->id]++; + +#if H5C_COLLECT_CACHE_ENTRY_STATS + +#define H5C__RESET_CACHE_ENTRY_STATS(entry_ptr) \ + (entry_ptr)->accesses = 0; \ + (entry_ptr)->clears = 0; \ + (entry_ptr)->flushes = 0; \ + (entry_ptr)->pins = 0; + +#define H5C__UPDATE_STATS_FOR_CLEAR(cache_ptr, entry_ptr) \ + (((cache_ptr)->clears)[(entry_ptr)->type->id])++; \ + if ( (entry_ptr)->is_pinned ) { \ + (((cache_ptr)->pinned_clears)[(entry_ptr)->type->id])++; \ + } \ + ((entry_ptr)->clears)++; + +#define H5C__UPDATE_STATS_FOR_FLUSH(cache_ptr, entry_ptr) \ + (((cache_ptr)->flushes)[(entry_ptr)->type->id])++; \ + if ( (entry_ptr)->is_pinned ) { \ + (((cache_ptr)->pinned_flushes)[(entry_ptr)->type->id])++; \ + } \ + ((entry_ptr)->flushes)++; + +#define H5C__UPDATE_STATS_FOR_EVICTION(cache_ptr, entry_ptr) \ + (((cache_ptr)->evictions)[(entry_ptr)->type->id])++; \ + if ( (entry_ptr)->accesses > \ + ((cache_ptr)->max_accesses)[(entry_ptr)->type->id] ) { \ + ((cache_ptr)->max_accesses)[(entry_ptr)->type->id] \ + = (entry_ptr)->accesses; \ + } \ + if ( (entry_ptr)->accesses < \ + ((cache_ptr)->min_accesses)[(entry_ptr)->type->id] ) { \ + ((cache_ptr)->min_accesses)[(entry_ptr)->type->id] \ + = (entry_ptr)->accesses; \ + } \ + if ( (entry_ptr)->clears > \ + ((cache_ptr)->max_clears)[(entry_ptr)->type->id] ) { \ + ((cache_ptr)->max_clears)[(entry_ptr)->type->id] \ + = (entry_ptr)->clears; \ + } \ + if ( (entry_ptr)->flushes > \ + ((cache_ptr)->max_flushes)[(entry_ptr)->type->id] ) { \ + ((cache_ptr)->max_flushes)[(entry_ptr)->type->id] \ + = (entry_ptr)->flushes; \ + } \ + if ( (entry_ptr)->size > \ + ((cache_ptr)->max_size)[(entry_ptr)->type->id] ) { \ + ((cache_ptr)->max_size)[(entry_ptr)->type->id] \ + = (entry_ptr)->size; \ + } \ + if ( (entry_ptr)->pins > \ + ((cache_ptr)->max_pins)[(entry_ptr)->type->id] ) { \ + ((cache_ptr)->max_pins)[(entry_ptr)->type->id] \ + = (entry_ptr)->pins; \ + } + +#define H5C__UPDATE_STATS_FOR_INSERTION(cache_ptr, entry_ptr) \ + (((cache_ptr)->insertions)[(entry_ptr)->type->id])++; \ + if ( (entry_ptr)->is_pinned ) { \ + (((cache_ptr)->pinned_insertions)[(entry_ptr)->type->id])++; \ + ((cache_ptr)->pins)[(entry_ptr)->type->id]++; \ + (entry_ptr)->pins++; \ + if ( (cache_ptr)->pel_len > (cache_ptr)->max_pel_len ) \ + (cache_ptr)->max_pel_len = (cache_ptr)->pel_len; \ + if ( (cache_ptr)->pel_size > (cache_ptr)->max_pel_size ) \ + (cache_ptr)->max_pel_size = (cache_ptr)->pel_size; \ + } \ + if ( (cache_ptr)->index_len > (cache_ptr)->max_index_len ) \ + (cache_ptr)->max_index_len = (cache_ptr)->index_len; \ + H5C__UPDATE_MAX_INDEX_SIZE_STATS(cache_ptr) \ + if ( (cache_ptr)->slist_len > (cache_ptr)->max_slist_len ) \ + (cache_ptr)->max_slist_len = (cache_ptr)->slist_len; \ + if ( (cache_ptr)->slist_size > (cache_ptr)->max_slist_size ) \ + (cache_ptr)->max_slist_size = (cache_ptr)->slist_size; \ + if ( (entry_ptr)->size > \ + ((cache_ptr)->max_size)[(entry_ptr)->type->id] ) { \ + ((cache_ptr)->max_size)[(entry_ptr)->type->id] \ + = (entry_ptr)->size; \ + } + +#define H5C__UPDATE_STATS_FOR_PROTECT(cache_ptr, entry_ptr, hit) \ + if ( hit ) \ + ((cache_ptr)->hits)[(entry_ptr)->type->id]++; \ + else \ + ((cache_ptr)->misses)[(entry_ptr)->type->id]++; \ + if ( ! ((entry_ptr)->is_read_only) ) { \ + ((cache_ptr)->write_protects)[(entry_ptr)->type->id]++; \ + } else { \ + ((cache_ptr)->read_protects)[(entry_ptr)->type->id]++; \ + if ( ((entry_ptr)->ro_ref_count) > \ + ((cache_ptr)->max_read_protects)[(entry_ptr)->type->id] ) { \ + ((cache_ptr)->max_read_protects)[(entry_ptr)->type->id] = \ + ((entry_ptr)->ro_ref_count); \ + } \ + } \ + if ( (cache_ptr)->index_len > (cache_ptr)->max_index_len ) \ + (cache_ptr)->max_index_len = (cache_ptr)->index_len; \ + H5C__UPDATE_MAX_INDEX_SIZE_STATS(cache_ptr) \ + if ( (cache_ptr)->pl_len > (cache_ptr)->max_pl_len ) \ + (cache_ptr)->max_pl_len = (cache_ptr)->pl_len; \ + if ( (cache_ptr)->pl_size > (cache_ptr)->max_pl_size ) \ + (cache_ptr)->max_pl_size = (cache_ptr)->pl_size; \ + if ( (entry_ptr)->size > \ + ((cache_ptr)->max_size)[(entry_ptr)->type->id] ) { \ + ((cache_ptr)->max_size)[(entry_ptr)->type->id] \ + = (entry_ptr)->size; \ + } \ + ((entry_ptr)->accesses)++; + +#define H5C__UPDATE_STATS_FOR_PIN(cache_ptr, entry_ptr) \ + ((cache_ptr)->pins)[(entry_ptr)->type->id]++; \ + (entry_ptr)->pins++; \ + if ( (cache_ptr)->pel_len > (cache_ptr)->max_pel_len ) \ + (cache_ptr)->max_pel_len = (cache_ptr)->pel_len; \ + if ( (cache_ptr)->pel_size > (cache_ptr)->max_pel_size ) \ + (cache_ptr)->max_pel_size = (cache_ptr)->pel_size; + +#else /* H5C_COLLECT_CACHE_ENTRY_STATS */ + +#define H5C__RESET_CACHE_ENTRY_STATS(entry_ptr) + +#define H5C__UPDATE_STATS_FOR_CLEAR(cache_ptr, entry_ptr) \ + if ( (entry_ptr)->is_pinned ) { \ + (((cache_ptr)->pinned_clears)[(entry_ptr)->type->id])++; \ + } \ + (((cache_ptr)->clears)[(entry_ptr)->type->id])++; + +#define H5C__UPDATE_STATS_FOR_FLUSH(cache_ptr, entry_ptr) \ + (((cache_ptr)->flushes)[(entry_ptr)->type->id])++; \ + if ( (entry_ptr)->is_pinned ) { \ + (((cache_ptr)->pinned_flushes)[(entry_ptr)->type->id])++; \ + } + +#define H5C__UPDATE_STATS_FOR_EVICTION(cache_ptr, entry_ptr) \ + (((cache_ptr)->evictions)[(entry_ptr)->type->id])++; + +#define H5C__UPDATE_STATS_FOR_INSERTION(cache_ptr, entry_ptr) \ + (((cache_ptr)->insertions)[(entry_ptr)->type->id])++; \ + if ( (entry_ptr)->is_pinned ) { \ + (((cache_ptr)->pinned_insertions)[(entry_ptr)->type->id])++; \ + ((cache_ptr)->pins)[(entry_ptr)->type->id]++; \ + if ( (cache_ptr)->pel_len > (cache_ptr)->max_pel_len ) \ + (cache_ptr)->max_pel_len = (cache_ptr)->pel_len; \ + if ( (cache_ptr)->pel_size > (cache_ptr)->max_pel_size ) \ + (cache_ptr)->max_pel_size = (cache_ptr)->pel_size; \ + } \ + if ( (cache_ptr)->index_len > (cache_ptr)->max_index_len ) \ + (cache_ptr)->max_index_len = (cache_ptr)->index_len; \ + H5C__UPDATE_MAX_INDEX_SIZE_STATS(cache_ptr) \ + if ( (cache_ptr)->slist_len > (cache_ptr)->max_slist_len ) \ + (cache_ptr)->max_slist_len = (cache_ptr)->slist_len; \ + if ( (cache_ptr)->slist_size > (cache_ptr)->max_slist_size ) \ + (cache_ptr)->max_slist_size = (cache_ptr)->slist_size; + +#define H5C__UPDATE_STATS_FOR_PROTECT(cache_ptr, entry_ptr, hit) \ + if ( hit ) \ + ((cache_ptr)->hits)[(entry_ptr)->type->id]++; \ + else \ + ((cache_ptr)->misses)[(entry_ptr)->type->id]++; \ + if ( ! ((entry_ptr)->is_read_only) ) { \ + ((cache_ptr)->write_protects)[(entry_ptr)->type->id]++; \ + } else { \ + ((cache_ptr)->read_protects)[(entry_ptr)->type->id]++; \ + if ( ((entry_ptr)->ro_ref_count) > \ + ((cache_ptr)->max_read_protects)[(entry_ptr)->type->id] ) { \ + ((cache_ptr)->max_read_protects)[(entry_ptr)->type->id] = \ + ((entry_ptr)->ro_ref_count); \ + } \ + } \ + if ( (cache_ptr)->index_len > (cache_ptr)->max_index_len ) \ + (cache_ptr)->max_index_len = (cache_ptr)->index_len; \ + H5C__UPDATE_MAX_INDEX_SIZE_STATS(cache_ptr) \ + if ( (cache_ptr)->pl_len > (cache_ptr)->max_pl_len ) \ + (cache_ptr)->max_pl_len = (cache_ptr)->pl_len; \ + if ( (cache_ptr)->pl_size > (cache_ptr)->max_pl_size ) \ + (cache_ptr)->max_pl_size = (cache_ptr)->pl_size; + +#define H5C__UPDATE_STATS_FOR_PIN(cache_ptr, entry_ptr) \ + ((cache_ptr)->pins)[(entry_ptr)->type->id]++; \ + if ( (cache_ptr)->pel_len > (cache_ptr)->max_pel_len ) \ + (cache_ptr)->max_pel_len = (cache_ptr)->pel_len; \ + if ( (cache_ptr)->pel_size > (cache_ptr)->max_pel_size ) \ + (cache_ptr)->max_pel_size = (cache_ptr)->pel_size; + +#endif /* H5C_COLLECT_CACHE_ENTRY_STATS */ + +#else /* H5C_COLLECT_CACHE_STATS */ + +#define H5C__RESET_CACHE_ENTRY_STATS(entry_ptr) +#define H5C__UPDATE_STATS_FOR_DIRTY_PIN(cache_ptr, entry_ptr) +#define H5C__UPDATE_STATS_FOR_UNPROTECT(cache_ptr) +#define H5C__UPDATE_STATS_FOR_MOVE(cache_ptr, entry_ptr) +#define H5C__UPDATE_STATS_FOR_ENTRY_SIZE_CHANGE(cache_ptr, entry_ptr, new_size) +#define H5C__UPDATE_STATS_FOR_HT_INSERTION(cache_ptr) +#define H5C__UPDATE_STATS_FOR_HT_DELETION(cache_ptr) +#define H5C__UPDATE_STATS_FOR_HT_SEARCH(cache_ptr, success, depth) +#define H5C__UPDATE_STATS_FOR_INSERTION(cache_ptr, entry_ptr) +#define H5C__UPDATE_STATS_FOR_CLEAR(cache_ptr, entry_ptr) +#define H5C__UPDATE_STATS_FOR_FLUSH(cache_ptr, entry_ptr) +#define H5C__UPDATE_STATS_FOR_EVICTION(cache_ptr, entry_ptr) +#define H5C__UPDATE_STATS_FOR_PROTECT(cache_ptr, entry_ptr, hit) +#define H5C__UPDATE_STATS_FOR_PIN(cache_ptr, entry_ptr) +#define H5C__UPDATE_STATS_FOR_UNPIN(cache_ptr, entry_ptr) + +#endif /* H5C_COLLECT_CACHE_STATS */ + + +/*********************************************************************** + * + * Hash table access and manipulation macros: + * + * The following macros handle searches, insertions, and deletion in + * the hash table. + * + * When modifying these macros, remember to modify the similar macros + * in tst/cache.c + * + * Changes: + * + * - Updated existing index macros and sanity check macros to maintain + * the clean_index_size and dirty_index_size fields of H5C_t. Also + * added macros to allow us to track entry cleans and dirties. + * + * JRM -- 11/5/08 + * + ***********************************************************************/ + +/* H5C__HASH_TABLE_LEN is defined in H5Cpkg.h. It mut be a power of two. */ + +#define H5C__HASH_MASK ((size_t)(H5C__HASH_TABLE_LEN - 1) << 3) + +#define H5C__HASH_FCN(x) (int)(((x) & H5C__HASH_MASK) >> 3) + +#if H5C_DO_SANITY_CHECKS + +#define H5C__PRE_HT_INSERT_SC(cache_ptr, entry_ptr, fail_val) \ +if ( ( (cache_ptr) == NULL ) || \ + ( (cache_ptr)->magic != H5C__H5C_T_MAGIC ) || \ + ( (entry_ptr) == NULL ) || \ + ( ! H5F_addr_defined((entry_ptr)->addr) ) || \ + ( (entry_ptr)->ht_next != NULL ) || \ + ( (entry_ptr)->ht_prev != NULL ) || \ + ( (entry_ptr)->size <= 0 ) || \ + ( (k = H5C__HASH_FCN((entry_ptr)->addr)) < 0 ) || \ + ( k >= H5C__HASH_TABLE_LEN ) || \ + ( (cache_ptr)->index_size != \ + ((cache_ptr)->clean_index_size + \ + (cache_ptr)->dirty_index_size) ) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, fail_val, \ + "Pre HT insert SC failed") \ +} + +#define H5C__PRE_HT_REMOVE_SC(cache_ptr, entry_ptr) \ +if ( ( (cache_ptr) == NULL ) || \ + ( (cache_ptr)->magic != H5C__H5C_T_MAGIC ) || \ + ( (cache_ptr)->index_len < 1 ) || \ + ( (entry_ptr) == NULL ) || \ + ( (cache_ptr)->index_size < (entry_ptr)->size ) || \ + ( ! H5F_addr_defined((entry_ptr)->addr) ) || \ + ( (entry_ptr)->size <= 0 ) || \ + ( H5C__HASH_FCN((entry_ptr)->addr) < 0 ) || \ + ( H5C__HASH_FCN((entry_ptr)->addr) >= H5C__HASH_TABLE_LEN ) || \ + ( ((cache_ptr)->index)[(H5C__HASH_FCN((entry_ptr)->addr))] \ + == NULL ) || \ + ( ( ((cache_ptr)->index)[(H5C__HASH_FCN((entry_ptr)->addr))] \ + != (entry_ptr) ) && \ + ( (entry_ptr)->ht_prev == NULL ) ) || \ + ( ( ((cache_ptr)->index)[(H5C__HASH_FCN((entry_ptr)->addr))] == \ + (entry_ptr) ) && \ + ( (entry_ptr)->ht_prev != NULL ) ) || \ + ( (cache_ptr)->index_size != \ + ((cache_ptr)->clean_index_size + \ + (cache_ptr)->dirty_index_size) ) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "Pre HT remove SC failed") \ +} + +/* (Keep in sync w/H5C_TEST__PRE_HT_SEARCH_SC macro in test/cache_common.h -QAK) */ +#define H5C__PRE_HT_SEARCH_SC(cache_ptr, Addr, fail_val) \ +if ( ( (cache_ptr) == NULL ) || \ + ( (cache_ptr)->magic != H5C__H5C_T_MAGIC ) || \ + ( (cache_ptr)->index_size != \ + ((cache_ptr)->clean_index_size + (cache_ptr)->dirty_index_size) ) || \ + ( ! H5F_addr_defined(Addr) ) || \ + ( H5C__HASH_FCN(Addr) < 0 ) || \ + ( H5C__HASH_FCN(Addr) >= H5C__HASH_TABLE_LEN ) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, fail_val, "Pre HT search SC failed") \ +} + +/* (Keep in sync w/H5C_TEST__POST_SUC_HT_SEARCH_SC macro in test/cache_common.h -QAK) */ +#define H5C__POST_SUC_HT_SEARCH_SC(cache_ptr, entry_ptr, Addr, k, fail_val) \ +if ( ( (cache_ptr) == NULL ) || \ + ( (cache_ptr)->magic != H5C__H5C_T_MAGIC ) || \ + ( (cache_ptr)->index_len < 1 ) || \ + ( (entry_ptr) == NULL ) || \ + ( (cache_ptr)->index_size < (entry_ptr)->size ) || \ + ( (cache_ptr)->index_size != \ + ((cache_ptr)->clean_index_size + (cache_ptr)->dirty_index_size) ) || \ + ( H5F_addr_ne((entry_ptr)->addr, (Addr)) ) || \ + ( (entry_ptr)->size <= 0 ) || \ + ( ((cache_ptr)->index)[k] == NULL ) || \ + ( ( ((cache_ptr)->index)[k] != (entry_ptr) ) && \ + ( (entry_ptr)->ht_prev == NULL ) ) || \ + ( ( ((cache_ptr)->index)[k] == (entry_ptr) ) && \ + ( (entry_ptr)->ht_prev != NULL ) ) || \ + ( ( (entry_ptr)->ht_prev != NULL ) && \ + ( (entry_ptr)->ht_prev->ht_next != (entry_ptr) ) ) || \ + ( ( (entry_ptr)->ht_next != NULL ) && \ + ( (entry_ptr)->ht_next->ht_prev != (entry_ptr) ) ) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, fail_val, \ + "Post successful HT search SC failed") \ +} + +/* (Keep in sync w/H5C_TEST__POST_HT_SHIFT_TO_FRONT macro in test/cache_common.h -QAK) */ +#define H5C__POST_HT_SHIFT_TO_FRONT(cache_ptr, entry_ptr, k, fail_val) \ +if ( ( (cache_ptr) == NULL ) || \ + ( ((cache_ptr)->index)[k] != (entry_ptr) ) || \ + ( (entry_ptr)->ht_prev != NULL ) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, fail_val, \ + "Post HT shift to front SC failed") \ +} + +#define H5C__PRE_HT_ENTRY_SIZE_CHANGE_SC(cache_ptr, old_size, new_size, \ + entry_ptr, was_clean) \ +if ( ( (cache_ptr) == NULL ) || \ + ( (cache_ptr)->index_len <= 0 ) || \ + ( (cache_ptr)->index_size <= 0 ) || \ + ( (new_size) <= 0 ) || \ + ( (old_size) > (cache_ptr)->index_size ) || \ + ( (new_size) <= 0 ) || \ + ( ( (cache_ptr)->index_len == 1 ) && \ + ( (cache_ptr)->index_size != (old_size) ) ) || \ + ( (cache_ptr)->index_size != \ + ((cache_ptr)->clean_index_size + \ + (cache_ptr)->dirty_index_size) ) || \ + ( (entry_ptr == NULL) ) || \ + ( ( !( was_clean ) || \ + ( (cache_ptr)->clean_index_size < (old_size) ) ) && \ + ( ( (was_clean) ) || \ + ( (cache_ptr)->dirty_index_size < (old_size) ) ) ) || \ + ( (entry_ptr) == NULL ) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, \ + "Pre HT entry size change SC failed") \ +} + +#define H5C__POST_HT_ENTRY_SIZE_CHANGE_SC(cache_ptr, old_size, new_size, \ + entry_ptr) \ +if ( ( (cache_ptr) == NULL ) || \ + ( (cache_ptr)->index_len <= 0 ) || \ + ( (cache_ptr)->index_size <= 0 ) || \ + ( (new_size) > (cache_ptr)->index_size ) || \ + ( (cache_ptr)->index_size != \ + ((cache_ptr)->clean_index_size + \ + (cache_ptr)->dirty_index_size) ) || \ + ( ( !((entry_ptr)->is_dirty ) || \ + ( (cache_ptr)->dirty_index_size < (new_size) ) ) && \ + ( ( ((entry_ptr)->is_dirty) ) || \ + ( (cache_ptr)->clean_index_size < (new_size) ) ) ) || \ + ( ( (cache_ptr)->index_len == 1 ) && \ + ( (cache_ptr)->index_size != (new_size) ) ) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, \ + "Post HT entry size change SC failed") \ +} + +#define H5C__PRE_HT_UPDATE_FOR_ENTRY_CLEAN_SC(cache_ptr, entry_ptr) \ +if ( \ + ( (cache_ptr) == NULL ) || \ + ( (cache_ptr)->magic != H5C__H5C_T_MAGIC ) || \ + ( (cache_ptr)->index_len <= 0 ) || \ + ( (entry_ptr) == NULL ) || \ + ( (entry_ptr)->is_dirty != FALSE ) || \ + ( (cache_ptr)->index_size < (entry_ptr)->size ) || \ + ( (cache_ptr)->dirty_index_size < (entry_ptr)->size ) || \ + ( (cache_ptr)->index_size != \ + ((cache_ptr)->clean_index_size + (cache_ptr)->dirty_index_size) ) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, \ + "Pre HT update for entry clean SC failed") \ +} + +#define H5C__PRE_HT_UPDATE_FOR_ENTRY_DIRTY_SC(cache_ptr, entry_ptr) \ +if ( \ + ( (cache_ptr) == NULL ) || \ + ( (cache_ptr)->magic != H5C__H5C_T_MAGIC ) || \ + ( (cache_ptr)->index_len <= 0 ) || \ + ( (entry_ptr) == NULL ) || \ + ( (entry_ptr)->is_dirty != TRUE ) || \ + ( (cache_ptr)->index_size < (entry_ptr)->size ) || \ + ( (cache_ptr)->clean_index_size < (entry_ptr)->size ) || \ + ( (cache_ptr)->index_size != \ + ((cache_ptr)->clean_index_size + (cache_ptr)->dirty_index_size) ) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, \ + "Pre HT update for entry dirty SC failed") \ +} + +#define H5C__POST_HT_UPDATE_FOR_ENTRY_CLEAN_SC(cache_ptr, entry_ptr) \ +if ( (cache_ptr)->index_size != \ + ((cache_ptr)->clean_index_size + (cache_ptr)->dirty_index_size) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, \ + "Post HT update for entry clean SC failed") \ +} + +#define H5C__POST_HT_UPDATE_FOR_ENTRY_DIRTY_SC(cache_ptr, entry_ptr) \ +if ( (cache_ptr)->index_size != \ + ((cache_ptr)->clean_index_size + (cache_ptr)->dirty_index_size) ) { \ + HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, \ + "Post HT update for entry dirty SC failed") \ +} + +#else /* H5C_DO_SANITY_CHECKS */ + +#define H5C__PRE_HT_INSERT_SC(cache_ptr, entry_ptr, fail_val) +#define H5C__PRE_HT_REMOVE_SC(cache_ptr, entry_ptr) +#define H5C__PRE_HT_SEARCH_SC(cache_ptr, Addr, fail_val) +#define H5C__POST_SUC_HT_SEARCH_SC(cache_ptr, entry_ptr, Addr, k, fail_val) +#define H5C__POST_HT_SHIFT_TO_FRONT(cache_ptr, entry_ptr, k, fail_val) +#define H5C__PRE_HT_UPDATE_FOR_ENTRY_CLEAN_SC(cache_ptr, entry_ptr) +#define H5C__PRE_HT_UPDATE_FOR_ENTRY_DIRTY_SC(cache_ptr, entry_ptr) +#define H5C__PRE_HT_ENTRY_SIZE_CHANGE_SC(cache_ptr, old_size, new_size, \ + entry_ptr, was_clean) +#define H5C__POST_HT_ENTRY_SIZE_CHANGE_SC(cache_ptr, old_size, new_size, \ + entry_ptr) +#define H5C__POST_HT_UPDATE_FOR_ENTRY_CLEAN_SC(cache_ptr, entry_ptr) +#define H5C__POST_HT_UPDATE_FOR_ENTRY_DIRTY_SC(cache_ptr, entry_ptr) + +#endif /* H5C_DO_SANITY_CHECKS */ + + +#define H5C__INSERT_IN_INDEX(cache_ptr, entry_ptr, fail_val) \ +{ \ + int k; \ + H5C__PRE_HT_INSERT_SC(cache_ptr, entry_ptr, fail_val) \ + k = H5C__HASH_FCN((entry_ptr)->addr); \ + if ( ((cache_ptr)->index)[k] == NULL ) \ + { \ + ((cache_ptr)->index)[k] = (entry_ptr); \ + } \ + else \ + { \ + (entry_ptr)->ht_next = ((cache_ptr)->index)[k]; \ + (entry_ptr)->ht_next->ht_prev = (entry_ptr); \ + ((cache_ptr)->index)[k] = (entry_ptr); \ + } \ + (cache_ptr)->index_len++; \ + (cache_ptr)->index_size += (entry_ptr)->size; \ + if ( (entry_ptr)->is_dirty ) { \ + (cache_ptr)->dirty_index_size += (entry_ptr)->size; \ + } else { \ + (cache_ptr)->clean_index_size += (entry_ptr)->size; \ + } \ + H5C__UPDATE_STATS_FOR_HT_INSERTION(cache_ptr) \ +} + +#define H5C__DELETE_FROM_INDEX(cache_ptr, entry_ptr) \ +{ \ + int k; \ + H5C__PRE_HT_REMOVE_SC(cache_ptr, entry_ptr) \ + k = H5C__HASH_FCN((entry_ptr)->addr); \ + if ( (entry_ptr)->ht_next ) \ + { \ + (entry_ptr)->ht_next->ht_prev = (entry_ptr)->ht_prev; \ + } \ + if ( (entry_ptr)->ht_prev ) \ + { \ + (entry_ptr)->ht_prev->ht_next = (entry_ptr)->ht_next; \ + } \ + if ( ((cache_ptr)->index)[k] == (entry_ptr) ) \ + { \ + ((cache_ptr)->index)[k] = (entry_ptr)->ht_next; \ + } \ + (entry_ptr)->ht_next = NULL; \ + (entry_ptr)->ht_prev = NULL; \ + (cache_ptr)->index_len--; \ + (cache_ptr)->index_size -= (entry_ptr)->size; \ + if ( (entry_ptr)->is_dirty ) { \ + (cache_ptr)->dirty_index_size -= (entry_ptr)->size; \ + } else { \ + (cache_ptr)->clean_index_size -= (entry_ptr)->size; \ + } \ + H5C__UPDATE_STATS_FOR_HT_DELETION(cache_ptr) \ +} + +#define H5C__SEARCH_INDEX(cache_ptr, Addr, entry_ptr, fail_val) \ +{ \ + int k; \ + int depth = 0; \ + H5C__PRE_HT_SEARCH_SC(cache_ptr, Addr, fail_val) \ + k = H5C__HASH_FCN(Addr); \ + entry_ptr = ((cache_ptr)->index)[k]; \ + while ( ( entry_ptr ) && ( H5F_addr_ne(Addr, (entry_ptr)->addr) ) ) \ + { \ + (entry_ptr) = (entry_ptr)->ht_next; \ + (depth)++; \ + } \ + if ( entry_ptr ) \ + { \ + H5C__POST_SUC_HT_SEARCH_SC(cache_ptr, entry_ptr, Addr, k, fail_val) \ + if ( entry_ptr != ((cache_ptr)->index)[k] ) \ + { \ + if ( (entry_ptr)->ht_next ) \ + { \ + (entry_ptr)->ht_next->ht_prev = (entry_ptr)->ht_prev; \ + } \ + HDassert( (entry_ptr)->ht_prev != NULL ); \ + (entry_ptr)->ht_prev->ht_next = (entry_ptr)->ht_next; \ + ((cache_ptr)->index)[k]->ht_prev = (entry_ptr); \ + (entry_ptr)->ht_next = ((cache_ptr)->index)[k]; \ + (entry_ptr)->ht_prev = NULL; \ + ((cache_ptr)->index)[k] = (entry_ptr); \ + H5C__POST_HT_SHIFT_TO_FRONT(cache_ptr, entry_ptr, k, fail_val) \ + } \ + } \ + H5C__UPDATE_STATS_FOR_HT_SEARCH(cache_ptr, (entry_ptr != NULL), depth) \ +} + +#define H5C__SEARCH_INDEX_NO_STATS(cache_ptr, Addr, entry_ptr, fail_val) \ +{ \ + int k; \ + int depth = 0; \ + H5C__PRE_HT_SEARCH_SC(cache_ptr, Addr, fail_val) \ + k = H5C__HASH_FCN(Addr); \ + entry_ptr = ((cache_ptr)->index)[k]; \ + while ( ( entry_ptr ) && ( H5F_addr_ne(Addr, (entry_ptr)->addr) ) ) \ + { \ + (entry_ptr) = (entry_ptr)->ht_next; \ + (depth)++; \ + } \ + if ( entry_ptr ) \ + { \ + H5C__POST_SUC_HT_SEARCH_SC(cache_ptr, entry_ptr, Addr, k, fail_val) \ + if ( entry_ptr != ((cache_ptr)->index)[k] ) \ + { \ + if ( (entry_ptr)->ht_next ) \ + { \ + (entry_ptr)->ht_next->ht_prev = (entry_ptr)->ht_prev; \ + } \ + HDassert( (entry_ptr)->ht_prev != NULL ); \ + (entry_ptr)->ht_prev->ht_next = (entry_ptr)->ht_next; \ + ((cache_ptr)->index)[k]->ht_prev = (entry_ptr); \ + (entry_ptr)->ht_next = ((cache_ptr)->index)[k]; \ + (entry_ptr)->ht_prev = NULL; \ + ((cache_ptr)->index)[k] = (entry_ptr); \ + H5C__POST_HT_SHIFT_TO_FRONT(cache_ptr, entry_ptr, k, fail_val) \ + } \ + } \ +} + +#define H5C__UPDATE_INDEX_FOR_ENTRY_CLEAN(cache_ptr, entry_ptr) \ +{ \ + H5C__PRE_HT_UPDATE_FOR_ENTRY_CLEAN_SC(cache_ptr, entry_ptr); \ + (cache_ptr)->dirty_index_size -= (entry_ptr)->size; \ + (cache_ptr)->clean_index_size += (entry_ptr)->size; \ + H5C__POST_HT_UPDATE_FOR_ENTRY_CLEAN_SC(cache_ptr, entry_ptr); \ +} + +#define H5C__UPDATE_INDEX_FOR_ENTRY_DIRTY(cache_ptr, entry_ptr) \ +{ \ + H5C__PRE_HT_UPDATE_FOR_ENTRY_DIRTY_SC(cache_ptr, entry_ptr); \ + (cache_ptr)->clean_index_size -= (entry_ptr)->size; \ + (cache_ptr)->dirty_index_size += (entry_ptr)->size; \ + H5C__POST_HT_UPDATE_FOR_ENTRY_DIRTY_SC(cache_ptr, entry_ptr); \ +} + +#define H5C__UPDATE_INDEX_FOR_SIZE_CHANGE(cache_ptr, old_size, new_size, \ + entry_ptr, was_clean) \ +{ \ + H5C__PRE_HT_ENTRY_SIZE_CHANGE_SC(cache_ptr, old_size, new_size, \ + entry_ptr, was_clean) \ + (cache_ptr)->index_size -= (old_size); \ + (cache_ptr)->index_size += (new_size); \ + if ( was_clean ) { \ + (cache_ptr)->clean_index_size -= (old_size); \ + } else { \ + (cache_ptr)->dirty_index_size -= (old_size); \ + } \ + if ( (entry_ptr)->is_dirty ) { \ + (cache_ptr)->dirty_index_size += (new_size); \ + } else { \ + (cache_ptr)->clean_index_size += (new_size); \ + } \ + H5C__POST_HT_ENTRY_SIZE_CHANGE_SC(cache_ptr, old_size, new_size, \ + entry_ptr) \ +} + + +/************************************************************************** + * + * Skip list insertion and deletion macros: + * + * These used to be functions, but I converted them to macros to avoid some + * function call overhead. + * + **************************************************************************/ + +/*------------------------------------------------------------------------- + * + * Macro: H5C__INSERT_ENTRY_IN_SLIST + * + * Purpose: Insert the specified instance of H5C_cache_entry_t into + * the skip list in the specified instance of H5C_t. Update + * the associated length and size fields. + * + * Return: N/A + * + * Programmer: John Mainzer, 5/10/04 + * + * Modifications: + * + * JRM -- 7/21/04 + * Updated function to set the in_tree flag when inserting + * an entry into the tree. Also modified the function to + * update the tree size and len fields instead of the similar + * index fields. + * + * All of this is part of the modifications to support the + * hash table. + * + * JRM -- 7/27/04 + * Converted the function H5C_insert_entry_in_tree() into + * the macro H5C__INSERT_ENTRY_IN_TREE in the hopes of + * wringing a little more speed out of the cache. + * + * Note that we don't bother to check if the entry is already + * in the tree -- if it is, H5SL_insert() will fail. + * + * QAK -- 11/27/04 + * Switched over to using skip list routines. + * + * JRM -- 6/27/06 + * Added fail_val parameter. + * + * JRM -- 8/25/06 + * Added the H5C_DO_SANITY_CHECKS version of the macro. + * + * This version maintains the slist_len_increase and + * slist_size_increase fields that are used in sanity + * checks in the flush routines. + * + * All this is needed as the fractal heap needs to be + * able to dirty, resize and/or move entries during the + * flush. + * + *------------------------------------------------------------------------- + */ + +#if H5C_DO_SANITY_CHECKS + +#define H5C__INSERT_ENTRY_IN_SLIST(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( (entry_ptr)->size > 0 ); \ + HDassert( H5F_addr_defined((entry_ptr)->addr) ); \ + HDassert( !((entry_ptr)->in_slist) ); \ + \ + if ( H5SL_insert((cache_ptr)->slist_ptr, entry_ptr, &(entry_ptr)->addr) \ + < 0 ) \ + HGOTO_ERROR(H5E_CACHE, H5E_BADVALUE, (fail_val), \ + "Can't insert entry in skip list") \ + \ + (entry_ptr)->in_slist = TRUE; \ + (cache_ptr)->slist_len++; \ + (cache_ptr)->slist_size += (entry_ptr)->size; \ + (cache_ptr)->slist_len_increase++; \ + (cache_ptr)->slist_size_increase += (entry_ptr)->size; \ + \ + HDassert( (cache_ptr)->slist_len > 0 ); \ + HDassert( (cache_ptr)->slist_size > 0 ); \ + \ +} /* H5C__INSERT_ENTRY_IN_SLIST */ + +#else /* H5C_DO_SANITY_CHECKS */ + +#define H5C__INSERT_ENTRY_IN_SLIST(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( (entry_ptr)->size > 0 ); \ + HDassert( H5F_addr_defined((entry_ptr)->addr) ); \ + HDassert( !((entry_ptr)->in_slist) ); \ + \ + if ( H5SL_insert((cache_ptr)->slist_ptr, entry_ptr, &(entry_ptr)->addr) \ + < 0 ) \ + HGOTO_ERROR(H5E_CACHE, H5E_BADVALUE, (fail_val), \ + "Can't insert entry in skip list") \ + \ + (entry_ptr)->in_slist = TRUE; \ + (cache_ptr)->slist_len++; \ + (cache_ptr)->slist_size += (entry_ptr)->size; \ + \ + HDassert( (cache_ptr)->slist_len > 0 ); \ + HDassert( (cache_ptr)->slist_size > 0 ); \ + \ +} /* H5C__INSERT_ENTRY_IN_SLIST */ + +#endif /* H5C_DO_SANITY_CHECKS */ + + +/*------------------------------------------------------------------------- + * + * Function: H5C__REMOVE_ENTRY_FROM_SLIST + * + * Purpose: Remove the specified instance of H5C_cache_entry_t from the + * index skip list in the specified instance of H5C_t. Update + * the associated length and size fields. + * + * Return: N/A + * + * Programmer: John Mainzer, 5/10/04 + * + * Modifications: + * + * JRM -- 7/21/04 + * Updated function for the addition of the hash table. + * + * JRM - 7/27/04 + * Converted from the function H5C_remove_entry_from_tree() + * to the macro H5C__REMOVE_ENTRY_FROM_TREE in the hopes of + * wringing a little more performance out of the cache. + * + * QAK -- 11/27/04 + * Switched over to using skip list routines. + * + * JRM -- 3/28/07 + * Updated sanity checks for the new is_read_only and + * ro_ref_count fields in H5C_cache_entry_t. + * + *------------------------------------------------------------------------- + */ + +#define H5C__REMOVE_ENTRY_FROM_SLIST(cache_ptr, entry_ptr) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + HDassert( (entry_ptr)->in_slist ); \ + HDassert( (cache_ptr)->slist_ptr ); \ + \ + if ( H5SL_remove((cache_ptr)->slist_ptr, &(entry_ptr)->addr) \ + != (entry_ptr) ) \ + \ + HGOTO_ERROR(H5E_CACHE, H5E_BADVALUE, FAIL, \ + "Can't delete entry from skip list.") \ + \ + HDassert( (cache_ptr)->slist_len > 0 ); \ + (cache_ptr)->slist_len--; \ + HDassert( (cache_ptr)->slist_size >= (entry_ptr)->size ); \ + (cache_ptr)->slist_size -= (entry_ptr)->size; \ + (entry_ptr)->in_slist = FALSE; \ +} /* H5C__REMOVE_ENTRY_FROM_SLIST */ + + +/*------------------------------------------------------------------------- + * + * Function: H5C__UPDATE_SLIST_FOR_SIZE_CHANGE + * + * Purpose: Update cache_ptr->slist_size for a change in the size of + * and entry in the slist. + * + * Return: N/A + * + * Programmer: John Mainzer, 9/07/05 + * + * Modifications: + * + * JRM -- 8/27/06 + * Added the H5C_DO_SANITY_CHECKS version of the macro. + * + * This version maintains the slist_size_increase field + * that are used in sanity checks in the flush routines. + * + * All this is needed as the fractal heap needs to be + * able to dirty, resize and/or move entries during the + * flush. + * + *------------------------------------------------------------------------- + */ + +#if H5C_DO_SANITY_CHECKS + +#define H5C__UPDATE_SLIST_FOR_SIZE_CHANGE(cache_ptr, old_size, new_size) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (old_size) > 0 ); \ + HDassert( (new_size) > 0 ); \ + HDassert( (old_size) <= (cache_ptr)->slist_size ); \ + HDassert( (cache_ptr)->slist_len > 0 ); \ + HDassert( ((cache_ptr)->slist_len > 1) || \ + ( (cache_ptr)->slist_size == (old_size) ) ); \ + \ + (cache_ptr)->slist_size -= (old_size); \ + (cache_ptr)->slist_size += (new_size); \ + \ + (cache_ptr)->slist_size_increase -= (int64_t)(old_size); \ + (cache_ptr)->slist_size_increase += (int64_t)(new_size); \ + \ + HDassert( (new_size) <= (cache_ptr)->slist_size ); \ + HDassert( ( (cache_ptr)->slist_len > 1 ) || \ + ( (cache_ptr)->slist_size == (new_size) ) ); \ +} /* H5C__REMOVE_ENTRY_FROM_SLIST */ + +#else /* H5C_DO_SANITY_CHECKS */ + +#define H5C__UPDATE_SLIST_FOR_SIZE_CHANGE(cache_ptr, old_size, new_size) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (old_size) > 0 ); \ + HDassert( (new_size) > 0 ); \ + HDassert( (old_size) <= (cache_ptr)->slist_size ); \ + HDassert( (cache_ptr)->slist_len > 0 ); \ + HDassert( ((cache_ptr)->slist_len > 1) || \ + ( (cache_ptr)->slist_size == (old_size) ) ); \ + \ + (cache_ptr)->slist_size -= (old_size); \ + (cache_ptr)->slist_size += (new_size); \ + \ + HDassert( (new_size) <= (cache_ptr)->slist_size ); \ + HDassert( ( (cache_ptr)->slist_len > 1 ) || \ + ( (cache_ptr)->slist_size == (new_size) ) ); \ +} /* H5C__REMOVE_ENTRY_FROM_SLIST */ + +#endif /* H5C_DO_SANITY_CHECKS */ + + +/************************************************************************** + * + * Replacement policy update macros: + * + * These used to be functions, but I converted them to macros to avoid some + * function call overhead. + * + **************************************************************************/ + +/*------------------------------------------------------------------------- + * + * Macro: H5C__FAKE_RP_FOR_MOST_RECENT_ACCESS + * + * Purpose: For efficiency, we sometimes change the order of flushes -- + * but doing so can confuse the replacement policy. This + * macro exists to allow us to specify an entry as the + * most recently touched so we can repair any such + * confusion. + * + * At present, we only support the modified LRU policy, so + * this function deals with that case unconditionally. If + * we ever support other replacement policies, the macro + * should switch on the current policy and act accordingly. + * + * Return: N/A + * + * Programmer: John Mainzer, 10/13/05 + * + * Modifications: + * + * JRM -- 3/20/06 + * Modified macro to ignore pinned entries. Pinned entries + * do not appear in the data structures maintained by the + * replacement policy code, and thus this macro has nothing + * to do if called for such an entry. + * + * JRM -- 3/28/07 + * Added sanity checks using the new is_read_only and + * ro_ref_count fields of struct H5C_cache_entry_t. + * + *------------------------------------------------------------------------- + */ + +#if H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS + +#define H5C__FAKE_RP_FOR_MOST_RECENT_ACCESS(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + if ( ! ((entry_ptr)->is_pinned) ) { \ + \ + /* modified LRU specific code */ \ + \ + /* remove the entry from the LRU list, and re-insert it at the head.\ + */ \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* Use the dirty flag to infer whether the entry is on the clean or \ + * dirty LRU list, and remove it. Then insert it at the head of \ + * the same LRU list. \ + * \ + * At least initially, all entries should be clean. That may \ + * change, so we may as well deal with both cases now. \ + */ \ + \ + if ( (entry_ptr)->is_dirty ) { \ + H5C__AUX_DLL_REMOVE((entry_ptr), (cache_ptr)->dLRU_head_ptr, \ + (cache_ptr)->dLRU_tail_ptr, \ + (cache_ptr)->dLRU_list_len, \ + (cache_ptr)->dLRU_list_size, (fail_val)) \ + \ + H5C__AUX_DLL_PREPEND((entry_ptr), (cache_ptr)->dLRU_head_ptr, \ + (cache_ptr)->dLRU_tail_ptr, \ + (cache_ptr)->dLRU_list_len, \ + (cache_ptr)->dLRU_list_size, (fail_val)) \ + } else { \ + H5C__AUX_DLL_REMOVE((entry_ptr), (cache_ptr)->cLRU_head_ptr, \ + (cache_ptr)->cLRU_tail_ptr, \ + (cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, (fail_val)) \ + \ + H5C__AUX_DLL_PREPEND((entry_ptr), (cache_ptr)->cLRU_head_ptr, \ + (cache_ptr)->cLRU_tail_ptr, \ + (cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, (fail_val)) \ + } \ + \ + /* End modified LRU specific code. */ \ + } \ +} /* H5C__FAKE_RP_FOR_MOST_RECENT_ACCESS */ + +#else /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + +#define H5C__FAKE_RP_FOR_MOST_RECENT_ACCESS(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + if ( ! ((entry_ptr)->is_pinned) ) { \ + \ + /* modified LRU specific code */ \ + \ + /* remove the entry from the LRU list, and re-insert it at the head \ + */ \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* End modified LRU specific code. */ \ + } \ +} /* H5C__FAKE_RP_FOR_MOST_RECENT_ACCESS */ + +#endif /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + + +/*------------------------------------------------------------------------- + * + * Macro: H5C__UPDATE_RP_FOR_EVICTION + * + * Purpose: Update the replacement policy data structures for an + * eviction of the specified cache entry. + * + * At present, we only support the modified LRU policy, so + * this function deals with that case unconditionally. If + * we ever support other replacement policies, the function + * should switch on the current policy and act accordingly. + * + * Return: Non-negative on success/Negative on failure. + * + * Programmer: John Mainzer, 5/10/04 + * + * Modifications: + * + * JRM - 7/27/04 + * Converted the function H5C_update_rp_for_eviction() to the + * macro H5C__UPDATE_RP_FOR_EVICTION in an effort to squeeze + * a bit more performance out of the cache. + * + * At least for the first cut, I am leaving the comments and + * white space in the macro. If they cause dificulties with + * the pre-processor, I'll have to remove them. + * + * JRM - 7/28/04 + * Split macro into two version, one supporting the clean and + * dirty LRU lists, and the other not. Yet another attempt + * at optimization. + * + * JRM - 3/20/06 + * Pinned entries can't be evicted, so this entry should never + * be called on a pinned entry. Added assert to verify this. + * + * JRM -- 3/28/07 + * Added sanity checks for the new is_read_only and + * ro_ref_count fields of struct H5C_cache_entry_t. + * + *------------------------------------------------------------------------- + */ + +#if H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS + +#define H5C__UPDATE_RP_FOR_EVICTION(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( !((entry_ptr)->is_pinned) ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + /* modified LRU specific code */ \ + \ + /* remove the entry from the LRU list. */ \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* If the entry is clean when it is evicted, it should be on the \ + * clean LRU list, if it was dirty, it should be on the dirty LRU list. \ + * Remove it from the appropriate list according to the value of the \ + * dirty flag. \ + */ \ + \ + if ( (entry_ptr)->is_dirty ) { \ + \ + H5C__AUX_DLL_REMOVE((entry_ptr), (cache_ptr)->dLRU_head_ptr, \ + (cache_ptr)->dLRU_tail_ptr, \ + (cache_ptr)->dLRU_list_len, \ + (cache_ptr)->dLRU_list_size, (fail_val)) \ + } else { \ + H5C__AUX_DLL_REMOVE((entry_ptr), (cache_ptr)->cLRU_head_ptr, \ + (cache_ptr)->cLRU_tail_ptr, \ + (cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, (fail_val)) \ + } \ + \ +} /* H5C__UPDATE_RP_FOR_EVICTION */ + +#else /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + +#define H5C__UPDATE_RP_FOR_EVICTION(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( !((entry_ptr)->is_pinned) ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + /* modified LRU specific code */ \ + \ + /* remove the entry from the LRU list. */ \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ +} /* H5C__UPDATE_RP_FOR_EVICTION */ + +#endif /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + + +/*------------------------------------------------------------------------- + * + * Macro: H5C__UPDATE_RP_FOR_FLUSH + * + * Purpose: Update the replacement policy data structures for a flush + * of the specified cache entry. + * + * At present, we only support the modified LRU policy, so + * this function deals with that case unconditionally. If + * we ever support other replacement policies, the function + * should switch on the current policy and act accordingly. + * + * Return: N/A + * + * Programmer: John Mainzer, 5/6/04 + * + * Modifications: + * + * JRM - 7/27/04 + * Converted the function H5C_update_rp_for_flush() to the + * macro H5C__UPDATE_RP_FOR_FLUSH in an effort to squeeze + * a bit more performance out of the cache. + * + * At least for the first cut, I am leaving the comments and + * white space in the macro. If they cause dificulties with + * pre-processor, I'll have to remove them. + * + * JRM - 7/28/04 + * Split macro into two versions, one supporting the clean and + * dirty LRU lists, and the other not. Yet another attempt + * at optimization. + * + * JRM - 3/20/06 + * While pinned entries can be flushed, they don't reside in + * the replacement policy data structures when unprotected. + * Thus I modified this macro to do nothing if the entry is + * pinned. + * + * JRM - 3/28/07 + * Added sanity checks based on the new is_read_only and + * ro_ref_count fields of struct H5C_cache_entry_t. + * + *------------------------------------------------------------------------- + */ + +#if H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS + +#define H5C__UPDATE_RP_FOR_FLUSH(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + if ( ! ((entry_ptr)->is_pinned) ) { \ + \ + /* modified LRU specific code */ \ + \ + /* remove the entry from the LRU list, and re-insert it at the \ + * head. \ + */ \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* since the entry is being flushed or cleared, one would think \ + * that it must be dirty -- but that need not be the case. Use the \ + * dirty flag to infer whether the entry is on the clean or dirty \ + * LRU list, and remove it. Then insert it at the head of the \ + * clean LRU list. \ + * \ + * The function presumes that a dirty entry will be either cleared \ + * or flushed shortly, so it is OK if we put a dirty entry on the \ + * clean LRU list. \ + */ \ + \ + if ( (entry_ptr)->is_dirty ) { \ + H5C__AUX_DLL_REMOVE((entry_ptr), (cache_ptr)->dLRU_head_ptr, \ + (cache_ptr)->dLRU_tail_ptr, \ + (cache_ptr)->dLRU_list_len, \ + (cache_ptr)->dLRU_list_size, (fail_val)) \ + } else { \ + H5C__AUX_DLL_REMOVE((entry_ptr), (cache_ptr)->cLRU_head_ptr, \ + (cache_ptr)->cLRU_tail_ptr, \ + (cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, (fail_val)) \ + } \ + \ + H5C__AUX_DLL_PREPEND((entry_ptr), (cache_ptr)->cLRU_head_ptr, \ + (cache_ptr)->cLRU_tail_ptr, \ + (cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, (fail_val)) \ + \ + /* End modified LRU specific code. */ \ + } \ +} /* H5C__UPDATE_RP_FOR_FLUSH */ + +#else /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + +#define H5C__UPDATE_RP_FOR_FLUSH(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + if ( ! ((entry_ptr)->is_pinned) ) { \ + \ + /* modified LRU specific code */ \ + \ + /* remove the entry from the LRU list, and re-insert it at the \ + * head. \ + */ \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* End modified LRU specific code. */ \ + } \ +} /* H5C__UPDATE_RP_FOR_FLUSH */ + +#endif /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + + +/*------------------------------------------------------------------------- + * + * Macro: H5C__UPDATE_RP_FOR_INSERTION + * + * Purpose: Update the replacement policy data structures for an + * insertion of the specified cache entry. + * + * At present, we only support the modified LRU policy, so + * this function deals with that case unconditionally. If + * we ever support other replacement policies, the function + * should switch on the current policy and act accordingly. + * + * Return: N/A + * + * Programmer: John Mainzer, 5/17/04 + * + * Modifications: + * + * JRM - 7/27/04 + * Converted the function H5C_update_rp_for_insertion() to the + * macro H5C__UPDATE_RP_FOR_INSERTION in an effort to squeeze + * a bit more performance out of the cache. + * + * At least for the first cut, I am leaving the comments and + * white space in the macro. If they cause dificulties with + * pre-processor, I'll have to remove them. + * + * JRM - 7/28/04 + * Split macro into two version, one supporting the clean and + * dirty LRU lists, and the other not. Yet another attempt + * at optimization. + * + * JRM - 3/10/06 + * This macro should never be called on a pinned entry. + * Inserted an assert to verify this. + * + * JRM - 8/9/06 + * Not any more. We must now allow insertion of pinned + * entries. Updated macro to support this. + * + * JRM - 3/28/07 + * Added sanity checks using the new is_read_only and + * ro_ref_count fields of struct H5C_cache_entry_t. + * + *------------------------------------------------------------------------- + */ + +#if H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS + +#define H5C__UPDATE_RP_FOR_INSERTION(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + if ( (entry_ptr)->is_pinned ) { \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->pel_head_ptr, \ + (cache_ptr)->pel_tail_ptr, \ + (cache_ptr)->pel_len, \ + (cache_ptr)->pel_size, (fail_val)) \ + \ + } else { \ + \ + /* modified LRU specific code */ \ + \ + /* insert the entry at the head of the LRU list. */ \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* insert the entry at the head of the clean or dirty LRU list as \ + * appropriate. \ + */ \ + \ + if ( entry_ptr->is_dirty ) { \ + H5C__AUX_DLL_PREPEND((entry_ptr), (cache_ptr)->dLRU_head_ptr, \ + (cache_ptr)->dLRU_tail_ptr, \ + (cache_ptr)->dLRU_list_len, \ + (cache_ptr)->dLRU_list_size, (fail_val)) \ + } else { \ + H5C__AUX_DLL_PREPEND((entry_ptr), (cache_ptr)->cLRU_head_ptr, \ + (cache_ptr)->cLRU_tail_ptr, \ + (cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, (fail_val)) \ + } \ + \ + /* End modified LRU specific code. */ \ + } \ +} + +#else /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + +#define H5C__UPDATE_RP_FOR_INSERTION(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + if ( (entry_ptr)->is_pinned ) { \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->pel_head_ptr, \ + (cache_ptr)->pel_tail_ptr, \ + (cache_ptr)->pel_len, \ + (cache_ptr)->pel_size, (fail_val)) \ + \ + } else { \ + \ + /* modified LRU specific code */ \ + \ + /* insert the entry at the head of the LRU list. */ \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* End modified LRU specific code. */ \ + } \ +} + +#endif /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + + +/*------------------------------------------------------------------------- + * + * Macro: H5C__UPDATE_RP_FOR_PROTECT + * + * Purpose: Update the replacement policy data structures for a + * protect of the specified cache entry. + * + * To do this, unlink the specified entry from any data + * structures used by the replacement policy, and add the + * entry to the protected list. + * + * At present, we only support the modified LRU policy, so + * this function deals with that case unconditionally. If + * we ever support other replacement policies, the function + * should switch on the current policy and act accordingly. + * + * Return: N/A + * + * Programmer: John Mainzer, 5/17/04 + * + * Modifications: + * + * JRM - 7/27/04 + * Converted the function H5C_update_rp_for_protect() to the + * macro H5C__UPDATE_RP_FOR_PROTECT in an effort to squeeze + * a bit more performance out of the cache. + * + * At least for the first cut, I am leaving the comments and + * white space in the macro. If they cause dificulties with + * pre-processor, I'll have to remove them. + * + * JRM - 7/28/04 + * Split macro into two version, one supporting the clean and + * dirty LRU lists, and the other not. Yet another attempt + * at optimization. + * + * JRM - 3/17/06 + * Modified macro to attempt to remove pinned entriese from + * the pinned entry list instead of from the data structures + * maintained by the replacement policy. + * + * JRM - 3/28/07 + * Added sanity checks based on the new is_read_only and + * ro_ref_count fields of struct H5C_cache_entry_t. + * + *------------------------------------------------------------------------- + */ + +#if H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS + +#define H5C__UPDATE_RP_FOR_PROTECT(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + if ( (entry_ptr)->is_pinned ) { \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->pel_head_ptr, \ + (cache_ptr)->pel_tail_ptr, \ + (cache_ptr)->pel_len, \ + (cache_ptr)->pel_size, (fail_val)) \ + HDassert( (cache_ptr)->pel_len >= 0 ); \ + \ + } else { \ + \ + /* modified LRU specific code */ \ + \ + /* remove the entry from the LRU list. */ \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* Similarly, remove the entry from the clean or dirty LRU list \ + * as appropriate. \ + */ \ + \ + if ( (entry_ptr)->is_dirty ) { \ + \ + H5C__AUX_DLL_REMOVE((entry_ptr), (cache_ptr)->dLRU_head_ptr, \ + (cache_ptr)->dLRU_tail_ptr, \ + (cache_ptr)->dLRU_list_len, \ + (cache_ptr)->dLRU_list_size, (fail_val)) \ + \ + } else { \ + \ + H5C__AUX_DLL_REMOVE((entry_ptr), (cache_ptr)->cLRU_head_ptr, \ + (cache_ptr)->cLRU_tail_ptr, \ + (cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, (fail_val)) \ + } \ + \ + /* End modified LRU specific code. */ \ + } \ + \ + /* Regardless of the replacement policy, or whether the entry is \ + * pinned, now add the entry to the protected list. \ + */ \ + \ + H5C__DLL_APPEND((entry_ptr), (cache_ptr)->pl_head_ptr, \ + (cache_ptr)->pl_tail_ptr, \ + (cache_ptr)->pl_len, \ + (cache_ptr)->pl_size, (fail_val)) \ +} /* H5C__UPDATE_RP_FOR_PROTECT */ + +#else /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + +#define H5C__UPDATE_RP_FOR_PROTECT(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + if ( (entry_ptr)->is_pinned ) { \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->pel_head_ptr, \ + (cache_ptr)->pel_tail_ptr, \ + (cache_ptr)->pel_len, \ + (cache_ptr)->pel_size, (fail_val)) \ + HDassert( (cache_ptr)->pel_len >= 0 ); \ + \ + } else { \ + \ + /* modified LRU specific code */ \ + \ + /* remove the entry from the LRU list. */ \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* End modified LRU specific code. */ \ + } \ + \ + /* Regardless of the replacement policy, or whether the entry is \ + * pinned, now add the entry to the protected list. \ + */ \ + \ + H5C__DLL_APPEND((entry_ptr), (cache_ptr)->pl_head_ptr, \ + (cache_ptr)->pl_tail_ptr, \ + (cache_ptr)->pl_len, \ + (cache_ptr)->pl_size, (fail_val)) \ +} /* H5C__UPDATE_RP_FOR_PROTECT */ + +#endif /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + + +/*------------------------------------------------------------------------- + * + * Macro: H5C__UPDATE_RP_FOR_MOVE + * + * Purpose: Update the replacement policy data structures for a + * move of the specified cache entry. + * + * At present, we only support the modified LRU policy, so + * this function deals with that case unconditionally. If + * we ever support other replacement policies, the function + * should switch on the current policy and act accordingly. + * + * Return: N/A + * + * Programmer: John Mainzer, 5/17/04 + * + *------------------------------------------------------------------------- + */ + +#if H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS + +#define H5C__UPDATE_RP_FOR_MOVE(cache_ptr, entry_ptr, was_dirty, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + if ( ! ( (entry_ptr)->is_pinned ) ) { \ + \ + /* modified LRU specific code */ \ + \ + /* remove the entry from the LRU list, and re-insert it at the head. \ + */ \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* remove the entry from either the clean or dirty LUR list as \ + * indicated by the was_dirty parameter \ + */ \ + if ( was_dirty ) { \ + \ + H5C__AUX_DLL_REMOVE((entry_ptr), \ + (cache_ptr)->dLRU_head_ptr, \ + (cache_ptr)->dLRU_tail_ptr, \ + (cache_ptr)->dLRU_list_len, \ + (cache_ptr)->dLRU_list_size, \ + (fail_val)) \ + \ + } else { \ + \ + H5C__AUX_DLL_REMOVE((entry_ptr), \ + (cache_ptr)->cLRU_head_ptr, \ + (cache_ptr)->cLRU_tail_ptr, \ + (cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, \ + (fail_val)) \ + } \ + \ + /* insert the entry at the head of either the clean or dirty \ + * LRU list as appropriate. \ + */ \ + \ + if ( (entry_ptr)->is_dirty ) { \ + \ + H5C__AUX_DLL_PREPEND((entry_ptr), \ + (cache_ptr)->dLRU_head_ptr, \ + (cache_ptr)->dLRU_tail_ptr, \ + (cache_ptr)->dLRU_list_len, \ + (cache_ptr)->dLRU_list_size, \ + (fail_val)) \ + \ + } else { \ + \ + H5C__AUX_DLL_PREPEND((entry_ptr), \ + (cache_ptr)->cLRU_head_ptr, \ + (cache_ptr)->cLRU_tail_ptr, \ + (cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, \ + (fail_val)) \ + } \ + \ + /* End modified LRU specific code. */ \ + } \ +} /* H5C__UPDATE_RP_FOR_MOVE */ + +#else /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + +#define H5C__UPDATE_RP_FOR_MOVE(cache_ptr, entry_ptr, was_dirty, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + if ( ! ( (entry_ptr)->is_pinned ) ) { \ + \ + /* modified LRU specific code */ \ + \ + /* remove the entry from the LRU list, and re-insert it at the head. \ + */ \ + \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* End modified LRU specific code. */ \ + } \ +} /* H5C__UPDATE_RP_FOR_MOVE */ + +#endif /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + + +/*------------------------------------------------------------------------- + * + * Macro: H5C__UPDATE_RP_FOR_SIZE_CHANGE + * + * Purpose: Update the replacement policy data structures for a + * size change of the specified cache entry. + * + * To do this, determine if the entry is pinned. If it is, + * update the size of the pinned entry list. + * + * If it isn't pinned, the entry must handled by the + * replacement policy. Update the appropriate replacement + * policy data structures. + * + * At present, we only support the modified LRU policy, so + * this function deals with that case unconditionally. If + * we ever support other replacement policies, the function + * should switch on the current policy and act accordingly. + * + * Return: N/A + * + * Programmer: John Mainzer, 8/23/06 + * + * Modifications: + * + * JRM -- 3/28/07 + * Added sanity checks based on the new is_read_only and + * ro_ref_count fields of struct H5C_cache_entry_t. + * + *------------------------------------------------------------------------- + */ + +#if H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS + +#define H5C__UPDATE_RP_FOR_SIZE_CHANGE(cache_ptr, entry_ptr, new_size) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + HDassert( new_size > 0 ); \ + \ + if ( (entry_ptr)->is_pinned ) { \ + \ + H5C__DLL_UPDATE_FOR_SIZE_CHANGE((cache_ptr)->pel_len, \ + (cache_ptr)->pel_size, \ + (entry_ptr)->size, \ + (new_size)); \ + \ + } else { \ + \ + /* modified LRU specific code */ \ + \ + /* Update the size of the LRU list */ \ + \ + H5C__DLL_UPDATE_FOR_SIZE_CHANGE((cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, \ + (entry_ptr)->size, \ + (new_size)); \ + \ + /* Similarly, update the size of the clean or dirty LRU list as \ + * appropriate. At present, the entry must be clean, but that \ + * could change. \ + */ \ + \ + if ( (entry_ptr)->is_dirty ) { \ + \ + H5C__DLL_UPDATE_FOR_SIZE_CHANGE((cache_ptr)->dLRU_list_len, \ + (cache_ptr)->dLRU_list_size, \ + (entry_ptr)->size, \ + (new_size)); \ + \ + } else { \ + \ + H5C__DLL_UPDATE_FOR_SIZE_CHANGE((cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, \ + (entry_ptr)->size, \ + (new_size)); \ + } \ + \ + /* End modified LRU specific code. */ \ + } \ + \ +} /* H5C__UPDATE_RP_FOR_SIZE_CHANGE */ + +#else /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + +#define H5C__UPDATE_RP_FOR_SIZE_CHANGE(cache_ptr, entry_ptr, new_size) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->size > 0 ); \ + HDassert( new_size > 0 ); \ + \ + if ( (entry_ptr)->is_pinned ) { \ + \ + H5C__DLL_UPDATE_FOR_SIZE_CHANGE((cache_ptr)->pel_len, \ + (cache_ptr)->pel_size, \ + (entry_ptr)->size, \ + (new_size)); \ + \ + } else { \ + \ + /* modified LRU specific code */ \ + \ + /* Update the size of the LRU list */ \ + \ + H5C__DLL_UPDATE_FOR_SIZE_CHANGE((cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, \ + (entry_ptr)->size, \ + (new_size)); \ + \ + /* End modified LRU specific code. */ \ + } \ + \ +} /* H5C__UPDATE_RP_FOR_SIZE_CHANGE */ + +#endif /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + + +/*------------------------------------------------------------------------- + * + * Macro: H5C__UPDATE_RP_FOR_UNPIN + * + * Purpose: Update the replacement policy data structures for an + * unpin of the specified cache entry. + * + * To do this, unlink the specified entry from the protected + * entry list, and re-insert it in the data structures used + * by the current replacement policy. + * + * At present, we only support the modified LRU policy, so + * this function deals with that case unconditionally. If + * we ever support other replacement policies, the macro + * should switch on the current policy and act accordingly. + * + * Return: N/A + * + * Programmer: John Mainzer, 3/22/06 + * + * Modifications: + * + * JRM -- 3/28/07 + * Added sanity checks based on the new is_read_only and + * ro_ref_count fields of struct H5C_cache_entry_t. + * + *------------------------------------------------------------------------- + */ + +#if H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS + +#define H5C__UPDATE_RP_FOR_UNPIN(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->is_pinned); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + /* Regardless of the replacement policy, remove the entry from the \ + * pinned entry list. \ + */ \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->pel_head_ptr, \ + (cache_ptr)->pel_tail_ptr, (cache_ptr)->pel_len, \ + (cache_ptr)->pel_size, (fail_val)) \ + HDassert( (cache_ptr)->pel_len >= 0 ); \ + \ + /* modified LRU specific code */ \ + \ + /* insert the entry at the head of the LRU list. */ \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* Similarly, insert the entry at the head of either the clean \ + * or dirty LRU list as appropriate. \ + */ \ + \ + if ( (entry_ptr)->is_dirty ) { \ + \ + H5C__AUX_DLL_PREPEND((entry_ptr), \ + (cache_ptr)->dLRU_head_ptr, \ + (cache_ptr)->dLRU_tail_ptr, \ + (cache_ptr)->dLRU_list_len, \ + (cache_ptr)->dLRU_list_size, \ + (fail_val)) \ + \ + } else { \ + \ + H5C__AUX_DLL_PREPEND((entry_ptr), \ + (cache_ptr)->cLRU_head_ptr, \ + (cache_ptr)->cLRU_tail_ptr, \ + (cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, \ + (fail_val)) \ + } \ + \ + /* End modified LRU specific code. */ \ + \ +} /* H5C__UPDATE_RP_FOR_UNPIN */ + +#else /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + +#define H5C__UPDATE_RP_FOR_UNPIN(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( !((entry_ptr)->is_protected) ); \ + HDassert( !((entry_ptr)->is_read_only) ); \ + HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \ + HDassert( (entry_ptr)->is_pinned); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + /* Regardless of the replacement policy, remove the entry from the \ + * pinned entry list. \ + */ \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->pel_head_ptr, \ + (cache_ptr)->pel_tail_ptr, (cache_ptr)->pel_len, \ + (cache_ptr)->pel_size, (fail_val)) \ + HDassert( (cache_ptr)->pel_len >= 0 ); \ + \ + /* modified LRU specific code */ \ + \ + /* insert the entry at the head of the LRU list. */ \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* End modified LRU specific code. */ \ + \ +} /* H5C__UPDATE_RP_FOR_UNPIN */ + +#endif /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + + +/*------------------------------------------------------------------------- + * + * Macro: H5C__UPDATE_RP_FOR_UNPROTECT + * + * Purpose: Update the replacement policy data structures for an + * unprotect of the specified cache entry. + * + * To do this, unlink the specified entry from the protected + * list, and re-insert it in the data structures used by the + * current replacement policy. + * + * At present, we only support the modified LRU policy, so + * this function deals with that case unconditionally. If + * we ever support other replacement policies, the function + * should switch on the current policy and act accordingly. + * + * Return: N/A + * + * Programmer: John Mainzer, 5/19/04 + * + * Modifications: + * + * JRM - 7/27/04 + * Converted the function H5C_update_rp_for_unprotect() to + * the macro H5C__UPDATE_RP_FOR_UNPROTECT in an effort to + * squeeze a bit more performance out of the cache. + * + * At least for the first cut, I am leaving the comments and + * white space in the macro. If they cause dificulties with + * pre-processor, I'll have to remove them. + * + * JRM - 7/28/04 + * Split macro into two version, one supporting the clean and + * dirty LRU lists, and the other not. Yet another attempt + * at optimization. + * + * JRM - 3/17/06 + * Modified macro to put pinned entries on the pinned entry + * list instead of inserting them in the data structures + * maintained by the replacement policy. + * + *------------------------------------------------------------------------- + */ + +#if H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS + +#define H5C__UPDATE_RP_FOR_UNPROTECT(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( (entry_ptr)->is_protected); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + /* Regardless of the replacement policy, remove the entry from the \ + * protected list. \ + */ \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->pl_head_ptr, \ + (cache_ptr)->pl_tail_ptr, (cache_ptr)->pl_len, \ + (cache_ptr)->pl_size, (fail_val)) \ + \ + if ( (entry_ptr)->is_pinned ) { \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->pel_head_ptr, \ + (cache_ptr)->pel_tail_ptr, \ + (cache_ptr)->pel_len, \ + (cache_ptr)->pel_size, (fail_val)) \ + \ + } else { \ + \ + /* modified LRU specific code */ \ + \ + /* insert the entry at the head of the LRU list. */ \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* Similarly, insert the entry at the head of either the clean or \ + * dirty LRU list as appropriate. \ + */ \ + \ + if ( (entry_ptr)->is_dirty ) { \ + \ + H5C__AUX_DLL_PREPEND((entry_ptr), (cache_ptr)->dLRU_head_ptr, \ + (cache_ptr)->dLRU_tail_ptr, \ + (cache_ptr)->dLRU_list_len, \ + (cache_ptr)->dLRU_list_size, (fail_val)) \ + \ + } else { \ + \ + H5C__AUX_DLL_PREPEND((entry_ptr), (cache_ptr)->cLRU_head_ptr, \ + (cache_ptr)->cLRU_tail_ptr, \ + (cache_ptr)->cLRU_list_len, \ + (cache_ptr)->cLRU_list_size, (fail_val)) \ + } \ + \ + /* End modified LRU specific code. */ \ + } \ + \ +} /* H5C__UPDATE_RP_FOR_UNPROTECT */ + +#else /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + +#define H5C__UPDATE_RP_FOR_UNPROTECT(cache_ptr, entry_ptr, fail_val) \ +{ \ + HDassert( (cache_ptr) ); \ + HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \ + HDassert( (entry_ptr) ); \ + HDassert( (entry_ptr)->is_protected); \ + HDassert( (entry_ptr)->size > 0 ); \ + \ + /* Regardless of the replacement policy, remove the entry from the \ + * protected list. \ + */ \ + H5C__DLL_REMOVE((entry_ptr), (cache_ptr)->pl_head_ptr, \ + (cache_ptr)->pl_tail_ptr, (cache_ptr)->pl_len, \ + (cache_ptr)->pl_size, (fail_val)) \ + \ + if ( (entry_ptr)->is_pinned ) { \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->pel_head_ptr, \ + (cache_ptr)->pel_tail_ptr, \ + (cache_ptr)->pel_len, \ + (cache_ptr)->pel_size, (fail_val)) \ + \ + } else { \ + \ + /* modified LRU specific code */ \ + \ + /* insert the entry at the head of the LRU list. */ \ + \ + H5C__DLL_PREPEND((entry_ptr), (cache_ptr)->LRU_head_ptr, \ + (cache_ptr)->LRU_tail_ptr, \ + (cache_ptr)->LRU_list_len, \ + (cache_ptr)->LRU_list_size, (fail_val)) \ + \ + /* End modified LRU specific code. */ \ + } \ +} /* H5C__UPDATE_RP_FOR_UNPROTECT */ + +#endif /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ + + +#endif /* _H5Cpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Cpp.h b/Resources/windows-libs/HDF5/include/H5Cpp.h new file mode 100644 index 0000000000000000000000000000000000000000..044108b51452346cb6d5c8fd6c283672e1a06d80 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Cpp.h @@ -0,0 +1,59 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5Cpp_H +#define __H5Cpp_H + +#include "H5Include.h" +#include "H5Exception.h" +#include "H5IdComponent.h" +#include "H5DataSpace.h" +#include "H5PropList.h" +#include "H5Location.h" +#include "H5Object.h" +#include "H5AbstractDs.h" +#include "H5Attribute.h" +#include "H5DcreatProp.h" +#include "H5CommonFG.h" +#include "H5DataType.h" +#include "H5DxferProp.h" +#include "H5FaccProp.h" +#include "H5FcreatProp.h" +#include "H5AtomType.h" +#include "H5PredType.h" +#include "H5EnumType.h" +#include "H5IntType.h" +#include "H5FloatType.h" +#include "H5StrType.h" +#include "H5CompType.h" +#include "H5ArrayType.h" +#include "H5VarLenType.h" +#include "H5DataSet.h" +#include "H5Group.h" +#include "H5File.h" +#include "H5Library.h" + +/* Some C++ compilers do not have offsetof macro; define to bypass the problem + - BMR- -EIP- 2007/08/01 +*/ +#ifndef H5_CXX_HAVE_OFFSETOF +#ifdef HOFFSET + #undef HOFFSET +#endif +#define HOFFSET(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#endif + +#endif // __H5Cpp_H diff --git a/Resources/windows-libs/HDF5/include/H5CppDoc.h b/Resources/windows-libs/HDF5/include/H5CppDoc.h new file mode 100644 index 0000000000000000000000000000000000000000..8ab253106ca1192c46ec07ff054fd04b21e98d60 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5CppDoc.h @@ -0,0 +1,91 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5CppDoc_H +#define __H5CppDoc_H + +//------------------------------------------------------------------------- +// The following section will be used to generate the 'Mainpage' +// and the 'Examples' for the RM. +// ------------------------------------------------------------------------ + +/*! \mainpage notitle + * + * \section intro_sec Introduction + * + * The C++ API provides C++ wrappers for the HDF5 C library. + * It is assumed that the user has knowledge of the HDF5 file format + * and its components. If you are not familiar with HDF5 file format, + * and would like to find out more, please refer to the HDF5 documentation + * at http://www.hdfgroup.org/HDF5/doc/index.html + * + * Because the HDF5 library maps very well to + * the object oriented design approach, classes in the C++ API can + * closely represent the interfaces of the HDF5 APIs, as followed: + * + * \verbatim + HDF5 C APIs C++ Classes + ----------- ----------- + Attribute Interface (H5A) Attribute + Datasets Interface (H5D) DataSet + Error Interface (H5E) Exception + File Interface (H5F) H5File + Group Interface (H5G) Group + Identifier Interface (H5I) IdComponent + Property List Interface (H5P) PropList and subclasses + Dataspace Interface (H5S) DataSpace + Datatype Interface (H5T) DataType and subclasses + \endverbatim + * \section install_sec Installation + * + * Please refer to the file release_docs/INSTALL_Windows.txt + * under the top directory for information about installing, building, + * and testing the C++ API. + * + * + */ + +/// This example shows how to create datasets. +///\par +///\example create.cpp + +///\par +/// This example shows how to write datasets. +///\example writedata.cpp + +///\par +/// This example shows how to read datasets. +///\example readdata.cpp + +///\par +/// This example shows how to create a compound datatype, +/// write an array which has the compound datatype to the file, +/// and read back fields' subsets. +///\example compound.cpp + +///\par +/// This example shows how to work with extendible datasets. +///\example extend_ds.cpp + +///\par +/// This example shows how to read data from a chunked dataset. +///\example chunks.cpp + +///\par +/// This example shows how to work with groups. +///\example h5group.cpp + +#endif // __H5CppDoc_H diff --git a/Resources/windows-libs/HDF5/include/H5Cpublic.h b/Resources/windows-libs/HDF5/include/H5Cpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..39ebbe3760a183d8fdbb3f9d260fe8af851cf64a --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Cpublic.h @@ -0,0 +1,61 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5Cpublic.h + * June 4, 2005 + * John Mainzer + * + * Purpose: Public include file for cache functions. + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifndef _H5Cpublic_H +#define _H5Cpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum H5C_cache_incr_mode +{ + H5C_incr__off, + H5C_incr__threshold +}; + +enum H5C_cache_flash_incr_mode +{ + H5C_flash_incr__off, + H5C_flash_incr__add_space +}; + +enum H5C_cache_decr_mode +{ + H5C_decr__off, + H5C_decr__threshold, + H5C_decr__age_out, + H5C_decr__age_out_with_threshold +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Resources/windows-libs/HDF5/include/H5DOpublic.h b/Resources/windows-libs/HDF5/include/H5DOpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..774709eb87ab1bcbc001f92d5f61a5d797d9b781 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5DOpublic.h @@ -0,0 +1,42 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef _H5DOpublic_H +#define _H5DOpublic_H + +#ifdef __cplusplus +extern "C" { +#endif + +/*------------------------------------------------------------------------- + * + * Direct chunk write function + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL herr_t H5DOwrite_chunk(hid_t dset_id, + hid_t dxpl_id, + uint32_t filters, + const hsize_t *offset, + size_t data_size, + const void *buf); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Resources/windows-libs/HDF5/include/H5DSpublic.h b/Resources/windows-libs/HDF5/include/H5DSpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..85923f8cc2b17a06bafdbc1534a08c96c56c2493 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5DSpublic.h @@ -0,0 +1,79 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef _H5DSpublic_H +#define _H5DSpublic_H + + + +#define DIMENSION_SCALE_CLASS "DIMENSION_SCALE" +#define DIMENSION_LIST "DIMENSION_LIST" +#define REFERENCE_LIST "REFERENCE_LIST" +#define DIMENSION_LABELS "DIMENSION_LABELS" + + +typedef herr_t (*H5DS_iterate_t)(hid_t dset, unsigned dim, hid_t scale, void *visitor_data); + + +#ifdef __cplusplus +extern "C" { +#endif + +H5_HLDLL herr_t H5DSattach_scale( hid_t did, + hid_t dsid, + unsigned int idx); + +H5_HLDLL herr_t H5DSdetach_scale( hid_t did, + hid_t dsid, + unsigned int idx); + +H5_HLDLL herr_t H5DSset_scale( hid_t dsid, + const char *dimname); + +H5_HLDLL int H5DSget_num_scales( hid_t did, + unsigned int dim); + +H5_HLDLL herr_t H5DSset_label( hid_t did, + unsigned int idx, + const char *label); + +H5_HLDLL ssize_t H5DSget_label( hid_t did, + unsigned int idx, + char *label, + size_t size); + +H5_HLDLL ssize_t H5DSget_scale_name( hid_t did, + char *name, + size_t size); + +H5_HLDLL htri_t H5DSis_scale( hid_t did); + +H5_HLDLL herr_t H5DSiterate_scales( hid_t did, + unsigned int dim, + int *idx, + H5DS_iterate_t visitor, + void *visitor_data); + +H5_HLDLL htri_t H5DSis_attached( hid_t did, + hid_t dsid, + unsigned int idx); + + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Resources/windows-libs/HDF5/include/H5DataSet.h b/Resources/windows-libs/HDF5/include/H5DataSet.h new file mode 100644 index 0000000000000000000000000000000000000000..e264751ecf64d7f2ba81244e658ff5d3987ab058 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5DataSet.h @@ -0,0 +1,132 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5DataSet_H +#define __H5DataSet_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/*! \class DataSet + \brief Class DataSet operates on HDF5 datasets. + + An datasets has many characteristics similar to an attribute, thus both + Attribute and DataSet are derivatives of AbstractDs. DataSet also + inherits from H5Object because a dataset is an HDF5 object. +*/ +class H5_DLLCPP DataSet : public H5Object, public AbstractDs { + public: + // Close this dataset. + virtual void close(); + + // Extends the dataset with unlimited dimension. + void extend( const hsize_t* size ) const; + + // Fills a selection in memory with a value + void fillMemBuf(const void *fill, const DataType& fill_type, void *buf, const DataType& buf_type, const DataSpace& space) const; + void fillMemBuf(const void *fill, DataType& fill_type, void *buf, DataType& buf_type, DataSpace& space); // kept for backward compatibility + + // Fills a selection in memory with zero + void fillMemBuf(void *buf, const DataType& buf_type, const DataSpace& space) const; + void fillMemBuf(void *buf, DataType& buf_type, DataSpace& space); // kept for backward compatibility + + // Gets the creation property list of this dataset. + DSetCreatPropList getCreatePlist() const; + + // Returns the address of this dataset in the file. + haddr_t getOffset() const; + + // Gets the dataspace of this dataset. + virtual DataSpace getSpace() const; + + // Determines whether space has been allocated for a dataset. + void getSpaceStatus(H5D_space_status_t& status) const; + + // Returns the amount of storage size required for this dataset. + virtual hsize_t getStorageSize() const; + + // Returns the in memory size of this attribute's data. + virtual size_t getInMemDataSize() const; + + // Returns the number of bytes required to store VL data. + hsize_t getVlenBufSize(const DataType& type, const DataSpace& space ) const; + hsize_t getVlenBufSize(DataType& type, DataSpace& space) const; // kept for backward compatibility + + // Reclaims VL datatype memory buffers. + static void vlenReclaim(const DataType& type, const DataSpace& space, const DSetMemXferPropList& xfer_plist, void* buf ); + static void vlenReclaim(void *buf, const DataType& type, const DataSpace& space = DataSpace::ALL, const DSetMemXferPropList& xfer_plist = DSetMemXferPropList::DEFAULT); + + // Reads the data of this dataset and stores it in the provided buffer. + // The memory and file dataspaces and the transferring property list + // can be defaults. + void read( void* buf, const DataType& mem_type, const DataSpace& mem_space = DataSpace::ALL, const DataSpace& file_space = DataSpace::ALL, const DSetMemXferPropList& xfer_plist = DSetMemXferPropList::DEFAULT ) const; + void read( H5std_string& buf, const DataType& mem_type, const DataSpace& mem_space = DataSpace::ALL, const DataSpace& file_space = DataSpace::ALL, const DSetMemXferPropList& xfer_plist = DSetMemXferPropList::DEFAULT ) const; + + // Writes the buffered data to this dataset. + // The memory and file dataspaces and the transferring property list + // can be defaults. + void write( const void* buf, const DataType& mem_type, const DataSpace& mem_space = DataSpace::ALL, const DataSpace& file_space = DataSpace::ALL, const DSetMemXferPropList& xfer_plist = DSetMemXferPropList::DEFAULT ) const; + void write( const H5std_string& buf, const DataType& mem_type, const DataSpace& mem_space = DataSpace::ALL, const DataSpace& file_space = DataSpace::ALL, const DSetMemXferPropList& xfer_plist = DSetMemXferPropList::DEFAULT ) const; + + // Iterates the selected elements in the specified dataspace - not implemented in C++ style yet + int iterateElems( void* buf, const DataType& type, const DataSpace& space, H5D_operator_t op, void* op_data = NULL ); + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("DataSet"); } + + // Creates a dataset by way of dereference. + DataSet(const H5Location& loc, const void* ref, H5R_type_t ref_type = H5R_OBJECT); + DataSet(const Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT); + + // Default constructor. + DataSet(); + + // Copy constructor. + DataSet( const DataSet& original ); + + // Creates a copy of an existing DataSet using its id. + DataSet(const hid_t existing_id); + + // Gets the dataset id. + virtual hid_t getId() const; + + // Destructor: properly terminates access to this dataset. + virtual ~DataSet(); + + private: + hid_t id; // HDF5 dataset id + + // This function contains the common code that is used by + // getTypeClass and various API functions getXxxType + // defined in AbstractDs for generic datatype and specific + // sub-types + virtual hid_t p_get_type() const; + + // Reads variable or fixed len strings from this dataset. + void p_read_fixed_len(const hid_t mem_type_id, const hid_t mem_space_id, const hid_t file_space_id, const hid_t xfer_plist_id, H5std_string& strg) const; + void p_read_variable_len(const hid_t mem_type_id, const hid_t mem_space_id, const hid_t file_space_id, const hid_t xfer_plist_id, H5std_string& strg) const; + + protected: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Sets the dataset id. + virtual void p_setId(const hid_t new_id); +#endif // DOXYGEN_SHOULD_SKIP_THIS +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5DataSet_H diff --git a/Resources/windows-libs/HDF5/include/H5DataSpace.h b/Resources/windows-libs/HDF5/include/H5DataSpace.h new file mode 100644 index 0000000000000000000000000000000000000000..75d4ff899b5c73df62b86f83e070860874b2526a --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5DataSpace.h @@ -0,0 +1,137 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5DataSpace_H +#define __H5DataSpace_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +//! Class DataSpace operates on HDF5 dataspaces. +class H5_DLLCPP DataSpace : public IdComponent { + public: + // Default DataSpace objects + static const DataSpace ALL; + + // Creates a dataspace object given the space type + DataSpace(H5S_class_t type = H5S_SCALAR); + + // Creates a simple dataspace + DataSpace(int rank, const hsize_t * dims, const hsize_t * maxdims = NULL); + + // Assignment operator + DataSpace& operator=( const DataSpace& rhs ); + + // Closes this dataspace. + virtual void close(); + + // Makes copy of an existing dataspace. + void copy(const DataSpace& like_space); + + // Copies the extent of this dataspace. + void extentCopy(const DataSpace& dest_space) const; + // Kept for backward compatibility only. + void extentCopy(DataSpace& dest_space) const; + + // Gets the bounding box containing the current selection. + void getSelectBounds( hsize_t* start, hsize_t* end ) const; + + // Gets the number of element points in the current selection. + hssize_t getSelectElemNpoints() const; + + // Retrieves the list of element points currently selected. + void getSelectElemPointlist( hsize_t startpoint, hsize_t numpoints, hsize_t *buf ) const; + + // Gets the list of hyperslab blocks currently selected. + void getSelectHyperBlocklist( hsize_t startblock, hsize_t numblocks, hsize_t *buf ) const; + + // Get number of hyperslab blocks. + hssize_t getSelectHyperNblocks() const; + + // Gets the number of elements in this dataspace selection. + hssize_t getSelectNpoints() const; + + // Retrieves dataspace dimension size and maximum size. + int getSimpleExtentDims( hsize_t *dims, hsize_t *maxdims = NULL ) const; + + // Gets the dimensionality of this dataspace. + int getSimpleExtentNdims() const; + + // Gets the number of elements in this dataspace. + // 12/05/00 - changed return type to hssize_t from hsize_t - C API + hssize_t getSimpleExtentNpoints() const; + + // Gets the current class of this dataspace. + H5S_class_t getSimpleExtentType() const; + + // Determines if this dataspace is a simple one. + bool isSimple() const; + + // Sets the offset of this simple dataspace. + void offsetSimple( const hssize_t* offset ) const; + + // Selects the entire dataspace. + void selectAll() const; + + // Selects array elements to be included in the selection for + // this dataspace. + void selectElements( H5S_seloper_t op, const size_t num_elements, const hsize_t *coord) const; + + // Selects a hyperslab region to add to the current selected region. + void selectHyperslab( H5S_seloper_t op, const hsize_t *count, const hsize_t *start, const hsize_t *stride = NULL, const hsize_t *block = NULL ) const; + + // Resets the selection region to include no elements. + void selectNone() const; + + // Verifies that the selection is within the extent of the dataspace. + bool selectValid() const; + + // Removes the extent from this dataspace. + void setExtentNone() const; + + // Sets or resets the size of this dataspace. + void setExtentSimple( int rank, const hsize_t *current_size, const hsize_t *maximum_size = NULL ) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("DataSpace"); } + + // Creates a DataSpace object using an existing dataspace id. + DataSpace(const hid_t space_id); + + // Copy constructor: makes a copy of the original DataSpace object. + DataSpace(const DataSpace& original); + + // Gets the dataspace id. + virtual hid_t getId() const; + + // Destructor: properly terminates access to this dataspace. + virtual ~DataSpace(); + + private: + hid_t id; // HDF5 dataspace id + + protected: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Sets the dataspace id. + virtual void p_setId(const hid_t new_id); +#endif // DOXYGEN_SHOULD_SKIP_THIS + +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5DataSpace_H diff --git a/Resources/windows-libs/HDF5/include/H5DataType.h b/Resources/windows-libs/HDF5/include/H5DataType.h new file mode 100644 index 0000000000000000000000000000000000000000..dca0c871ebee32a9c189aa7399bc2ad7bbf16833 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5DataType.h @@ -0,0 +1,144 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +// Class DataType inherits from H5Object and has several subclasses for +// specific HDF5 data types. + +#ifndef __H5DataType_H +#define __H5DataType_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/*! \class DataType + \brief Class DataType provides generic operations on HDF5 datatypes. + + DataType inherits from H5Object because a named datatype is an HDF5 + object and is a base class of ArrayType, AtomType, CompType, EnumType, + and VarLenType. +*/ +class H5_DLLCPP DataType : public H5Object { + public: + // Creates a datatype given its class and size + DataType( const H5T_class_t type_class, size_t size ); + + // Copy constructor: makes a copy of the original object + DataType( const DataType& original ); + + // Creates a datatype by way of dereference. + DataType(const H5Location& loc, const void* ref, H5R_type_t ref_type = H5R_OBJECT); + DataType(const Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT); + + // Closes this datatype. + virtual void close(); + + // Copies an existing datatype to this datatype object. + void copy(const DataType& like_type); + + // Copies the datatype of dset to this datatype object. + void copy(const DataSet& dset); + + // Returns the datatype class identifier. + H5T_class_t getClass() const; + + // Commits a transient datatype to a file; this datatype becomes + // a named datatype which can be accessed from the location. + void commit(const H5Location& loc, const char* name); + void commit(const H5Location& loc, const H5std_string& name); + // These two overloaded functions are kept for backward compatibility + // only; they missed the const. + void commit(H5Location& loc, const char* name); + void commit(H5Location& loc, const H5std_string& name); + + // Determines whether this datatype is a named datatype or + // a transient datatype. + bool committed() const; + + // Finds a conversion function that can handle the conversion + // this datatype to the given datatype, dest. + H5T_conv_t find( const DataType& dest, H5T_cdata_t **pcdata ) const; + + // Converts data from between specified datatypes. + void convert( const DataType& dest, size_t nelmts, void *buf, void *background, const PropList& plist=PropList::DEFAULT) const; + + // Assignment operator + DataType& operator=( const DataType& rhs ); + + // Determines whether two datatypes are the same. + bool operator==(const DataType& compared_type ) const; + + // Locks a datatype. + void lock() const; + + // Returns the size of a datatype. + size_t getSize() const; + + // Returns the base datatype from which a datatype is derived. + // Note: not quite right for specific types yet??? + DataType getSuper() const; + + // Registers a conversion function. + void registerFunc(H5T_pers_t pers, const char* name, const DataType& dest, H5T_conv_t func ) const; + void registerFunc(H5T_pers_t pers, const H5std_string& name, const DataType& dest, H5T_conv_t func ) const; + + // Removes a conversion function from all conversion paths. + void unregister( H5T_pers_t pers, const char* name, const DataType& dest, H5T_conv_t func ) const; + void unregister( H5T_pers_t pers, const H5std_string& name, const DataType& dest, H5T_conv_t func ) const; + + // Tags an opaque datatype. + void setTag( const char* tag ) const; + void setTag( const H5std_string& tag ) const; + + // Gets the tag associated with an opaque datatype. + H5std_string getTag() const; + + // Checks whether this datatype contains (or is) a certain type class. + bool detectClass(H5T_class_t cls) const; + + // Checks whether this datatype is a variable-length string. + bool isVariableStr() const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("DataType"); } + + // Creates a copy of an existing DataType using its id + DataType( const hid_t type_id ); + + // Default constructor + DataType(); + + // Gets the datatype id. + virtual hid_t getId() const; + + // Destructor: properly terminates access to this datatype. + virtual ~DataType(); + + protected: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + hid_t id; // HDF5 datatype id + + // Sets the datatype id. + virtual void p_setId(const hid_t new_id); +#endif // DOXYGEN_SHOULD_SKIP_THIS + + private: + void p_commit(hid_t loc_id, const char* name); +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5DataType_H diff --git a/Resources/windows-libs/HDF5/include/H5DcreatProp.h b/Resources/windows-libs/HDF5/include/H5DcreatProp.h new file mode 100644 index 0000000000000000000000000000000000000000..c643ace5cfc1d3ccd12cf3ca73eda591241fc09e --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5DcreatProp.h @@ -0,0 +1,133 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +// Class DSetCreatPropList represents the HDF5 dataset creation property list +// and inherits from PropList. + +#ifndef __H5DSCreatPropList_H +#define __H5DSCreatPropList_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/*! \class DSetCreatPropList + \brief Class DSetCreatPropList represents the dataset creation property + list. +*/ +class H5_DLLCPP DSetCreatPropList : public PropList { + public: + // Default dataset creation property list. + static const DSetCreatPropList DEFAULT; + + // Creates a dataset creation property list. + DSetCreatPropList(); + + // Queries whether all the filters set in this property list are + // available currently. + bool allFiltersAvail(); + + // Get space allocation time for this property. + H5D_alloc_time_t getAllocTime(); + + // Set space allocation time for dataset during creation. + void setAllocTime(H5D_alloc_time_t alloc_time); + + // Retrieves the size of the chunks used to store a chunked layout dataset. + int getChunk( int max_ndims, hsize_t* dim ) const; + + // Sets the size of the chunks used to store a chunked layout dataset. + void setChunk( int ndims, const hsize_t* dim ) const; + + // Returns information about an external file. + void getExternal( unsigned idx, size_t name_size, char* name, off_t& offset, hsize_t& size ) const; + + // Returns the number of external files for a dataset. + int getExternalCount() const; + + // Gets fill value writing time. + H5D_fill_time_t getFillTime(); + + // Sets fill value writing time for dataset. + void setFillTime(H5D_fill_time_t fill_time); + + // Retrieves a dataset fill value. + void getFillValue( const DataType& fvalue_type, void* value ) const; + + // Sets a dataset fill value. + void setFillValue( const DataType& fvalue_type, const void* value ) const; + + // Returns information about a filter in a pipeline. + H5Z_filter_t getFilter(int filter_number, unsigned int& flags, size_t& cd_nelmts, unsigned int* cd_values, size_t namelen, char name[], unsigned int &filter_config) const; + + // Returns information about a filter in a pipeline given the filter id. + void getFilterById(H5Z_filter_t filter_id, unsigned int &flags, size_t &cd_nelmts, unsigned int* cd_values, size_t namelen, char name[], unsigned int &filter_config) const; + + // Gets the layout of the raw data storage of the data that uses this + // property list. + H5D_layout_t getLayout() const; + + // Sets the type of storage used to store the raw data for the + // dataset that uses this property list. + void setLayout(H5D_layout_t layout) const; + + // Returns the number of filters in the pipeline. + int getNfilters() const; + + // Checks if fill value has been defined for this property. + H5D_fill_value_t isFillValueDefined(); + + // Modifies the specified filter. + void modifyFilter( H5Z_filter_t filter_id, unsigned int flags, size_t cd_nelmts, const unsigned int cd_values[] ) const; + + // Remove one or all filters from the filter pipeline. + void removeFilter( H5Z_filter_t filter_id) const; + + // Sets compression method and compression level. + void setDeflate( int level ) const; + + // Adds an external file to the list of external files. + void setExternal( const char* name, off_t offset, hsize_t size ) const; + + // Adds a filter to the filter pipeline. + void setFilter( H5Z_filter_t filter, unsigned int flags = 0, size_t cd_nelmts = 0, const unsigned int cd_values[] = NULL) const; + + // Sets Fletcher32 checksum of EDC for this property list. + void setFletcher32() const; + + // Sets method of the shuffle filter. + void setShuffle() const; + + // Sets SZIP compression method. + void setSzip(unsigned int options_mask, unsigned int pixels_per_block) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("DSetCreatPropList"); } + + // Copy constructor: creates a copy of a DSetCreatPropList object. + DSetCreatPropList(const DSetCreatPropList& orig); + + // Creates a copy of an existing dataset creation property list + // using the property list id. + DSetCreatPropList(const hid_t plist_id); + + // Noop destructor. + virtual ~DSetCreatPropList(); +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5DSCreatPropList_H diff --git a/Resources/windows-libs/HDF5/include/H5Dpkg.h b/Resources/windows-libs/HDF5/include/H5Dpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..5a785a3ba282872dc42b228cb08e80a1480c906c --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Dpkg.h @@ -0,0 +1,718 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Monday, April 14, 2003 + * + * Purpose: This file contains declarations which are visible only within + * the H5D package. Source files outside the H5D package should + * include H5Dprivate.h instead. + */ +#ifndef H5D_PACKAGE +#error "Do not include this file outside the H5D package!" +#endif + +#ifndef _H5Dpkg_H +#define _H5Dpkg_H + +/* Get package's private header */ +#include "H5Dprivate.h" + +/* Other private headers needed by this file */ +#include "H5ACprivate.h" /* Metadata cache */ +#include "H5Gprivate.h" /* Groups */ +#include "H5SLprivate.h" /* Skip lists */ +#include "H5Tprivate.h" /* Datatypes */ + +/**************************/ +/* Package Private Macros */ +/**************************/ + +/* Set the minimum object header size to create objects with */ +#define H5D_MINHDR_SIZE 256 + +/* [Simple] Macro to construct a H5D_io_info_t from it's components */ +#define H5D_BUILD_IO_INFO_WRT(io_info, ds, dxpl_c, dxpl_i, str, buf) \ + (io_info)->dset = ds; \ + (io_info)->dxpl_cache = dxpl_c; \ + (io_info)->dxpl_id = dxpl_i; \ + (io_info)->store = str; \ + (io_info)->op_type = H5D_IO_OP_WRITE; \ + (io_info)->u.wbuf = buf +#define H5D_BUILD_IO_INFO_RD(io_info, ds, dxpl_c, dxpl_i, str, buf) \ + (io_info)->dset = ds; \ + (io_info)->dxpl_cache = dxpl_c; \ + (io_info)->dxpl_id = dxpl_i; \ + (io_info)->store = str; \ + (io_info)->op_type = H5D_IO_OP_READ; \ + (io_info)->u.rbuf = buf + +#define H5D_CHUNK_HASH(D, ADDR) H5F_addr_hash(ADDR, (D)->cache.chunk.nslots) + +/* Flags for marking aspects of a dataset dirty */ +#define H5D_MARK_SPACE 0x01 +#define H5D_MARK_LAYOUT 0x02 + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +/* Typedef for datatype information for raw data I/O operation */ +typedef struct H5D_type_info_t { + /* Initial values */ + const H5T_t *mem_type; /* Pointer to memory datatype */ + const H5T_t *dset_type; /* Pointer to dataset datatype */ + H5T_path_t *tpath; /* Datatype conversion path */ + hid_t src_type_id; /* Source datatype ID */ + hid_t dst_type_id; /* Destination datatype ID */ + + /* Computed/derived values */ + size_t src_type_size; /* Size of source type */ + size_t dst_type_size; /* Size of destination type*/ + size_t max_type_size; /* Size of largest source/destination type */ + hbool_t is_conv_noop; /* Whether the type conversion is a NOOP */ + hbool_t is_xform_noop; /* Whether the data transform is a NOOP */ + const H5T_subset_info_t *cmpd_subset; /* Info related to the compound subset conversion functions */ + H5T_bkg_t need_bkg; /* Type of background buf needed */ + size_t request_nelmts; /* Requested strip mine */ + uint8_t *tconv_buf; /* Datatype conv buffer */ + hbool_t tconv_buf_allocated; /* Whether the type conversion buffer was allocated */ + uint8_t *bkg_buf; /* Background buffer */ + hbool_t bkg_buf_allocated; /* Whether the background buffer was allocated */ +} H5D_type_info_t; + +/* Forward declaration of structs used below */ +struct H5D_io_info_t; +struct H5D_chunk_map_t; + +/* Function pointers for I/O on particular types of dataset layouts */ +typedef herr_t (*H5D_layout_construct_func_t)(H5F_t *f, H5D_t *dset); +typedef herr_t (*H5D_layout_init_func_t)(H5F_t *f, hid_t dxpl_id, const H5D_t *dset, + hid_t dapl_id); +typedef hbool_t (*H5D_layout_is_space_alloc_func_t)(const H5O_storage_t *storage); +typedef herr_t (*H5D_layout_io_init_func_t)(const struct H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, + hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space, + struct H5D_chunk_map_t *cm); +typedef herr_t (*H5D_layout_read_func_t)(struct H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, + const H5S_t *mem_space, struct H5D_chunk_map_t *fm); +typedef herr_t (*H5D_layout_write_func_t)(struct H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, + const H5S_t *mem_space, struct H5D_chunk_map_t *fm); +typedef ssize_t (*H5D_layout_readvv_func_t)(const struct H5D_io_info_t *io_info, + size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[], + size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[]); +typedef ssize_t (*H5D_layout_writevv_func_t)(const struct H5D_io_info_t *io_info, + size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[], + size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[]); +typedef herr_t (*H5D_layout_flush_func_t)(H5D_t *dataset, hid_t dxpl_id); +typedef herr_t (*H5D_layout_io_term_func_t)(const struct H5D_chunk_map_t *cm); + +/* Typedef for grouping layout I/O routines */ +typedef struct H5D_layout_ops_t { + H5D_layout_construct_func_t construct; /* Layout constructor for new datasets */ + H5D_layout_init_func_t init; /* Layout initializer for dataset */ + H5D_layout_is_space_alloc_func_t is_space_alloc; /* Query routine to determine if storage is allocated */ + H5D_layout_io_init_func_t io_init; /* I/O initialization routine */ + H5D_layout_read_func_t ser_read; /* High-level I/O routine for reading data in serial */ + H5D_layout_write_func_t ser_write; /* High-level I/O routine for writing data in serial */ +#ifdef H5_HAVE_PARALLEL + H5D_layout_read_func_t par_read; /* High-level I/O routine for reading data in parallel */ + H5D_layout_write_func_t par_write; /* High-level I/O routine for writing data in parallel */ +#endif /* H5_HAVE_PARALLEL */ + H5D_layout_readvv_func_t readvv; /* Low-level I/O routine for reading data */ + H5D_layout_writevv_func_t writevv; /* Low-level I/O routine for writing data */ + H5D_layout_flush_func_t flush; /* Low-level I/O routine for flushing raw data */ + H5D_layout_io_term_func_t io_term; /* I/O shutdown routine */ +} H5D_layout_ops_t; + +/* Function pointers for either multiple or single block I/O access */ +typedef herr_t (*H5D_io_single_read_func_t)(const struct H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, + hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space); +typedef herr_t (*H5D_io_single_write_func_t)(const struct H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, + hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space); + +/* Typedef for raw data I/O framework info */ +typedef struct H5D_io_ops_t { + H5D_layout_read_func_t multi_read; /* High-level I/O routine for reading data */ + H5D_layout_write_func_t multi_write; /* High-level I/O routine for writing data */ + H5D_io_single_read_func_t single_read; /* I/O routine for reading single block */ + H5D_io_single_write_func_t single_write; /* I/O routine for writing single block */ +} H5D_io_ops_t; + +/* Typedefs for dataset storage information */ +typedef struct { + haddr_t dset_addr; /* Address of dataset in file */ + hsize_t dset_size; /* Total size of dataset in file */ +} H5D_contig_storage_t; + +typedef struct { + hsize_t index; /* "Index" of chunk in dataset (must be first for TBBT routines) */ + hsize_t *offset; /* Chunk's coordinates in elements */ +} H5D_chunk_storage_t; + +typedef struct { + void *buf; /* Buffer for compact dataset */ + hbool_t *dirty; /* Pointer to dirty flag to mark */ +} H5D_compact_storage_t; + +typedef union H5D_storage_t { + H5D_contig_storage_t contig; /* Contiguous information for dataset */ + H5D_chunk_storage_t chunk; /* Chunk information for dataset */ + H5D_compact_storage_t compact; /* Compact information for dataset */ + H5O_efl_t efl; /* External file list information for dataset */ +} H5D_storage_t; + +/* Typedef for raw data I/O operation info */ +typedef enum H5D_io_op_type_t { + H5D_IO_OP_READ, /* Read operation */ + H5D_IO_OP_WRITE /* Write operation */ +} H5D_io_op_type_t; + +typedef struct H5D_io_info_t { + const H5D_t *dset; /* Pointer to dataset being operated on */ +#ifndef H5_HAVE_PARALLEL + const +#endif /* H5_HAVE_PARALLEL */ + H5D_dxpl_cache_t *dxpl_cache; /* Pointer to cached DXPL info */ + hid_t dxpl_id; /* Original DXPL ID */ +#ifdef H5_HAVE_PARALLEL + MPI_Comm comm; /* MPI communicator for file */ + hbool_t using_mpi_vfd; /* Whether the file is using an MPI-based VFD */ + struct { + H5FD_mpio_xfer_t xfer_mode; /* Parallel transfer for this request (H5D_XFER_IO_XFER_MODE_NAME) */ + H5FD_mpio_collective_opt_t coll_opt_mode; /* Parallel transfer with independent IO or collective IO with this mode */ + H5D_io_ops_t io_ops; /* I/O operation function pointers */ + } orig; +#endif /* H5_HAVE_PARALLEL */ + H5D_storage_t *store; /* Dataset storage info */ + H5D_layout_ops_t layout_ops; /* Dataset layout I/O operation function pointers */ + H5D_io_ops_t io_ops; /* I/O operation function pointers */ + H5D_io_op_type_t op_type; + union { + void *rbuf; /* Pointer to buffer for read */ + const void *wbuf; /* Pointer to buffer to write */ + } u; +} H5D_io_info_t; + + +/******************/ +/* Chunk typedefs */ +/******************/ + +/* Typedef for chunked dataset index operation info */ +typedef struct H5D_chk_idx_info_t { + H5F_t *f; /* File pointer for operation */ + hid_t dxpl_id; /* DXPL ID for operation */ + const H5O_pline_t *pline; /* I/O pipeline info */ + H5O_layout_chunk_t *layout; /* Chunk layout description */ + H5O_storage_chunk_t *storage; /* Chunk storage description */ +} H5D_chk_idx_info_t; + +/* + * "Generic" chunk record. Each chunk is keyed by the minimum logical + * N-dimensional coordinates and the datatype size of the chunk. + * The fastest-varying dimension is assumed to reference individual bytes of + * the array, so a 100-element 1-D array of 4-byte integers would really be a + * 2-D array with the slow varying dimension of size 100 and the fast varying + * dimension of size 4 (the storage dimensionality has very little to do with + * the real dimensionality). + * + * The chunk's file address, filter mask and size on disk are not key values. + */ +typedef struct H5D_chunk_rec_t { + uint32_t nbytes; /* Size of stored data */ + hsize_t offset[H5O_LAYOUT_NDIMS]; /* Logical offset to start */ + unsigned filter_mask; /* Excluded filters */ + haddr_t chunk_addr; /* Address of chunk in file */ +} H5D_chunk_rec_t; + +/* + * Common data exchange structure for indexed storage nodes. This structure is + * passed through the indexing layer to the methods for the objects + * to which the index points. + */ +typedef struct H5D_chunk_common_ud_t { + /* downward */ + const H5O_layout_chunk_t *layout; /* Chunk layout description */ + const H5O_storage_chunk_t *storage; /* Chunk storage description */ + const hsize_t *offset; /* Logical offset of chunk */ + const struct H5D_rdcc_t *rdcc; /* Chunk cache. Only necessary if the index may + * be modified, and if any chunks in the dset + * may be cached */ +} H5D_chunk_common_ud_t; + +/* B-tree callback info for various operations */ +typedef struct H5D_chunk_ud_t { + H5D_chunk_common_ud_t common; /* Common info for B-tree user data (must be first) */ + + /* Upward */ + unsigned idx_hint; /*index of chunk in cache, if present */ + uint32_t nbytes; /*size of stored data */ + unsigned filter_mask; /*excluded filters */ + haddr_t addr; /*file address of chunk */ +} H5D_chunk_ud_t; + +/* Typedef for "generic" chunk callbacks */ +typedef int (*H5D_chunk_cb_func_t)(const H5D_chunk_rec_t *chunk_rec, + void *udata); + +/* Typedefs for chunk operations */ +typedef herr_t (*H5D_chunk_init_func_t)(const H5D_chk_idx_info_t *idx_info, + const H5S_t *space, haddr_t dset_ohdr_addr); +typedef herr_t (*H5D_chunk_create_func_t)(const H5D_chk_idx_info_t *idx_info); +typedef hbool_t (*H5D_chunk_is_space_alloc_func_t)(const H5O_storage_chunk_t *storage); +typedef herr_t (*H5D_chunk_insert_func_t)(const H5D_chk_idx_info_t *idx_info, + H5D_chunk_ud_t *udata); +typedef herr_t (*H5D_chunk_get_addr_func_t)(const H5D_chk_idx_info_t *idx_info, + H5D_chunk_ud_t *udata); +typedef herr_t (*H5D_chunk_resize_func_t)(H5O_layout_chunk_t *layout); +typedef int (*H5D_chunk_iterate_func_t)(const H5D_chk_idx_info_t *idx_info, + H5D_chunk_cb_func_t chunk_cb, void *chunk_udata); +typedef herr_t (*H5D_chunk_remove_func_t)(const H5D_chk_idx_info_t *idx_info, + H5D_chunk_common_ud_t *udata); +typedef herr_t (*H5D_chunk_delete_func_t)(const H5D_chk_idx_info_t *idx_info); +typedef herr_t (*H5D_chunk_copy_setup_func_t)(const H5D_chk_idx_info_t *idx_info_src, + const H5D_chk_idx_info_t *idx_info_dst); +typedef herr_t (*H5D_chunk_copy_shutdown_func_t)(H5O_storage_chunk_t *storage_src, + H5O_storage_chunk_t *storage_dst, hid_t dxpl_id); +typedef herr_t (*H5D_chunk_size_func_t)(const H5D_chk_idx_info_t *idx_info, + hsize_t *idx_size); +typedef herr_t (*H5D_chunk_reset_func_t)(H5O_storage_chunk_t *storage, hbool_t reset_addr); +typedef herr_t (*H5D_chunk_dump_func_t)(const H5O_storage_chunk_t *storage, + FILE *stream); +typedef herr_t (*H5D_chunk_dest_func_t)(const H5D_chk_idx_info_t *idx_info); + +/* Typedef for grouping chunk I/O routines */ +typedef struct H5D_chunk_ops_t { + H5D_chunk_init_func_t init; /* Routine to initialize indexing information in memory */ + H5D_chunk_create_func_t create; /* Routine to create chunk index */ + H5D_chunk_is_space_alloc_func_t is_space_alloc; /* Query routine to determine if storage/index is allocated */ + H5D_chunk_insert_func_t insert; /* Routine to insert a chunk into an index */ + H5D_chunk_get_addr_func_t get_addr; /* Routine to retrieve address of chunk in file */ + H5D_chunk_resize_func_t resize; /* Routine to update chunk index info after resizing dataset */ + H5D_chunk_iterate_func_t iterate; /* Routine to iterate over chunks */ + H5D_chunk_remove_func_t remove; /* Routine to remove a chunk from an index */ + H5D_chunk_delete_func_t idx_delete; /* Routine to delete index & all chunks from file*/ + H5D_chunk_copy_setup_func_t copy_setup; /* Routine to perform any necessary setup for copying chunks */ + H5D_chunk_copy_shutdown_func_t copy_shutdown; /* Routine to perform any necessary shutdown for copying chunks */ + H5D_chunk_size_func_t size; /* Routine to get size of indexing information */ + H5D_chunk_reset_func_t reset; /* Routine to reset indexing information */ + H5D_chunk_dump_func_t dump; /* Routine to dump indexing information */ + H5D_chunk_dest_func_t dest; /* Routine to destroy indexing information in memory */ +} H5D_chunk_ops_t; + +/* Structure holding information about a chunk's selection for mapping */ +typedef struct H5D_chunk_info_t { + hsize_t index; /* "Index" of chunk in dataset */ + uint32_t chunk_points; /* Number of elements selected in chunk */ + hsize_t coords[H5O_LAYOUT_NDIMS]; /* Coordinates of chunk in file dataset's dataspace */ + H5S_t *fspace; /* Dataspace describing chunk & selection in it */ + unsigned fspace_shared; /* Indicate that the file space for a chunk is shared and shouldn't be freed */ + H5S_t *mspace; /* Dataspace describing selection in memory corresponding to this chunk */ + unsigned mspace_shared; /* Indicate that the memory space for a chunk is shared and shouldn't be freed */ +} H5D_chunk_info_t; + +/* Main structure holding the mapping between file chunks and memory */ +typedef struct H5D_chunk_map_t { + H5O_layout_t *layout; /* Dataset layout information*/ + hsize_t nelmts; /* Number of elements selected in file & memory dataspaces */ + + const H5S_t *file_space; /* Pointer to the file dataspace */ + unsigned f_ndims; /* Number of dimensions for file dataspace */ + hsize_t f_dims[H5O_LAYOUT_NDIMS]; /* File dataspace dimensions */ + + const H5S_t *mem_space; /* Pointer to the memory dataspace */ + H5S_t *mchunk_tmpl; /* Dataspace template for new memory chunks */ + H5S_sel_iter_t mem_iter; /* Iterator for elements in memory selection */ + unsigned m_ndims; /* Number of dimensions for memory dataspace */ + H5S_sel_type msel_type; /* Selection type in memory */ + + H5SL_t *sel_chunks; /* Skip list containing information for each chunk selected */ + + H5S_t *single_space; /* Dataspace for single chunk */ + H5D_chunk_info_t *single_chunk_info; /* Pointer to single chunk's info */ + hbool_t use_single; /* Whether I/O is on a single element */ + + hsize_t last_index; /* Index of last chunk operated on */ + H5D_chunk_info_t *last_chunk_info; /* Pointer to last chunk's info */ + + hsize_t chunk_dim[H5O_LAYOUT_NDIMS]; /* Size of chunk in each dimension */ + +#ifdef H5_HAVE_PARALLEL + H5D_chunk_info_t **select_chunk; /* Store the information about whether this chunk is selected or not */ +#endif /* H5_HAVE_PARALLEL */ +} H5D_chunk_map_t; + +/* Cached information about a particular chunk */ +typedef struct H5D_chunk_cached_t{ + hbool_t valid; /*whether cache info is valid*/ + hsize_t offset[H5O_LAYOUT_NDIMS]; /*logical offset to start*/ + uint32_t nbytes; /*size of stored data */ + unsigned filter_mask; /*excluded filters */ + haddr_t addr; /*file address of chunk */ +} H5D_chunk_cached_t; + +/* The raw data chunk cache */ +typedef struct H5D_rdcc_t { + struct { + unsigned ninits; /* Number of chunk creations */ + unsigned nhits; /* Number of cache hits */ + unsigned nmisses;/* Number of cache misses */ + unsigned nflushes;/* Number of cache flushes */ + } stats; + size_t nbytes_max; /* Maximum cached raw data in bytes */ + size_t nslots; /* Number of chunk slots allocated */ + double w0; /* Chunk preemption policy */ + struct H5D_rdcc_ent_t *head; /* Head of doubly linked list */ + struct H5D_rdcc_ent_t *tail; /* Tail of doubly linked list */ + size_t nbytes_used; /* Current cached raw data in bytes */ + int nused; /* Number of chunk slots in use */ + H5D_chunk_cached_t last; /* Cached copy of last chunk information */ + struct H5D_rdcc_ent_t **slot; /* Chunk slots, each points to a chunk*/ + H5SL_t *sel_chunks; /* Skip list containing information for each chunk selected */ + H5S_t *single_space; /* Dataspace for single element I/O on chunks */ + H5D_chunk_info_t *single_chunk_info; /* Pointer to single chunk's info */ +} H5D_rdcc_t; + +/* The raw data contiguous data cache */ +typedef struct H5D_rdcdc_t { + unsigned char *sieve_buf; /* Buffer to hold data sieve buffer */ + haddr_t sieve_loc; /* File location (offset) of the data sieve buffer */ + size_t sieve_size; /* Size of the data sieve buffer used (in bytes) */ + size_t sieve_buf_size; /* Size of the data sieve buffer allocated (in bytes) */ + hbool_t sieve_dirty; /* Flag to indicate that the data sieve buffer is dirty */ +} H5D_rdcdc_t; + +/* + * A dataset is made of two layers, an H5D_t struct that is unique to + * each instance of an opened datset, and a shared struct that is only + * created once for a given dataset. Thus, if a dataset is opened twice, + * there will be two IDs and two H5D_t structs, both sharing one H5D_shared_t. + */ +typedef struct H5D_shared_t { + size_t fo_count; /* Reference count */ + hid_t type_id; /* ID for dataset's datatype */ + H5T_t *type; /* Datatype for this dataset */ + H5S_t *space; /* Dataspace of this dataset */ + hbool_t space_dirty; /* Whether the dataspace info needs to be flushed to the file */ + hbool_t layout_dirty; /* Whether the layout info needs to be flushed to the file */ + hid_t dcpl_id; /* Dataset creation property id */ + H5D_dcpl_cache_t dcpl_cache; /* Cached DCPL values */ + H5O_layout_t layout; /* Data layout */ + hbool_t checked_filters;/* TRUE if dataset passes can_apply check */ + + /* Buffered/cached information for types of raw data storage*/ + struct { + H5D_rdcdc_t contig; /* Information about contiguous data */ + /* (Note that the "contig" cache + * information can be used by a chunked + * dataset in certain circumstances) + */ + H5D_rdcc_t chunk; /* Information about chunked data */ + } cache; +} H5D_shared_t; + +struct H5D_t { + H5O_loc_t oloc; /* Object header location */ + H5G_name_t path; /* Group hierarchy path */ + H5D_shared_t *shared; /* cached information from file */ +}; + +/* Enumerated type for allocating dataset's storage */ +typedef enum { + H5D_ALLOC_CREATE, /* Dataset is being created */ + H5D_ALLOC_OPEN, /* Dataset is being opened */ + H5D_ALLOC_EXTEND, /* Dataset's dataspace is being extended */ + H5D_ALLOC_WRITE /* Dataset is being extended */ +} H5D_time_alloc_t; + + +/* Typedef for dataset creation operation */ +typedef struct { + hid_t type_id; /* Datatype for dataset */ + const H5S_t *space; /* Dataspace for dataset */ + hid_t dcpl_id; /* Dataset creation property list */ + hid_t dapl_id; /* Dataset access property list */ +} H5D_obj_create_t; + +/* Typedef for filling a buffer with a fill value */ +typedef struct H5D_fill_buf_info_t { + H5MM_allocate_t fill_alloc_func; /* Routine to call for allocating fill buffer */ + void *fill_alloc_info; /* Extra info for allocation routine */ + H5MM_free_t fill_free_func; /* Routine to call for freeing fill buffer */ + void *fill_free_info; /* Extra info for free routine */ + H5T_path_t *fill_to_mem_tpath; /* Datatype conversion path for converting the fill value to the memory buffer */ + H5T_path_t *mem_to_dset_tpath; /* Datatype conversion path for converting the memory buffer to the dataset elements */ + const H5O_fill_t *fill; /* Pointer to fill value */ + void *fill_buf; /* Fill buffer */ + size_t fill_buf_size; /* Size of fill buffer */ + hbool_t use_caller_fill_buf; /* Whether the caller provided the fill buffer */ + void *bkg_buf; /* Background conversion buffer */ + size_t bkg_buf_size; /* Size of background buffer */ + H5T_t *mem_type; /* Pointer to memory datatype */ + const H5T_t *file_type; /* Pointer to file datatype */ + hid_t mem_tid; /* ID for memory version of disk datatype */ + hid_t file_tid; /* ID for disk datatype */ + size_t mem_elmt_size, file_elmt_size; /* Size of element in memory and on disk */ + size_t max_elmt_size; /* Max. size of memory or file datatype */ + size_t elmts_per_buf; /* # of elements that fit into a buffer */ + hbool_t has_vlen_fill_type; /* Whether the datatype for the fill value has a variable-length component */ +} H5D_fill_buf_info_t; + +/* Internal data structure for computing variable-length dataset's total size */ +typedef struct { + H5D_t *dset; /* Dataset for operation */ + H5S_t *fspace; /* Dataset's dataspace for operation */ + H5S_t *mspace; /* Memory dataspace for operation */ + void *fl_tbuf; /* Ptr to the temporary buffer we are using for fixed-length data */ + void *vl_tbuf; /* Ptr to the temporary buffer we are using for VL data */ + hid_t xfer_pid; /* ID of the dataset xfer property list */ + hsize_t size; /* Accumulated number of bytes for the selection */ +} H5D_vlen_bufsize_t; + +/* Raw data chunks are cached. Each entry in the cache is: */ +typedef struct H5D_rdcc_ent_t { + hbool_t locked; /*entry is locked in cache */ + hbool_t dirty; /*needs to be written to disk? */ + hbool_t deleted; /*chunk about to be deleted (do not flush) */ + hsize_t offset[H5O_LAYOUT_NDIMS]; /*chunk name */ + uint32_t rd_count; /*bytes remaining to be read */ + uint32_t wr_count; /*bytes remaining to be written */ + haddr_t chunk_addr; /*address of chunk in file */ + uint8_t *chunk; /*the unfiltered chunk data */ + unsigned idx; /*index in hash table */ + struct H5D_rdcc_ent_t *next;/*next item in doubly-linked list */ + struct H5D_rdcc_ent_t *prev;/*previous item in doubly-linked list */ +} H5D_rdcc_ent_t; +typedef H5D_rdcc_ent_t *H5D_rdcc_ent_ptr_t; /* For free lists */ + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ +extern H5D_dxpl_cache_t H5D_def_dxpl_cache; + +/* Storage layout class I/O operations */ +H5_DLLVAR const H5D_layout_ops_t H5D_LOPS_CONTIG[1]; +H5_DLLVAR const H5D_layout_ops_t H5D_LOPS_EFL[1]; +H5_DLLVAR const H5D_layout_ops_t H5D_LOPS_COMPACT[1]; +H5_DLLVAR const H5D_layout_ops_t H5D_LOPS_CHUNK[1]; + +/* Chunked layout operations */ +H5_DLLVAR const H5D_chunk_ops_t H5D_COPS_BTREE[1]; + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +H5_DLL herr_t H5D__term_pub_interface(void); +H5_DLL herr_t H5D__term_deprec_interface(void); +H5_DLL H5D_t *H5D__create(H5F_t *file, hid_t type_id, const H5S_t *space, + hid_t dcpl_id, hid_t dapl_id, hid_t dxpl_id); +H5_DLL H5D_t *H5D__create_named(const H5G_loc_t *loc, const char *name, + hid_t type_id, const H5S_t *space, hid_t lcpl_id, hid_t dcpl_id, + hid_t dapl_id, hid_t dxpl_id); +H5_DLL herr_t H5D__get_space_status(H5D_t *dset, H5D_space_status_t *allocation, + hid_t dxpl_id); +H5_DLL herr_t H5D__alloc_storage(const H5D_t *dset, hid_t dxpl_id, H5D_time_alloc_t time_alloc, + hbool_t full_overwrite, hsize_t old_dim[]); +H5_DLL herr_t H5D__get_storage_size(H5D_t *dset, hid_t dxpl_id, hsize_t *storage_size); +H5_DLL haddr_t H5D__get_offset(const H5D_t *dset); +H5_DLL herr_t H5D__iterate(void *buf, hid_t type_id, const H5S_t *space, + H5D_operator_t op, void *operator_data); +H5_DLL void *H5D__vlen_get_buf_size_alloc(size_t size, void *info); +H5_DLL herr_t H5D__vlen_get_buf_size(void *elem, hid_t type_id, unsigned ndim, + const hsize_t *point, void *op_data); +H5_DLL herr_t H5D__check_filters(H5D_t *dataset); +H5_DLL herr_t H5D__set_extent(H5D_t *dataset, const hsize_t *size, hid_t dxpl_id); +H5_DLL herr_t H5D__get_dxpl_cache(hid_t dxpl_id, H5D_dxpl_cache_t **cache); +H5_DLL herr_t H5D__flush_sieve_buf(H5D_t *dataset, hid_t dxpl_id); +H5_DLL herr_t H5D__mark(const H5D_t *dataset, hid_t dxpl_id, unsigned flags); +H5_DLL herr_t H5D__flush_real(H5D_t *dataset, hid_t dxpl_id); + +/* Internal I/O routines */ +H5_DLL herr_t H5D__read(H5D_t *dataset, hid_t mem_type_id, + const H5S_t *mem_space, const H5S_t *file_space, hid_t dset_xfer_plist, + void *buf/*out*/); + +/* Functions that perform direct serial I/O operations */ +H5_DLL herr_t H5D__select_read(const H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, + hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space); +H5_DLL herr_t H5D__select_write(const H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, + hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space); + +/* Functions that perform scatter-gather serial I/O operations */ +H5_DLL herr_t H5D__scatter_mem(const void *_tscat_buf, + const H5S_t *space, H5S_sel_iter_t *iter, size_t nelmts, + const H5D_dxpl_cache_t *dxpl_cache, void *_buf); +H5_DLL herr_t H5D__scatgath_read(const H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, + hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space); +H5_DLL herr_t H5D__scatgath_write(const H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, + hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space); + +/* Functions that operate on dataset's layout information */ +H5_DLL herr_t H5D__layout_set_io_ops(const H5D_t *dataset); +H5_DLL size_t H5D__layout_meta_size(const H5F_t *f, const H5O_layout_t *layout, + hbool_t include_compact_data); +H5_DLL herr_t H5D__layout_oh_create(H5F_t *file, hid_t dxpl_id, H5O_t *oh, + H5D_t *dset, hid_t dapl_id); +H5_DLL herr_t H5D__layout_oh_read(H5D_t *dset, hid_t dxpl_id, hid_t dapl_id, + H5P_genplist_t *plist); +H5_DLL herr_t H5D__layout_oh_write(H5D_t *dataset, hid_t dxpl_id, H5O_t *oh, + unsigned update_flags); + +/* Functions that operate on contiguous storage */ +H5_DLL herr_t H5D__contig_alloc(H5F_t *f, hid_t dxpl_id, + H5O_storage_contig_t *storage); +H5_DLL hbool_t H5D__contig_is_space_alloc(const H5O_storage_t *storage); +H5_DLL herr_t H5D__contig_fill(const H5D_t *dset, hid_t dxpl_id); +H5_DLL herr_t H5D__contig_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info, + hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space, + H5D_chunk_map_t *fm); +H5_DLL herr_t H5D__contig_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info, + hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space, + H5D_chunk_map_t *fm); +H5_DLL herr_t H5D__contig_copy(H5F_t *f_src, const H5O_storage_contig_t *storage_src, + H5F_t *f_dst, H5O_storage_contig_t *storage_dst, H5T_t *src_dtype, + H5O_copy_t *cpy_info, hid_t dxpl_id); +H5_DLL herr_t H5D__contig_delete(H5F_t *f, hid_t dxpl_id, + const H5O_storage_t *store); + + +/* Functions that operate on chunked dataset storage */ +H5_DLL htri_t H5D__chunk_cacheable(const H5D_io_info_t *io_info, haddr_t caddr, + hbool_t write_op); +H5_DLL herr_t H5D__chunk_create(const H5D_t *dset /*in,out*/, hid_t dxpl_id); +H5_DLL herr_t H5D__chunk_set_info(const H5D_t *dset); +H5_DLL herr_t H5D__chunk_init(H5F_t *f, hid_t dxpl_id, const H5D_t *dset, + hid_t dapl_id); +H5_DLL hbool_t H5D__chunk_is_space_alloc(const H5O_storage_t *storage); +H5_DLL herr_t H5D__chunk_lookup(const H5D_t *dset, hid_t dxpl_id, + const hsize_t *chunk_offset, hsize_t chunk_idx, H5D_chunk_ud_t *udata); +H5_DLL void *H5D__chunk_lock(const H5D_io_info_t *io_info, + H5D_chunk_ud_t *udata, hbool_t relax); +H5_DLL herr_t H5D__chunk_unlock(const H5D_io_info_t *io_info, + const H5D_chunk_ud_t *udata, hbool_t dirty, void *chunk, + uint32_t naccessed); +H5_DLL herr_t H5D__chunk_allocated(H5D_t *dset, hid_t dxpl_id, hsize_t *nbytes); +H5_DLL herr_t H5D__chunk_allocate(const H5D_t *dset, hid_t dxpl_id, + hbool_t full_overwrite, hsize_t old_dim[]); +H5_DLL herr_t H5D__chunk_prune_by_extent(H5D_t *dset, hid_t dxpl_id, + const hsize_t *old_dim); +#ifdef H5_HAVE_PARALLEL +H5_DLL herr_t H5D__chunk_addrmap(const H5D_io_info_t *io_info, haddr_t chunk_addr[]); +#endif /* H5_HAVE_PARALLEL */ +H5_DLL herr_t H5D__chunk_update_cache(H5D_t *dset, hid_t dxpl_id); +H5_DLL herr_t H5D__chunk_copy(H5F_t *f_src, H5O_storage_chunk_t *storage_src, + H5O_layout_chunk_t *layout_src, H5F_t *f_dst, H5O_storage_chunk_t *storage_dst, + const H5S_extent_t *ds_extent_src, const H5T_t *dt_src, + const H5O_pline_t *pline_src, H5O_copy_t *cpy_info, hid_t dxpl_id); +H5_DLL herr_t H5D__chunk_bh_info(H5F_t *f, hid_t dxpl_id, H5O_layout_t *layout, + const H5O_pline_t *pline, hsize_t *btree_size); +H5_DLL herr_t H5D__chunk_dump_index(H5D_t *dset, hid_t dxpl_id, FILE *stream); +H5_DLL herr_t H5D__chunk_dest(H5F_t *f, hid_t dxpl_id, H5D_t *dset); +H5_DLL herr_t H5D__chunk_delete(H5F_t *f, hid_t dxpl_id, H5O_t *oh, + H5O_storage_t *store); +H5_DLL herr_t H5D__chunk_direct_write(const H5D_t *dset, hid_t dxpl_id, uint32_t filters, + hsize_t *offset, uint32_t data_size, const void *buf); +#ifdef H5D_CHUNK_DEBUG +H5_DLL herr_t H5D__chunk_stats(const H5D_t *dset, hbool_t headers); +#endif /* H5D_CHUNK_DEBUG */ + +/* Functions that operate on compact dataset storage */ +H5_DLL herr_t H5D__compact_fill(const H5D_t *dset, hid_t dxpl_id); +H5_DLL herr_t H5D__compact_copy(H5F_t *f_src, H5O_storage_compact_t *storage_src, + H5F_t *f_dst, H5O_storage_compact_t *storage_dst, H5T_t *src_dtype, + H5O_copy_t *cpy_info, hid_t dxpl_id); + +/* Functions that operate on EFL (External File List)*/ +H5_DLL hbool_t H5D__efl_is_space_alloc(const H5O_storage_t *storage); +H5_DLL herr_t H5D__efl_bh_info(H5F_t *f, hid_t dxpl_id, H5O_efl_t *efl, + hsize_t *heap_size); + +/* Functions that perform fill value operations on datasets */ +H5_DLL herr_t H5D__fill(const void *fill, const H5T_t *fill_type, void *buf, + const H5T_t *buf_type, const H5S_t *space, hid_t dxpl_id); +H5_DLL herr_t H5D__fill_init(H5D_fill_buf_info_t *fb_info, void *caller_fill_buf, + H5MM_allocate_t alloc_func, void *alloc_info, + H5MM_free_t free_func, void *free_info, + const H5O_fill_t *fill, const H5T_t *dset_type, hid_t dset_type_id, + size_t nelmts, size_t min_buf_size, hid_t dxpl_id); +H5_DLL herr_t H5D__fill_refill_vl(H5D_fill_buf_info_t *fb_info, size_t nelmts, + hid_t dxpl_id); +H5_DLL herr_t H5D__fill_term(H5D_fill_buf_info_t *fb_info); + +#ifdef H5_HAVE_PARALLEL + +#ifdef H5S_DEBUG +#ifndef H5Dmpio_DEBUG +#define H5Dmpio_DEBUG +#endif /*H5Dmpio_DEBUG*/ +#endif/*H5S_DEBUG*/ +/* MPI-IO function to read, it will select either regular or irregular read */ +H5_DLL herr_t H5D__mpio_select_read(const H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, + hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space); + +/* MPI-IO function to write, it will select either regular or irregular read */ +H5_DLL herr_t H5D__mpio_select_write(const H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, + hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space); + +/* MPI-IO functions to handle contiguous collective IO */ +H5_DLL herr_t H5D__contig_collective_read(H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, + const H5S_t *mem_space, H5D_chunk_map_t *fm); +H5_DLL herr_t H5D__contig_collective_write(H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, + const H5S_t *mem_space, H5D_chunk_map_t *fm); + +/* MPI-IO functions to handle chunked collective IO */ +H5_DLL herr_t H5D__chunk_collective_read(H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, + const H5S_t *mem_space, H5D_chunk_map_t *fm); +H5_DLL herr_t H5D__chunk_collective_write(H5D_io_info_t *io_info, + const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, + const H5S_t *mem_space, H5D_chunk_map_t *fm); + +/* MPI-IO function to check if a direct I/O transfer is possible between + * memory and the file */ +H5_DLL htri_t H5D__mpio_opt_possible(const H5D_io_info_t *io_info, + const H5S_t *file_space, const H5S_t *mem_space, + const H5D_type_info_t *type_info, const H5D_chunk_map_t *fm, + H5P_genplist_t *dx_plist); + +#endif /* H5_HAVE_PARALLEL */ + +/* Testing functions */ +#ifdef H5D_TESTING +H5_DLL herr_t H5D__layout_version_test(hid_t did, unsigned *version); +H5_DLL herr_t H5D__layout_contig_size_test(hid_t did, hsize_t *size); +H5_DLL herr_t H5D__current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused); +#endif /* H5D_TESTING */ + +#endif /*_H5Dpkg_H*/ + diff --git a/Resources/windows-libs/HDF5/include/H5Dpublic.h b/Resources/windows-libs/HDF5/include/H5Dpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..4309d6409c38800eeb64b92f39eb969d6ee61e6e --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Dpublic.h @@ -0,0 +1,173 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5D module. + */ +#ifndef _H5Dpublic_H +#define _H5Dpublic_H + +/* System headers needed by this file */ + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Ipublic.h" + +/*****************/ +/* Public Macros */ +/*****************/ + +/* Macros used to "unset" chunk cache configuration parameters */ +#define H5D_CHUNK_CACHE_NSLOTS_DEFAULT ((size_t) -1) +#define H5D_CHUNK_CACHE_NBYTES_DEFAULT ((size_t) -1) +#define H5D_CHUNK_CACHE_W0_DEFAULT -1. + +/* Property names for H5LTDdirect_chunk_write */ +#define H5D_XFER_DIRECT_CHUNK_WRITE_FLAG_NAME "direct_chunk_flag" +#define H5D_XFER_DIRECT_CHUNK_WRITE_FILTERS_NAME "direct_chunk_filters" +#define H5D_XFER_DIRECT_CHUNK_WRITE_OFFSET_NAME "direct_chunk_offset" +#define H5D_XFER_DIRECT_CHUNK_WRITE_DATASIZE_NAME "direct_chunk_datasize" + +/*******************/ +/* Public Typedefs */ +/*******************/ + +/* Values for the H5D_LAYOUT property */ +typedef enum H5D_layout_t { + H5D_LAYOUT_ERROR = -1, + + H5D_COMPACT = 0, /*raw data is very small */ + H5D_CONTIGUOUS = 1, /*the default */ + H5D_CHUNKED = 2, /*slow and fancy */ + H5D_NLAYOUTS = 3 /*this one must be last! */ +} H5D_layout_t; + +/* Types of chunk index data structures */ +typedef enum H5D_chunk_index_t { + H5D_CHUNK_BTREE = 0 /* v1 B-tree index */ +} H5D_chunk_index_t; + +/* Values for the space allocation time property */ +typedef enum H5D_alloc_time_t { + H5D_ALLOC_TIME_ERROR = -1, + H5D_ALLOC_TIME_DEFAULT = 0, + H5D_ALLOC_TIME_EARLY = 1, + H5D_ALLOC_TIME_LATE = 2, + H5D_ALLOC_TIME_INCR = 3 +} H5D_alloc_time_t; + +/* Values for the status of space allocation */ +typedef enum H5D_space_status_t { + H5D_SPACE_STATUS_ERROR = -1, + H5D_SPACE_STATUS_NOT_ALLOCATED = 0, + H5D_SPACE_STATUS_PART_ALLOCATED = 1, + H5D_SPACE_STATUS_ALLOCATED = 2 +} H5D_space_status_t; + +/* Values for time of writing fill value property */ +typedef enum H5D_fill_time_t { + H5D_FILL_TIME_ERROR = -1, + H5D_FILL_TIME_ALLOC = 0, + H5D_FILL_TIME_NEVER = 1, + H5D_FILL_TIME_IFSET = 2 +} H5D_fill_time_t; + +/* Values for fill value status */ +typedef enum H5D_fill_value_t { + H5D_FILL_VALUE_ERROR =-1, + H5D_FILL_VALUE_UNDEFINED =0, + H5D_FILL_VALUE_DEFAULT =1, + H5D_FILL_VALUE_USER_DEFINED =2 +} H5D_fill_value_t; + +/********************/ +/* Public Variables */ +/********************/ + +/*********************/ +/* Public Prototypes */ +/*********************/ +#ifdef __cplusplus +extern "C" { +#endif + +/* Define the operator function pointer for H5Diterate() */ +typedef herr_t (*H5D_operator_t)(void *elem, hid_t type_id, unsigned ndim, + const hsize_t *point, void *operator_data); + +/* Define the operator function pointer for H5Dscatter() */ +typedef herr_t (*H5D_scatter_func_t)(const void **src_buf/*out*/, + size_t *src_buf_bytes_used/*out*/, + void *op_data); + +/* Define the operator function pointer for H5Dgather() */ +typedef herr_t (*H5D_gather_func_t)(const void *dst_buf, + size_t dst_buf_bytes_used, void *op_data); + +H5_DLL hid_t H5Dcreate2(hid_t loc_id, const char *name, hid_t type_id, + hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id); +H5_DLL hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id, + hid_t plist_id, hid_t dapl_id); +H5_DLL hid_t H5Dopen2(hid_t file_id, const char *name, hid_t dapl_id); +H5_DLL herr_t H5Dclose(hid_t dset_id); +H5_DLL hid_t H5Dget_space(hid_t dset_id); +H5_DLL herr_t H5Dget_space_status(hid_t dset_id, H5D_space_status_t *allocation); +H5_DLL hid_t H5Dget_type(hid_t dset_id); +H5_DLL hid_t H5Dget_create_plist(hid_t dset_id); +H5_DLL hid_t H5Dget_access_plist(hid_t dset_id); +H5_DLL hsize_t H5Dget_storage_size(hid_t dset_id); +H5_DLL haddr_t H5Dget_offset(hid_t dset_id); +H5_DLL herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, + hid_t file_space_id, hid_t plist_id, void *buf/*out*/); +H5_DLL herr_t H5Dwrite(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, + hid_t file_space_id, hid_t plist_id, const void *buf); +H5_DLL herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id, + H5D_operator_t op, void *operator_data); +H5_DLL herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id, hid_t plist_id, void *buf); +H5_DLL herr_t H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, hsize_t *size); +H5_DLL herr_t H5Dfill(const void *fill, hid_t fill_type, void *buf, + hid_t buf_type, hid_t space); +H5_DLL herr_t H5Dset_extent(hid_t dset_id, const hsize_t size[]); +H5_DLL herr_t H5Dscatter(H5D_scatter_func_t op, void *op_data, hid_t type_id, + hid_t dst_space_id, void *dst_buf); +H5_DLL herr_t H5Dgather(hid_t src_space_id, const void *src_buf, hid_t type_id, + size_t dst_buf_size, void *dst_buf, H5D_gather_func_t op, void *op_data); +H5_DLL herr_t H5Ddebug(hid_t dset_id); + +/* Symbols defined for compatibility with previous versions of the HDF5 API. + * + * Use of these symbols is deprecated. + */ +#ifndef H5_NO_DEPRECATED_SYMBOLS + +/* Macros */ + + +/* Typedefs */ + + +/* Function prototypes */ +H5_DLL hid_t H5Dcreate1(hid_t file_id, const char *name, hid_t type_id, + hid_t space_id, hid_t dcpl_id); +H5_DLL hid_t H5Dopen1(hid_t file_id, const char *name); +H5_DLL herr_t H5Dextend(hid_t dset_id, const hsize_t size[]); + +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +#ifdef __cplusplus +} +#endif +#endif /* _H5Dpublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5DxferProp.h b/Resources/windows-libs/HDF5/include/H5DxferProp.h new file mode 100644 index 0000000000000000000000000000000000000000..835dfdbe73bbf97ec5c40f1709b6f12fdad25d3c --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5DxferProp.h @@ -0,0 +1,123 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +// Class DSetMemXferPropList represents the HDF5 dataset transfer property list +// and inherits from PropList. + +#ifndef __H5DSetMemXferPropList_H +#define __H5DSetMemXferPropList_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/*! \class DSetMemXferPropList + \brief Class DSetMemXferPropList represents the dataset memory and + transfer property list. +*/ +class H5_DLLCPP DSetMemXferPropList : public PropList { + public: + static const DSetMemXferPropList DEFAULT; + + // Creates a dataset memory and transfer property list. + DSetMemXferPropList(); + + // Creates a dataset transform property list. + DSetMemXferPropList(const char* expression); + + // Sets type conversion and background buffers. + void setBuffer( size_t size, void* tconv, void* bkg ) const; + + // Reads buffer settings. + size_t getBuffer( void** tconv, void** bkg ) const; + + // Sets B-tree split ratios for a dataset transfer property list. + void setBtreeRatios( double left, double middle, double right ) const; + + // Gets B-tree split ratios for a dataset transfer property list. + void getBtreeRatios( double& left, double& middle, double& right ) const; + + // Sets data transform expression. + void setDataTransform(const char* expression) const; + void setDataTransform(const H5std_string& expression) const; + + // Gets data transform expression. + ssize_t getDataTransform(char* exp, size_t buf_size=0) const; + H5std_string getDataTransform() const; + + // Sets the dataset transfer property list status to TRUE or FALSE. + void setPreserve( bool status ) const; + + // Checks status of the dataset transfer property list. + bool getPreserve() const; + + // Sets an exception handling callback for datatype conversion. + void setTypeConvCB( H5T_conv_except_func_t op, void *user_data) const; + + // Gets the exception handling callback for datatype conversion. + void getTypeConvCB( H5T_conv_except_func_t *op, void **user_data) const; + + // Sets the memory manager for variable-length datatype + // allocation in H5Dread and H5Dvlen_reclaim. + void setVlenMemManager( H5MM_allocate_t alloc, void* alloc_info, + H5MM_free_t free, void* free_info ) const; + + // alloc and free are set to NULL, indicating that system + // malloc and free are to be used. + void setVlenMemManager() const; + + // Gets the memory manager for variable-length datatype + // allocation in H5Dread and H5Tvlen_reclaim. + void getVlenMemManager( H5MM_allocate_t& alloc, void** alloc_info, + H5MM_free_t& free, void** free_info ) const; + + // Sets the size of a contiguous block reserved for small data. + void setSmallDataBlockSize(hsize_t size); + + // Returns the current small data block size setting. + hsize_t getSmallDataBlockSize(); + + // Sets number of I/O vectors to be read/written in hyperslab I/O. + void setHyperVectorSize(size_t vector_size); + + // Returns the number of I/O vectors to be read/written in + // hyperslab I/O. + size_t getHyperVectorSize(); + + // Enables or disables error-detecting for a dataset reading + // process. + void setEDCCheck(H5Z_EDC_t check); + + // Determines whether error-detection is enabled for dataset reads. + H5Z_EDC_t getEDCCheck(); + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("DSetMemXferPropList"); } + + // Copy constructor: makes a copy of a DSetMemXferPropList object. + DSetMemXferPropList(const DSetMemXferPropList& orig); + + // Creates a copy of an existing dataset memory and transfer + // property list using the property list id. + DSetMemXferPropList(const hid_t plist_id); + + // Noop destructor + virtual ~DSetMemXferPropList(); +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5DSetMemXferPropList_H diff --git a/Resources/windows-libs/HDF5/include/H5Edefin.h b/Resources/windows-libs/HDF5/include/H5Edefin.h new file mode 100644 index 0000000000000000000000000000000000000000..8bc52dd09908577255b094f09a186ecb55abe1eb --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Edefin.h @@ -0,0 +1,216 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* Generated automatically by bin/make_err -- do not edit */ +/* Add new errors to H5err.txt file */ + + +#ifndef _H5Edefin_H +#define _H5Edefin_H + +/* Major error IDs */ +hid_t H5E_DATASET_g = FAIL; /* Dataset */ +hid_t H5E_FUNC_g = FAIL; /* Function entry/exit */ +hid_t H5E_STORAGE_g = FAIL; /* Data storage */ +hid_t H5E_FILE_g = FAIL; /* File accessibilty */ +hid_t H5E_SOHM_g = FAIL; /* Shared Object Header Messages */ +hid_t H5E_SYM_g = FAIL; /* Symbol table */ +hid_t H5E_PLUGIN_g = FAIL; /* Plugin for dynamically loaded library */ +hid_t H5E_VFL_g = FAIL; /* Virtual File Layer */ +hid_t H5E_INTERNAL_g = FAIL; /* Internal error (too specific to document in detail) */ +hid_t H5E_BTREE_g = FAIL; /* B-Tree node */ +hid_t H5E_REFERENCE_g = FAIL; /* References */ +hid_t H5E_DATASPACE_g = FAIL; /* Dataspace */ +hid_t H5E_RESOURCE_g = FAIL; /* Resource unavailable */ +hid_t H5E_PLIST_g = FAIL; /* Property lists */ +hid_t H5E_LINK_g = FAIL; /* Links */ +hid_t H5E_DATATYPE_g = FAIL; /* Datatype */ +hid_t H5E_RS_g = FAIL; /* Reference Counted Strings */ +hid_t H5E_HEAP_g = FAIL; /* Heap */ +hid_t H5E_OHDR_g = FAIL; /* Object header */ +hid_t H5E_ATOM_g = FAIL; /* Object atom */ +hid_t H5E_ATTR_g = FAIL; /* Attribute */ +hid_t H5E_NONE_MAJOR_g = FAIL; /* No error */ +hid_t H5E_IO_g = FAIL; /* Low-level I/O */ +hid_t H5E_SLIST_g = FAIL; /* Skip Lists */ +hid_t H5E_EFL_g = FAIL; /* External file list */ +hid_t H5E_TST_g = FAIL; /* Ternary Search Trees */ +hid_t H5E_ARGS_g = FAIL; /* Invalid arguments to routine */ +hid_t H5E_ERROR_g = FAIL; /* Error API */ +hid_t H5E_PLINE_g = FAIL; /* Data filters */ +hid_t H5E_FSPACE_g = FAIL; /* Free Space Manager */ +hid_t H5E_CACHE_g = FAIL; /* Object cache */ + +/* Minor error IDs */ + +/* Generic low-level file I/O errors */ +hid_t H5E_SEEKERROR_g = FAIL; /* Seek failed */ +hid_t H5E_READERROR_g = FAIL; /* Read failed */ +hid_t H5E_WRITEERROR_g = FAIL; /* Write failed */ +hid_t H5E_CLOSEERROR_g = FAIL; /* Close failed */ +hid_t H5E_OVERFLOW_g = FAIL; /* Address overflowed */ +hid_t H5E_FCNTL_g = FAIL; /* File control (fcntl) failed */ + +/* Resource errors */ +hid_t H5E_NOSPACE_g = FAIL; /* No space available for allocation */ +hid_t H5E_CANTALLOC_g = FAIL; /* Can't allocate space */ +hid_t H5E_CANTCOPY_g = FAIL; /* Unable to copy object */ +hid_t H5E_CANTFREE_g = FAIL; /* Unable to free object */ +hid_t H5E_ALREADYEXISTS_g = FAIL; /* Object already exists */ +hid_t H5E_CANTLOCK_g = FAIL; /* Unable to lock object */ +hid_t H5E_CANTUNLOCK_g = FAIL; /* Unable to unlock object */ +hid_t H5E_CANTGC_g = FAIL; /* Unable to garbage collect */ +hid_t H5E_CANTGETSIZE_g = FAIL; /* Unable to compute size */ +hid_t H5E_OBJOPEN_g = FAIL; /* Object is already open */ + +/* Heap errors */ +hid_t H5E_CANTRESTORE_g = FAIL; /* Can't restore condition */ +hid_t H5E_CANTCOMPUTE_g = FAIL; /* Can't compute value */ +hid_t H5E_CANTEXTEND_g = FAIL; /* Can't extend heap's space */ +hid_t H5E_CANTATTACH_g = FAIL; /* Can't attach object */ +hid_t H5E_CANTUPDATE_g = FAIL; /* Can't update object */ +hid_t H5E_CANTOPERATE_g = FAIL; /* Can't operate on object */ + +/* Function entry/exit interface errors */ +hid_t H5E_CANTINIT_g = FAIL; /* Unable to initialize object */ +hid_t H5E_ALREADYINIT_g = FAIL; /* Object already initialized */ +hid_t H5E_CANTRELEASE_g = FAIL; /* Unable to release object */ + +/* Property list errors */ +hid_t H5E_CANTGET_g = FAIL; /* Can't get value */ +hid_t H5E_CANTSET_g = FAIL; /* Can't set value */ +hid_t H5E_DUPCLASS_g = FAIL; /* Duplicate class name in parent class */ +hid_t H5E_SETDISALLOWED_g = FAIL; /* Disallowed operation */ + +/* Free space errors */ +hid_t H5E_CANTMERGE_g = FAIL; /* Can't merge objects */ +hid_t H5E_CANTREVIVE_g = FAIL; /* Can't revive object */ +hid_t H5E_CANTSHRINK_g = FAIL; /* Can't shrink container */ + +/* Object header related errors */ +hid_t H5E_LINKCOUNT_g = FAIL; /* Bad object header link count */ +hid_t H5E_VERSION_g = FAIL; /* Wrong version number */ +hid_t H5E_ALIGNMENT_g = FAIL; /* Alignment error */ +hid_t H5E_BADMESG_g = FAIL; /* Unrecognized message */ +hid_t H5E_CANTDELETE_g = FAIL; /* Can't delete message */ +hid_t H5E_BADITER_g = FAIL; /* Iteration failed */ +hid_t H5E_CANTPACK_g = FAIL; /* Can't pack messages */ +hid_t H5E_CANTRESET_g = FAIL; /* Can't reset object */ +hid_t H5E_CANTRENAME_g = FAIL; /* Unable to rename object */ + +/* System level errors */ +hid_t H5E_SYSERRSTR_g = FAIL; /* System error message */ + +/* I/O pipeline errors */ +hid_t H5E_NOFILTER_g = FAIL; /* Requested filter is not available */ +hid_t H5E_CALLBACK_g = FAIL; /* Callback failed */ +hid_t H5E_CANAPPLY_g = FAIL; /* Error from filter 'can apply' callback */ +hid_t H5E_SETLOCAL_g = FAIL; /* Error from filter 'set local' callback */ +hid_t H5E_NOENCODER_g = FAIL; /* Filter present but encoding disabled */ +hid_t H5E_CANTFILTER_g = FAIL; /* Filter operation failed */ + +/* Group related errors */ +hid_t H5E_CANTOPENOBJ_g = FAIL; /* Can't open object */ +hid_t H5E_CANTCLOSEOBJ_g = FAIL; /* Can't close object */ +hid_t H5E_COMPLEN_g = FAIL; /* Name component is too long */ +hid_t H5E_PATH_g = FAIL; /* Problem with path to object */ + +/* No error */ +hid_t H5E_NONE_MINOR_g = FAIL; /* No error */ + +/* Plugin errors */ +hid_t H5E_OPENERROR_g = FAIL; /* Can't open directory or file */ + +/* File accessibilty errors */ +hid_t H5E_FILEEXISTS_g = FAIL; /* File already exists */ +hid_t H5E_FILEOPEN_g = FAIL; /* File already open */ +hid_t H5E_CANTCREATE_g = FAIL; /* Unable to create file */ +hid_t H5E_CANTOPENFILE_g = FAIL; /* Unable to open file */ +hid_t H5E_CANTCLOSEFILE_g = FAIL; /* Unable to close file */ +hid_t H5E_NOTHDF5_g = FAIL; /* Not an HDF5 file */ +hid_t H5E_BADFILE_g = FAIL; /* Bad file ID accessed */ +hid_t H5E_TRUNCATED_g = FAIL; /* File has been truncated */ +hid_t H5E_MOUNT_g = FAIL; /* File mount error */ + +/* Object atom related errors */ +hid_t H5E_BADATOM_g = FAIL; /* Unable to find atom information (already closed?) */ +hid_t H5E_BADGROUP_g = FAIL; /* Unable to find ID group information */ +hid_t H5E_CANTREGISTER_g = FAIL; /* Unable to register new atom */ +hid_t H5E_CANTINC_g = FAIL; /* Unable to increment reference count */ +hid_t H5E_CANTDEC_g = FAIL; /* Unable to decrement reference count */ +hid_t H5E_NOIDS_g = FAIL; /* Out of IDs for group */ + +/* Cache related errors */ +hid_t H5E_CANTFLUSH_g = FAIL; /* Unable to flush data from cache */ +hid_t H5E_CANTSERIALIZE_g = FAIL; /* Unable to serialize data from cache */ +hid_t H5E_CANTLOAD_g = FAIL; /* Unable to load metadata into cache */ +hid_t H5E_PROTECT_g = FAIL; /* Protected metadata error */ +hid_t H5E_NOTCACHED_g = FAIL; /* Metadata not currently cached */ +hid_t H5E_SYSTEM_g = FAIL; /* Internal error detected */ +hid_t H5E_CANTINS_g = FAIL; /* Unable to insert metadata into cache */ +hid_t H5E_CANTPROTECT_g = FAIL; /* Unable to protect metadata */ +hid_t H5E_CANTUNPROTECT_g = FAIL; /* Unable to unprotect metadata */ +hid_t H5E_CANTPIN_g = FAIL; /* Unable to pin cache entry */ +hid_t H5E_CANTUNPIN_g = FAIL; /* Unable to un-pin cache entry */ +hid_t H5E_CANTMARKDIRTY_g = FAIL; /* Unable to mark a pinned entry as dirty */ +hid_t H5E_CANTDIRTY_g = FAIL; /* Unable to mark metadata as dirty */ +hid_t H5E_CANTEXPUNGE_g = FAIL; /* Unable to expunge a metadata cache entry */ +hid_t H5E_CANTRESIZE_g = FAIL; /* Unable to resize a metadata cache entry */ + +/* Link related errors */ +hid_t H5E_TRAVERSE_g = FAIL; /* Link traversal failure */ +hid_t H5E_NLINKS_g = FAIL; /* Too many soft links in path */ +hid_t H5E_NOTREGISTERED_g = FAIL; /* Link class not registered */ +hid_t H5E_CANTMOVE_g = FAIL; /* Can't move object */ +hid_t H5E_CANTSORT_g = FAIL; /* Can't sort objects */ + +/* Parallel MPI errors */ +hid_t H5E_MPI_g = FAIL; /* Some MPI function failed */ +hid_t H5E_MPIERRSTR_g = FAIL; /* MPI Error String */ +hid_t H5E_CANTRECV_g = FAIL; /* Can't receive data */ + +/* Dataspace errors */ +hid_t H5E_CANTCLIP_g = FAIL; /* Can't clip hyperslab region */ +hid_t H5E_CANTCOUNT_g = FAIL; /* Can't count elements */ +hid_t H5E_CANTSELECT_g = FAIL; /* Can't select hyperslab */ +hid_t H5E_CANTNEXT_g = FAIL; /* Can't move to next iterator location */ +hid_t H5E_BADSELECT_g = FAIL; /* Invalid selection */ +hid_t H5E_CANTCOMPARE_g = FAIL; /* Can't compare objects */ + +/* Argument errors */ +hid_t H5E_UNINITIALIZED_g = FAIL; /* Information is uinitialized */ +hid_t H5E_UNSUPPORTED_g = FAIL; /* Feature is unsupported */ +hid_t H5E_BADTYPE_g = FAIL; /* Inappropriate type */ +hid_t H5E_BADRANGE_g = FAIL; /* Out of range */ +hid_t H5E_BADVALUE_g = FAIL; /* Bad value */ + +/* B-tree related errors */ +hid_t H5E_NOTFOUND_g = FAIL; /* Object not found */ +hid_t H5E_EXISTS_g = FAIL; /* Object already exists */ +hid_t H5E_CANTENCODE_g = FAIL; /* Unable to encode value */ +hid_t H5E_CANTDECODE_g = FAIL; /* Unable to decode value */ +hid_t H5E_CANTSPLIT_g = FAIL; /* Unable to split node */ +hid_t H5E_CANTREDISTRIBUTE_g = FAIL; /* Unable to redistribute records */ +hid_t H5E_CANTSWAP_g = FAIL; /* Unable to swap records */ +hid_t H5E_CANTINSERT_g = FAIL; /* Unable to insert object */ +hid_t H5E_CANTLIST_g = FAIL; /* Unable to list node */ +hid_t H5E_CANTMODIFY_g = FAIL; /* Unable to modify record */ +hid_t H5E_CANTREMOVE_g = FAIL; /* Unable to remove object */ + +/* Datatype conversion errors */ +hid_t H5E_CANTCONVERT_g = FAIL; /* Can't convert datatypes */ +hid_t H5E_BADSIZE_g = FAIL; /* Bad size for object */ + +#endif /* H5Edefin_H */ diff --git a/Resources/windows-libs/HDF5/include/H5Einit.h b/Resources/windows-libs/HDF5/include/H5Einit.h new file mode 100644 index 0000000000000000000000000000000000000000..9dadd4186c4ac97ee14a77d20655bdb3de21d458 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Einit.h @@ -0,0 +1,810 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* Generated automatically by bin/make_err -- do not edit */ +/* Add new errors to H5err.txt file */ + + +#ifndef _H5Einit_H +#define _H5Einit_H + +/*********************/ +/* Major error codes */ +/*********************/ + +assert(H5E_DATASET_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Dataset"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_DATASET_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_FUNC_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Function entry/exit"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_FUNC_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_STORAGE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Data storage"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_STORAGE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_FILE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "File accessibilty"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_FILE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_SOHM_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Shared Object Header Messages"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_SOHM_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_SYM_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Symbol table"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_SYM_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_PLUGIN_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Plugin for dynamically loaded library"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_PLUGIN_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_VFL_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Virtual File Layer"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_VFL_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_INTERNAL_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Internal error (too specific to document in detail)"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_INTERNAL_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_BTREE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "B-Tree node"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_BTREE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_REFERENCE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "References"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_REFERENCE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_DATASPACE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Dataspace"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_DATASPACE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_RESOURCE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Resource unavailable"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_RESOURCE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_PLIST_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Property lists"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_PLIST_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_LINK_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Links"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_LINK_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_DATATYPE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Datatype"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_DATATYPE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_RS_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Reference Counted Strings"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_RS_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_HEAP_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Heap"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_HEAP_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_OHDR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Object header"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_OHDR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_ATOM_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Object atom"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_ATOM_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_ATTR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Attribute"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_ATTR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_NONE_MAJOR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "No error"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_NONE_MAJOR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_IO_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Low-level I/O"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_IO_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_SLIST_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Skip Lists"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_SLIST_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_EFL_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "External file list"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_EFL_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_TST_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Ternary Search Trees"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_TST_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_ARGS_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Invalid arguments to routine"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_ARGS_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_ERROR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Error API"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_ERROR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_PLINE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Data filters"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_PLINE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_FSPACE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Free Space Manager"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_FSPACE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CACHE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MAJOR, "Object cache"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CACHE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/*********************/ +/* Minor error codes */ +/*********************/ + + +/* Generic low-level file I/O errors */ +assert(H5E_SEEKERROR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Seek failed"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_SEEKERROR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_READERROR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Read failed"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_READERROR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_WRITEERROR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Write failed"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_WRITEERROR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CLOSEERROR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Close failed"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CLOSEERROR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_OVERFLOW_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Address overflowed"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_OVERFLOW_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_FCNTL_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "File control (fcntl) failed"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_FCNTL_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Resource errors */ +assert(H5E_NOSPACE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "No space available for allocation"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_NOSPACE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTALLOC_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't allocate space"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTALLOC_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTCOPY_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to copy object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTCOPY_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTFREE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to free object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTFREE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_ALREADYEXISTS_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Object already exists"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_ALREADYEXISTS_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTLOCK_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to lock object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTLOCK_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTUNLOCK_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to unlock object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTUNLOCK_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTGC_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to garbage collect"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTGC_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTGETSIZE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to compute size"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTGETSIZE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_OBJOPEN_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Object is already open"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_OBJOPEN_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Heap errors */ +assert(H5E_CANTRESTORE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't restore condition"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTRESTORE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTCOMPUTE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't compute value"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTCOMPUTE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTEXTEND_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't extend heap's space"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTEXTEND_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTATTACH_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't attach object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTATTACH_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTUPDATE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't update object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTUPDATE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTOPERATE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't operate on object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTOPERATE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Function entry/exit interface errors */ +assert(H5E_CANTINIT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to initialize object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTINIT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_ALREADYINIT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Object already initialized"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_ALREADYINIT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTRELEASE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to release object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTRELEASE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Property list errors */ +assert(H5E_CANTGET_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't get value"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTGET_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTSET_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't set value"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTSET_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_DUPCLASS_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Duplicate class name in parent class"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_DUPCLASS_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_SETDISALLOWED_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Disallowed operation"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_SETDISALLOWED_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Free space errors */ +assert(H5E_CANTMERGE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't merge objects"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTMERGE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTREVIVE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't revive object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTREVIVE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTSHRINK_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't shrink container"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTSHRINK_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Object header related errors */ +assert(H5E_LINKCOUNT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Bad object header link count"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_LINKCOUNT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_VERSION_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Wrong version number"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_VERSION_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_ALIGNMENT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Alignment error"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_ALIGNMENT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_BADMESG_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unrecognized message"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_BADMESG_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTDELETE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't delete message"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTDELETE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_BADITER_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Iteration failed"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_BADITER_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTPACK_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't pack messages"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTPACK_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTRESET_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't reset object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTRESET_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTRENAME_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to rename object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTRENAME_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* System level errors */ +assert(H5E_SYSERRSTR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "System error message"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_SYSERRSTR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* I/O pipeline errors */ +assert(H5E_NOFILTER_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Requested filter is not available"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_NOFILTER_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CALLBACK_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Callback failed"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CALLBACK_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANAPPLY_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Error from filter 'can apply' callback"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANAPPLY_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_SETLOCAL_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Error from filter 'set local' callback"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_SETLOCAL_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_NOENCODER_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Filter present but encoding disabled"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_NOENCODER_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTFILTER_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Filter operation failed"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTFILTER_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Group related errors */ +assert(H5E_CANTOPENOBJ_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't open object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTOPENOBJ_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTCLOSEOBJ_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't close object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTCLOSEOBJ_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_COMPLEN_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Name component is too long"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_COMPLEN_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_PATH_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Problem with path to object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_PATH_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* No error */ +assert(H5E_NONE_MINOR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "No error"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_NONE_MINOR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Plugin errors */ +assert(H5E_OPENERROR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't open directory or file"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_OPENERROR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* File accessibilty errors */ +assert(H5E_FILEEXISTS_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "File already exists"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_FILEEXISTS_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_FILEOPEN_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "File already open"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_FILEOPEN_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTCREATE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to create file"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTCREATE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTOPENFILE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to open file"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTOPENFILE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTCLOSEFILE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to close file"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTCLOSEFILE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_NOTHDF5_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Not an HDF5 file"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_NOTHDF5_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_BADFILE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Bad file ID accessed"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_BADFILE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_TRUNCATED_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "File has been truncated"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_TRUNCATED_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_MOUNT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "File mount error"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_MOUNT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Object atom related errors */ +assert(H5E_BADATOM_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to find atom information (already closed?)"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_BADATOM_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_BADGROUP_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to find ID group information"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_BADGROUP_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTREGISTER_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to register new atom"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTREGISTER_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTINC_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to increment reference count"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTINC_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTDEC_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to decrement reference count"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTDEC_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_NOIDS_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Out of IDs for group"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_NOIDS_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Cache related errors */ +assert(H5E_CANTFLUSH_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to flush data from cache"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTFLUSH_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTSERIALIZE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to serialize data from cache"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTSERIALIZE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTLOAD_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to load metadata into cache"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTLOAD_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_PROTECT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Protected metadata error"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_PROTECT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_NOTCACHED_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Metadata not currently cached"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_NOTCACHED_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_SYSTEM_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Internal error detected"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_SYSTEM_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTINS_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to insert metadata into cache"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTINS_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTPROTECT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to protect metadata"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTPROTECT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTUNPROTECT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to unprotect metadata"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTUNPROTECT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTPIN_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to pin cache entry"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTPIN_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTUNPIN_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to un-pin cache entry"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTUNPIN_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTMARKDIRTY_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to mark a pinned entry as dirty"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTMARKDIRTY_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTDIRTY_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to mark metadata as dirty"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTDIRTY_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTEXPUNGE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to expunge a metadata cache entry"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTEXPUNGE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTRESIZE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to resize a metadata cache entry"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTRESIZE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Link related errors */ +assert(H5E_TRAVERSE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Link traversal failure"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_TRAVERSE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_NLINKS_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Too many soft links in path"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_NLINKS_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_NOTREGISTERED_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Link class not registered"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_NOTREGISTERED_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTMOVE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't move object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTMOVE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTSORT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't sort objects"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTSORT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Parallel MPI errors */ +assert(H5E_MPI_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Some MPI function failed"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_MPI_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_MPIERRSTR_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "MPI Error String"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_MPIERRSTR_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTRECV_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't receive data"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTRECV_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Dataspace errors */ +assert(H5E_CANTCLIP_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't clip hyperslab region"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTCLIP_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTCOUNT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't count elements"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTCOUNT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTSELECT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't select hyperslab"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTSELECT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTNEXT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't move to next iterator location"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTNEXT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_BADSELECT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Invalid selection"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_BADSELECT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTCOMPARE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't compare objects"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTCOMPARE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Argument errors */ +assert(H5E_UNINITIALIZED_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Information is uinitialized"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_UNINITIALIZED_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_UNSUPPORTED_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Feature is unsupported"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_UNSUPPORTED_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_BADTYPE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Inappropriate type"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_BADTYPE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_BADRANGE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Out of range"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_BADRANGE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_BADVALUE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Bad value"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_BADVALUE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* B-tree related errors */ +assert(H5E_NOTFOUND_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Object not found"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_NOTFOUND_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_EXISTS_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Object already exists"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_EXISTS_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTENCODE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to encode value"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTENCODE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTDECODE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to decode value"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTDECODE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTSPLIT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to split node"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTSPLIT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTREDISTRIBUTE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to redistribute records"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTREDISTRIBUTE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTSWAP_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to swap records"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTSWAP_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTINSERT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to insert object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTINSERT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTLIST_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to list node"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTLIST_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTMODIFY_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to modify record"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTMODIFY_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_CANTREMOVE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Unable to remove object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTREMOVE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +/* Datatype conversion errors */ +assert(H5E_CANTCONVERT_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Can't convert datatypes"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_CANTCONVERT_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") +assert(H5E_BADSIZE_g==(-1)); +if((msg = H5E_create_msg(cls, H5E_MINOR, "Bad size for object"))==NULL) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "error message initialization failed") +if((H5E_BADSIZE_g = H5I_register(H5I_ERROR_MSG, msg, FALSE))<0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error message") + +#endif /* H5Einit_H */ diff --git a/Resources/windows-libs/HDF5/include/H5EnumType.h b/Resources/windows-libs/HDF5/include/H5EnumType.h new file mode 100644 index 0000000000000000000000000000000000000000..fe36e8b5ba715687866e112e6c555e05a33fef95 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5EnumType.h @@ -0,0 +1,78 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5EnumType_H +#define __H5EnumType_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +//! Class EnumType operates on HDF5 enum datatypes. +class H5_DLLCPP EnumType : public DataType { + + public: + // Creates an empty enumeration datatype based on a native signed + // integer type, whose size is given by size. + EnumType( size_t size ); + + // Gets the enum datatype of the specified dataset + EnumType( const DataSet& dataset ); // H5Dget_type + + // Creates a new enum datatype based on an integer datatype + EnumType( const IntType& data_type ); // H5Tenum_create + + // Returns the number of members in this enumeration datatype. + int getNmembers () const; + + // Returns the index of a member in this enumeration data type. + int getMemberIndex(const char* name) const; + int getMemberIndex(const H5std_string& name) const; + + // Returns the value of an enumeration datatype member + void getMemberValue( unsigned memb_no, void *value ) const; + + // Inserts a new member to this enumeration type. + void insert( const char* name, void *value ) const; + void insert( const H5std_string& name, void *value ) const; + + // Returns the symbol name corresponding to a specified member + // of this enumeration datatype. + H5std_string nameOf( void *value, size_t size ) const; + + // Returns the value corresponding to a specified member of this + // enumeration datatype. + void valueOf( const char* name, void *value ) const; + void valueOf( const H5std_string& name, void *value ) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("EnumType"); } + + // Default constructor + EnumType(); + + // Creates an enumeration datatype using an existing id + EnumType( const hid_t existing_id ); + + // Copy constructor: makes a copy of the original EnumType object. + EnumType( const EnumType& original ); + + virtual ~EnumType(); +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5EnumType_H diff --git a/Resources/windows-libs/HDF5/include/H5Epkg.h b/Resources/windows-libs/HDF5/include/H5Epkg.h new file mode 100644 index 0000000000000000000000000000000000000000..bfaaf9dc243055b993cf2b62879a04ed073e0751 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Epkg.h @@ -0,0 +1,151 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@hdfgroup.org> + * Wednesday, April 11, 2007 + * + * Purpose: This file contains declarations which are visible only within + * the H5E package. Source files outside the H5E package should + * include H5Eprivate.h instead. + */ +#ifndef H5E_PACKAGE +#error "Do not include this file outside the H5E package!" +#endif + +#ifndef _H5Epkg_H +#define _H5Epkg_H + +/* Get package's private header */ +#include "H5Eprivate.h" + +/* Other private headers needed by this file */ + + +/**************************/ +/* Package Private Macros */ +/**************************/ + +/* Amount to indent each error */ +#define H5E_INDENT 2 + +/* Number of slots in an error stack */ +#define H5E_NSLOTS 32 + +#ifdef H5_HAVE_THREADSAFE +/* + * The per-thread error stack. pthread_once() initializes a special + * key that will be used by all threads to create a stack specific to + * each thread individually. The association of stacks to threads will + * be handled by the pthread library. + * + * In order for this macro to work, H5E_get_my_stack() must be preceeded + * by "H5E_t *estack =". + */ +#define H5E_get_my_stack() H5E_get_stack() +#else /* H5_HAVE_THREADSAFE */ +/* + * The current error stack. + */ +#define H5E_get_my_stack() (H5E_stack_g + 0) +#endif /* H5_HAVE_THREADSAFE */ + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +/* Some syntactic sugar to make the compiler happy with two different kinds of callbacks */ +#ifndef H5_NO_DEPRECATED_SYMBOLS +typedef struct { + unsigned vers; /* Which version callback to use */ + hbool_t is_default; /* If the printing function is the library's own. */ + H5E_auto1_t func1; /* Old-style callback, NO error stack param. */ + H5E_auto2_t func2; /* New-style callback, with error stack param. */ + H5E_auto1_t func1_default; /* The saved library's default function - old style. */ + H5E_auto2_t func2_default; /* The saved library's default function - new style. */ +} H5E_auto_op_t; +#else /* H5_NO_DEPRECATED_SYMBOLS */ +typedef struct { + H5E_auto_t func2; /* Only the new style callback function is available. */ +} H5E_auto_op_t; +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +/* Some syntactic sugar to make the compiler happy with two different kinds of callbacks */ +typedef struct { + unsigned vers; /* Which version callback to use */ + union { +#ifndef H5_NO_DEPRECATED_SYMBOLS + H5E_walk1_t func1; /* Old-style callback, NO error stack param. */ +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + H5E_walk2_t func2; /* New-style callback, with error stack param. */ + }u; +} H5E_walk_op_t; + +/* Error class */ +typedef struct H5E_cls_t { + char *cls_name; /* Name of error class */ + char *lib_name; /* Name of library within class */ + char *lib_vers; /* Version of library */ +} H5E_cls_t; + +/* Major or minor message */ +typedef struct H5E_msg_t { + char *msg; /* Message for error */ + H5E_type_t type; /* Type of error (major or minor) */ + H5E_cls_t *cls; /* Which error class this message belongs to */ +} H5E_msg_t; + +/* Error stack */ +struct H5E_t { + size_t nused; /* Num slots currently used in stack */ + H5E_error2_t slot[H5E_NSLOTS]; /* Array of error records */ + H5E_auto_op_t auto_op; /* Operator for 'automatic' error reporting */ + void *auto_data; /* Callback data for 'automatic error reporting */ +}; + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + +#ifndef H5_HAVE_THREADSAFE +/* + * The current error stack. + */ +H5_DLLVAR H5E_t H5E_stack_g[1]; +#endif /* H5_HAVE_THREADSAFE */ + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ +H5_DLL herr_t H5E__term_deprec_interface(void); +#ifdef H5_HAVE_THREADSAFE +H5_DLL H5E_t *H5E_get_stack(void); +#endif /* H5_HAVE_THREADSAFE */ +H5_DLL ssize_t H5E_get_msg(const H5E_msg_t *msg_ptr, H5E_type_t *type, + char *msg, size_t size); +H5_DLL herr_t H5E_print(const H5E_t *estack, FILE *stream, hbool_t bk_compat); +H5_DLL herr_t H5E_walk(const H5E_t *estack, H5E_direction_t direction, + const H5E_walk_op_t *op, void *client_data); +H5_DLL herr_t H5E_get_auto(const H5E_t *estack, H5E_auto_op_t *op, + void **client_data); +H5_DLL herr_t H5E_set_auto(H5E_t *estack, const H5E_auto_op_t *op, + void *client_data); +H5_DLL herr_t H5E_pop(H5E_t *err_stack, size_t count); + +#endif /* _H5Epkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Epubgen.h b/Resources/windows-libs/HDF5/include/H5Epubgen.h new file mode 100644 index 0000000000000000000000000000000000000000..75eca0b99f0149acc9ca5369426cd6c324f1decf --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Epubgen.h @@ -0,0 +1,368 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* Generated automatically by bin/make_err -- do not edit */ +/* Add new errors to H5err.txt file */ + + +#ifndef _H5Epubgen_H +#define _H5Epubgen_H + +/*********************/ +/* Major error codes */ +/*********************/ + +#define H5E_DATASET (H5OPEN H5E_DATASET_g) +#define H5E_FUNC (H5OPEN H5E_FUNC_g) +#define H5E_STORAGE (H5OPEN H5E_STORAGE_g) +#define H5E_FILE (H5OPEN H5E_FILE_g) +#define H5E_SOHM (H5OPEN H5E_SOHM_g) +#define H5E_SYM (H5OPEN H5E_SYM_g) +#define H5E_PLUGIN (H5OPEN H5E_PLUGIN_g) +#define H5E_VFL (H5OPEN H5E_VFL_g) +#define H5E_INTERNAL (H5OPEN H5E_INTERNAL_g) +#define H5E_BTREE (H5OPEN H5E_BTREE_g) +#define H5E_REFERENCE (H5OPEN H5E_REFERENCE_g) +#define H5E_DATASPACE (H5OPEN H5E_DATASPACE_g) +#define H5E_RESOURCE (H5OPEN H5E_RESOURCE_g) +#define H5E_PLIST (H5OPEN H5E_PLIST_g) +#define H5E_LINK (H5OPEN H5E_LINK_g) +#define H5E_DATATYPE (H5OPEN H5E_DATATYPE_g) +#define H5E_RS (H5OPEN H5E_RS_g) +#define H5E_HEAP (H5OPEN H5E_HEAP_g) +#define H5E_OHDR (H5OPEN H5E_OHDR_g) +#define H5E_ATOM (H5OPEN H5E_ATOM_g) +#define H5E_ATTR (H5OPEN H5E_ATTR_g) +#define H5E_NONE_MAJOR (H5OPEN H5E_NONE_MAJOR_g) +#define H5E_IO (H5OPEN H5E_IO_g) +#define H5E_SLIST (H5OPEN H5E_SLIST_g) +#define H5E_EFL (H5OPEN H5E_EFL_g) +#define H5E_TST (H5OPEN H5E_TST_g) +#define H5E_ARGS (H5OPEN H5E_ARGS_g) +#define H5E_ERROR (H5OPEN H5E_ERROR_g) +#define H5E_PLINE (H5OPEN H5E_PLINE_g) +#define H5E_FSPACE (H5OPEN H5E_FSPACE_g) +#define H5E_CACHE (H5OPEN H5E_CACHE_g) +H5_DLLVAR hid_t H5E_DATASET_g; /* Dataset */ +H5_DLLVAR hid_t H5E_FUNC_g; /* Function entry/exit */ +H5_DLLVAR hid_t H5E_STORAGE_g; /* Data storage */ +H5_DLLVAR hid_t H5E_FILE_g; /* File accessibilty */ +H5_DLLVAR hid_t H5E_SOHM_g; /* Shared Object Header Messages */ +H5_DLLVAR hid_t H5E_SYM_g; /* Symbol table */ +H5_DLLVAR hid_t H5E_PLUGIN_g; /* Plugin for dynamically loaded library */ +H5_DLLVAR hid_t H5E_VFL_g; /* Virtual File Layer */ +H5_DLLVAR hid_t H5E_INTERNAL_g; /* Internal error (too specific to document in detail) */ +H5_DLLVAR hid_t H5E_BTREE_g; /* B-Tree node */ +H5_DLLVAR hid_t H5E_REFERENCE_g; /* References */ +H5_DLLVAR hid_t H5E_DATASPACE_g; /* Dataspace */ +H5_DLLVAR hid_t H5E_RESOURCE_g; /* Resource unavailable */ +H5_DLLVAR hid_t H5E_PLIST_g; /* Property lists */ +H5_DLLVAR hid_t H5E_LINK_g; /* Links */ +H5_DLLVAR hid_t H5E_DATATYPE_g; /* Datatype */ +H5_DLLVAR hid_t H5E_RS_g; /* Reference Counted Strings */ +H5_DLLVAR hid_t H5E_HEAP_g; /* Heap */ +H5_DLLVAR hid_t H5E_OHDR_g; /* Object header */ +H5_DLLVAR hid_t H5E_ATOM_g; /* Object atom */ +H5_DLLVAR hid_t H5E_ATTR_g; /* Attribute */ +H5_DLLVAR hid_t H5E_NONE_MAJOR_g; /* No error */ +H5_DLLVAR hid_t H5E_IO_g; /* Low-level I/O */ +H5_DLLVAR hid_t H5E_SLIST_g; /* Skip Lists */ +H5_DLLVAR hid_t H5E_EFL_g; /* External file list */ +H5_DLLVAR hid_t H5E_TST_g; /* Ternary Search Trees */ +H5_DLLVAR hid_t H5E_ARGS_g; /* Invalid arguments to routine */ +H5_DLLVAR hid_t H5E_ERROR_g; /* Error API */ +H5_DLLVAR hid_t H5E_PLINE_g; /* Data filters */ +H5_DLLVAR hid_t H5E_FSPACE_g; /* Free Space Manager */ +H5_DLLVAR hid_t H5E_CACHE_g; /* Object cache */ + +/*********************/ +/* Minor error codes */ +/*********************/ + +/* Generic low-level file I/O errors */ +#define H5E_SEEKERROR (H5OPEN H5E_SEEKERROR_g) +#define H5E_READERROR (H5OPEN H5E_READERROR_g) +#define H5E_WRITEERROR (H5OPEN H5E_WRITEERROR_g) +#define H5E_CLOSEERROR (H5OPEN H5E_CLOSEERROR_g) +#define H5E_OVERFLOW (H5OPEN H5E_OVERFLOW_g) +#define H5E_FCNTL (H5OPEN H5E_FCNTL_g) +H5_DLLVAR hid_t H5E_SEEKERROR_g; /* Seek failed */ +H5_DLLVAR hid_t H5E_READERROR_g; /* Read failed */ +H5_DLLVAR hid_t H5E_WRITEERROR_g; /* Write failed */ +H5_DLLVAR hid_t H5E_CLOSEERROR_g; /* Close failed */ +H5_DLLVAR hid_t H5E_OVERFLOW_g; /* Address overflowed */ +H5_DLLVAR hid_t H5E_FCNTL_g; /* File control (fcntl) failed */ + +/* Resource errors */ +#define H5E_NOSPACE (H5OPEN H5E_NOSPACE_g) +#define H5E_CANTALLOC (H5OPEN H5E_CANTALLOC_g) +#define H5E_CANTCOPY (H5OPEN H5E_CANTCOPY_g) +#define H5E_CANTFREE (H5OPEN H5E_CANTFREE_g) +#define H5E_ALREADYEXISTS (H5OPEN H5E_ALREADYEXISTS_g) +#define H5E_CANTLOCK (H5OPEN H5E_CANTLOCK_g) +#define H5E_CANTUNLOCK (H5OPEN H5E_CANTUNLOCK_g) +#define H5E_CANTGC (H5OPEN H5E_CANTGC_g) +#define H5E_CANTGETSIZE (H5OPEN H5E_CANTGETSIZE_g) +#define H5E_OBJOPEN (H5OPEN H5E_OBJOPEN_g) +H5_DLLVAR hid_t H5E_NOSPACE_g; /* No space available for allocation */ +H5_DLLVAR hid_t H5E_CANTALLOC_g; /* Can't allocate space */ +H5_DLLVAR hid_t H5E_CANTCOPY_g; /* Unable to copy object */ +H5_DLLVAR hid_t H5E_CANTFREE_g; /* Unable to free object */ +H5_DLLVAR hid_t H5E_ALREADYEXISTS_g; /* Object already exists */ +H5_DLLVAR hid_t H5E_CANTLOCK_g; /* Unable to lock object */ +H5_DLLVAR hid_t H5E_CANTUNLOCK_g; /* Unable to unlock object */ +H5_DLLVAR hid_t H5E_CANTGC_g; /* Unable to garbage collect */ +H5_DLLVAR hid_t H5E_CANTGETSIZE_g; /* Unable to compute size */ +H5_DLLVAR hid_t H5E_OBJOPEN_g; /* Object is already open */ + +/* Heap errors */ +#define H5E_CANTRESTORE (H5OPEN H5E_CANTRESTORE_g) +#define H5E_CANTCOMPUTE (H5OPEN H5E_CANTCOMPUTE_g) +#define H5E_CANTEXTEND (H5OPEN H5E_CANTEXTEND_g) +#define H5E_CANTATTACH (H5OPEN H5E_CANTATTACH_g) +#define H5E_CANTUPDATE (H5OPEN H5E_CANTUPDATE_g) +#define H5E_CANTOPERATE (H5OPEN H5E_CANTOPERATE_g) +H5_DLLVAR hid_t H5E_CANTRESTORE_g; /* Can't restore condition */ +H5_DLLVAR hid_t H5E_CANTCOMPUTE_g; /* Can't compute value */ +H5_DLLVAR hid_t H5E_CANTEXTEND_g; /* Can't extend heap's space */ +H5_DLLVAR hid_t H5E_CANTATTACH_g; /* Can't attach object */ +H5_DLLVAR hid_t H5E_CANTUPDATE_g; /* Can't update object */ +H5_DLLVAR hid_t H5E_CANTOPERATE_g; /* Can't operate on object */ + +/* Function entry/exit interface errors */ +#define H5E_CANTINIT (H5OPEN H5E_CANTINIT_g) +#define H5E_ALREADYINIT (H5OPEN H5E_ALREADYINIT_g) +#define H5E_CANTRELEASE (H5OPEN H5E_CANTRELEASE_g) +H5_DLLVAR hid_t H5E_CANTINIT_g; /* Unable to initialize object */ +H5_DLLVAR hid_t H5E_ALREADYINIT_g; /* Object already initialized */ +H5_DLLVAR hid_t H5E_CANTRELEASE_g; /* Unable to release object */ + +/* Property list errors */ +#define H5E_CANTGET (H5OPEN H5E_CANTGET_g) +#define H5E_CANTSET (H5OPEN H5E_CANTSET_g) +#define H5E_DUPCLASS (H5OPEN H5E_DUPCLASS_g) +#define H5E_SETDISALLOWED (H5OPEN H5E_SETDISALLOWED_g) +H5_DLLVAR hid_t H5E_CANTGET_g; /* Can't get value */ +H5_DLLVAR hid_t H5E_CANTSET_g; /* Can't set value */ +H5_DLLVAR hid_t H5E_DUPCLASS_g; /* Duplicate class name in parent class */ +H5_DLLVAR hid_t H5E_SETDISALLOWED_g; /* Disallowed operation */ + +/* Free space errors */ +#define H5E_CANTMERGE (H5OPEN H5E_CANTMERGE_g) +#define H5E_CANTREVIVE (H5OPEN H5E_CANTREVIVE_g) +#define H5E_CANTSHRINK (H5OPEN H5E_CANTSHRINK_g) +H5_DLLVAR hid_t H5E_CANTMERGE_g; /* Can't merge objects */ +H5_DLLVAR hid_t H5E_CANTREVIVE_g; /* Can't revive object */ +H5_DLLVAR hid_t H5E_CANTSHRINK_g; /* Can't shrink container */ + +/* Object header related errors */ +#define H5E_LINKCOUNT (H5OPEN H5E_LINKCOUNT_g) +#define H5E_VERSION (H5OPEN H5E_VERSION_g) +#define H5E_ALIGNMENT (H5OPEN H5E_ALIGNMENT_g) +#define H5E_BADMESG (H5OPEN H5E_BADMESG_g) +#define H5E_CANTDELETE (H5OPEN H5E_CANTDELETE_g) +#define H5E_BADITER (H5OPEN H5E_BADITER_g) +#define H5E_CANTPACK (H5OPEN H5E_CANTPACK_g) +#define H5E_CANTRESET (H5OPEN H5E_CANTRESET_g) +#define H5E_CANTRENAME (H5OPEN H5E_CANTRENAME_g) +H5_DLLVAR hid_t H5E_LINKCOUNT_g; /* Bad object header link count */ +H5_DLLVAR hid_t H5E_VERSION_g; /* Wrong version number */ +H5_DLLVAR hid_t H5E_ALIGNMENT_g; /* Alignment error */ +H5_DLLVAR hid_t H5E_BADMESG_g; /* Unrecognized message */ +H5_DLLVAR hid_t H5E_CANTDELETE_g; /* Can't delete message */ +H5_DLLVAR hid_t H5E_BADITER_g; /* Iteration failed */ +H5_DLLVAR hid_t H5E_CANTPACK_g; /* Can't pack messages */ +H5_DLLVAR hid_t H5E_CANTRESET_g; /* Can't reset object */ +H5_DLLVAR hid_t H5E_CANTRENAME_g; /* Unable to rename object */ + +/* System level errors */ +#define H5E_SYSERRSTR (H5OPEN H5E_SYSERRSTR_g) +H5_DLLVAR hid_t H5E_SYSERRSTR_g; /* System error message */ + +/* I/O pipeline errors */ +#define H5E_NOFILTER (H5OPEN H5E_NOFILTER_g) +#define H5E_CALLBACK (H5OPEN H5E_CALLBACK_g) +#define H5E_CANAPPLY (H5OPEN H5E_CANAPPLY_g) +#define H5E_SETLOCAL (H5OPEN H5E_SETLOCAL_g) +#define H5E_NOENCODER (H5OPEN H5E_NOENCODER_g) +#define H5E_CANTFILTER (H5OPEN H5E_CANTFILTER_g) +H5_DLLVAR hid_t H5E_NOFILTER_g; /* Requested filter is not available */ +H5_DLLVAR hid_t H5E_CALLBACK_g; /* Callback failed */ +H5_DLLVAR hid_t H5E_CANAPPLY_g; /* Error from filter 'can apply' callback */ +H5_DLLVAR hid_t H5E_SETLOCAL_g; /* Error from filter 'set local' callback */ +H5_DLLVAR hid_t H5E_NOENCODER_g; /* Filter present but encoding disabled */ +H5_DLLVAR hid_t H5E_CANTFILTER_g; /* Filter operation failed */ + +/* Group related errors */ +#define H5E_CANTOPENOBJ (H5OPEN H5E_CANTOPENOBJ_g) +#define H5E_CANTCLOSEOBJ (H5OPEN H5E_CANTCLOSEOBJ_g) +#define H5E_COMPLEN (H5OPEN H5E_COMPLEN_g) +#define H5E_PATH (H5OPEN H5E_PATH_g) +H5_DLLVAR hid_t H5E_CANTOPENOBJ_g; /* Can't open object */ +H5_DLLVAR hid_t H5E_CANTCLOSEOBJ_g; /* Can't close object */ +H5_DLLVAR hid_t H5E_COMPLEN_g; /* Name component is too long */ +H5_DLLVAR hid_t H5E_PATH_g; /* Problem with path to object */ + +/* No error */ +#define H5E_NONE_MINOR (H5OPEN H5E_NONE_MINOR_g) +H5_DLLVAR hid_t H5E_NONE_MINOR_g; /* No error */ + +/* Plugin errors */ +#define H5E_OPENERROR (H5OPEN H5E_OPENERROR_g) +H5_DLLVAR hid_t H5E_OPENERROR_g; /* Can't open directory or file */ + +/* File accessibilty errors */ +#define H5E_FILEEXISTS (H5OPEN H5E_FILEEXISTS_g) +#define H5E_FILEOPEN (H5OPEN H5E_FILEOPEN_g) +#define H5E_CANTCREATE (H5OPEN H5E_CANTCREATE_g) +#define H5E_CANTOPENFILE (H5OPEN H5E_CANTOPENFILE_g) +#define H5E_CANTCLOSEFILE (H5OPEN H5E_CANTCLOSEFILE_g) +#define H5E_NOTHDF5 (H5OPEN H5E_NOTHDF5_g) +#define H5E_BADFILE (H5OPEN H5E_BADFILE_g) +#define H5E_TRUNCATED (H5OPEN H5E_TRUNCATED_g) +#define H5E_MOUNT (H5OPEN H5E_MOUNT_g) +H5_DLLVAR hid_t H5E_FILEEXISTS_g; /* File already exists */ +H5_DLLVAR hid_t H5E_FILEOPEN_g; /* File already open */ +H5_DLLVAR hid_t H5E_CANTCREATE_g; /* Unable to create file */ +H5_DLLVAR hid_t H5E_CANTOPENFILE_g; /* Unable to open file */ +H5_DLLVAR hid_t H5E_CANTCLOSEFILE_g; /* Unable to close file */ +H5_DLLVAR hid_t H5E_NOTHDF5_g; /* Not an HDF5 file */ +H5_DLLVAR hid_t H5E_BADFILE_g; /* Bad file ID accessed */ +H5_DLLVAR hid_t H5E_TRUNCATED_g; /* File has been truncated */ +H5_DLLVAR hid_t H5E_MOUNT_g; /* File mount error */ + +/* Object atom related errors */ +#define H5E_BADATOM (H5OPEN H5E_BADATOM_g) +#define H5E_BADGROUP (H5OPEN H5E_BADGROUP_g) +#define H5E_CANTREGISTER (H5OPEN H5E_CANTREGISTER_g) +#define H5E_CANTINC (H5OPEN H5E_CANTINC_g) +#define H5E_CANTDEC (H5OPEN H5E_CANTDEC_g) +#define H5E_NOIDS (H5OPEN H5E_NOIDS_g) +H5_DLLVAR hid_t H5E_BADATOM_g; /* Unable to find atom information (already closed?) */ +H5_DLLVAR hid_t H5E_BADGROUP_g; /* Unable to find ID group information */ +H5_DLLVAR hid_t H5E_CANTREGISTER_g; /* Unable to register new atom */ +H5_DLLVAR hid_t H5E_CANTINC_g; /* Unable to increment reference count */ +H5_DLLVAR hid_t H5E_CANTDEC_g; /* Unable to decrement reference count */ +H5_DLLVAR hid_t H5E_NOIDS_g; /* Out of IDs for group */ + +/* Cache related errors */ +#define H5E_CANTFLUSH (H5OPEN H5E_CANTFLUSH_g) +#define H5E_CANTSERIALIZE (H5OPEN H5E_CANTSERIALIZE_g) +#define H5E_CANTLOAD (H5OPEN H5E_CANTLOAD_g) +#define H5E_PROTECT (H5OPEN H5E_PROTECT_g) +#define H5E_NOTCACHED (H5OPEN H5E_NOTCACHED_g) +#define H5E_SYSTEM (H5OPEN H5E_SYSTEM_g) +#define H5E_CANTINS (H5OPEN H5E_CANTINS_g) +#define H5E_CANTPROTECT (H5OPEN H5E_CANTPROTECT_g) +#define H5E_CANTUNPROTECT (H5OPEN H5E_CANTUNPROTECT_g) +#define H5E_CANTPIN (H5OPEN H5E_CANTPIN_g) +#define H5E_CANTUNPIN (H5OPEN H5E_CANTUNPIN_g) +#define H5E_CANTMARKDIRTY (H5OPEN H5E_CANTMARKDIRTY_g) +#define H5E_CANTDIRTY (H5OPEN H5E_CANTDIRTY_g) +#define H5E_CANTEXPUNGE (H5OPEN H5E_CANTEXPUNGE_g) +#define H5E_CANTRESIZE (H5OPEN H5E_CANTRESIZE_g) +H5_DLLVAR hid_t H5E_CANTFLUSH_g; /* Unable to flush data from cache */ +H5_DLLVAR hid_t H5E_CANTSERIALIZE_g; /* Unable to serialize data from cache */ +H5_DLLVAR hid_t H5E_CANTLOAD_g; /* Unable to load metadata into cache */ +H5_DLLVAR hid_t H5E_PROTECT_g; /* Protected metadata error */ +H5_DLLVAR hid_t H5E_NOTCACHED_g; /* Metadata not currently cached */ +H5_DLLVAR hid_t H5E_SYSTEM_g; /* Internal error detected */ +H5_DLLVAR hid_t H5E_CANTINS_g; /* Unable to insert metadata into cache */ +H5_DLLVAR hid_t H5E_CANTPROTECT_g; /* Unable to protect metadata */ +H5_DLLVAR hid_t H5E_CANTUNPROTECT_g; /* Unable to unprotect metadata */ +H5_DLLVAR hid_t H5E_CANTPIN_g; /* Unable to pin cache entry */ +H5_DLLVAR hid_t H5E_CANTUNPIN_g; /* Unable to un-pin cache entry */ +H5_DLLVAR hid_t H5E_CANTMARKDIRTY_g; /* Unable to mark a pinned entry as dirty */ +H5_DLLVAR hid_t H5E_CANTDIRTY_g; /* Unable to mark metadata as dirty */ +H5_DLLVAR hid_t H5E_CANTEXPUNGE_g; /* Unable to expunge a metadata cache entry */ +H5_DLLVAR hid_t H5E_CANTRESIZE_g; /* Unable to resize a metadata cache entry */ + +/* Link related errors */ +#define H5E_TRAVERSE (H5OPEN H5E_TRAVERSE_g) +#define H5E_NLINKS (H5OPEN H5E_NLINKS_g) +#define H5E_NOTREGISTERED (H5OPEN H5E_NOTREGISTERED_g) +#define H5E_CANTMOVE (H5OPEN H5E_CANTMOVE_g) +#define H5E_CANTSORT (H5OPEN H5E_CANTSORT_g) +H5_DLLVAR hid_t H5E_TRAVERSE_g; /* Link traversal failure */ +H5_DLLVAR hid_t H5E_NLINKS_g; /* Too many soft links in path */ +H5_DLLVAR hid_t H5E_NOTREGISTERED_g; /* Link class not registered */ +H5_DLLVAR hid_t H5E_CANTMOVE_g; /* Can't move object */ +H5_DLLVAR hid_t H5E_CANTSORT_g; /* Can't sort objects */ + +/* Parallel MPI errors */ +#define H5E_MPI (H5OPEN H5E_MPI_g) +#define H5E_MPIERRSTR (H5OPEN H5E_MPIERRSTR_g) +#define H5E_CANTRECV (H5OPEN H5E_CANTRECV_g) +H5_DLLVAR hid_t H5E_MPI_g; /* Some MPI function failed */ +H5_DLLVAR hid_t H5E_MPIERRSTR_g; /* MPI Error String */ +H5_DLLVAR hid_t H5E_CANTRECV_g; /* Can't receive data */ + +/* Dataspace errors */ +#define H5E_CANTCLIP (H5OPEN H5E_CANTCLIP_g) +#define H5E_CANTCOUNT (H5OPEN H5E_CANTCOUNT_g) +#define H5E_CANTSELECT (H5OPEN H5E_CANTSELECT_g) +#define H5E_CANTNEXT (H5OPEN H5E_CANTNEXT_g) +#define H5E_BADSELECT (H5OPEN H5E_BADSELECT_g) +#define H5E_CANTCOMPARE (H5OPEN H5E_CANTCOMPARE_g) +H5_DLLVAR hid_t H5E_CANTCLIP_g; /* Can't clip hyperslab region */ +H5_DLLVAR hid_t H5E_CANTCOUNT_g; /* Can't count elements */ +H5_DLLVAR hid_t H5E_CANTSELECT_g; /* Can't select hyperslab */ +H5_DLLVAR hid_t H5E_CANTNEXT_g; /* Can't move to next iterator location */ +H5_DLLVAR hid_t H5E_BADSELECT_g; /* Invalid selection */ +H5_DLLVAR hid_t H5E_CANTCOMPARE_g; /* Can't compare objects */ + +/* Argument errors */ +#define H5E_UNINITIALIZED (H5OPEN H5E_UNINITIALIZED_g) +#define H5E_UNSUPPORTED (H5OPEN H5E_UNSUPPORTED_g) +#define H5E_BADTYPE (H5OPEN H5E_BADTYPE_g) +#define H5E_BADRANGE (H5OPEN H5E_BADRANGE_g) +#define H5E_BADVALUE (H5OPEN H5E_BADVALUE_g) +H5_DLLVAR hid_t H5E_UNINITIALIZED_g; /* Information is uinitialized */ +H5_DLLVAR hid_t H5E_UNSUPPORTED_g; /* Feature is unsupported */ +H5_DLLVAR hid_t H5E_BADTYPE_g; /* Inappropriate type */ +H5_DLLVAR hid_t H5E_BADRANGE_g; /* Out of range */ +H5_DLLVAR hid_t H5E_BADVALUE_g; /* Bad value */ + +/* B-tree related errors */ +#define H5E_NOTFOUND (H5OPEN H5E_NOTFOUND_g) +#define H5E_EXISTS (H5OPEN H5E_EXISTS_g) +#define H5E_CANTENCODE (H5OPEN H5E_CANTENCODE_g) +#define H5E_CANTDECODE (H5OPEN H5E_CANTDECODE_g) +#define H5E_CANTSPLIT (H5OPEN H5E_CANTSPLIT_g) +#define H5E_CANTREDISTRIBUTE (H5OPEN H5E_CANTREDISTRIBUTE_g) +#define H5E_CANTSWAP (H5OPEN H5E_CANTSWAP_g) +#define H5E_CANTINSERT (H5OPEN H5E_CANTINSERT_g) +#define H5E_CANTLIST (H5OPEN H5E_CANTLIST_g) +#define H5E_CANTMODIFY (H5OPEN H5E_CANTMODIFY_g) +#define H5E_CANTREMOVE (H5OPEN H5E_CANTREMOVE_g) +H5_DLLVAR hid_t H5E_NOTFOUND_g; /* Object not found */ +H5_DLLVAR hid_t H5E_EXISTS_g; /* Object already exists */ +H5_DLLVAR hid_t H5E_CANTENCODE_g; /* Unable to encode value */ +H5_DLLVAR hid_t H5E_CANTDECODE_g; /* Unable to decode value */ +H5_DLLVAR hid_t H5E_CANTSPLIT_g; /* Unable to split node */ +H5_DLLVAR hid_t H5E_CANTREDISTRIBUTE_g; /* Unable to redistribute records */ +H5_DLLVAR hid_t H5E_CANTSWAP_g; /* Unable to swap records */ +H5_DLLVAR hid_t H5E_CANTINSERT_g; /* Unable to insert object */ +H5_DLLVAR hid_t H5E_CANTLIST_g; /* Unable to list node */ +H5_DLLVAR hid_t H5E_CANTMODIFY_g; /* Unable to modify record */ +H5_DLLVAR hid_t H5E_CANTREMOVE_g; /* Unable to remove object */ + +/* Datatype conversion errors */ +#define H5E_CANTCONVERT (H5OPEN H5E_CANTCONVERT_g) +#define H5E_BADSIZE (H5OPEN H5E_BADSIZE_g) +H5_DLLVAR hid_t H5E_CANTCONVERT_g; /* Can't convert datatypes */ +H5_DLLVAR hid_t H5E_BADSIZE_g; /* Bad size for object */ + +#endif /* H5Epubgen_H */ diff --git a/Resources/windows-libs/HDF5/include/H5Epublic.h b/Resources/windows-libs/HDF5/include/H5Epublic.h new file mode 100644 index 0000000000000000000000000000000000000000..932b8574b7e473e43fd4111ddcc3086b03234bd5 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Epublic.h @@ -0,0 +1,228 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5E module. + */ +#ifndef _H5Epublic_H +#define _H5Epublic_H + +#include <stdio.h> /*FILE arg of H5Eprint() */ + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Ipublic.h" + +/* Value for the default error stack */ +#define H5E_DEFAULT 0 + +/* Different kinds of error information */ +typedef enum H5E_type_t { + H5E_MAJOR, + H5E_MINOR +} H5E_type_t; + +/* Information about an error; element of error stack */ +typedef struct H5E_error2_t { + hid_t cls_id; /*class ID */ + hid_t maj_num; /*major error ID */ + hid_t min_num; /*minor error number */ + unsigned line; /*line in file where error occurs */ + const char *func_name; /*function in which error occurred */ + const char *file_name; /*file in which error occurred */ + const char *desc; /*optional supplied description */ +} H5E_error2_t; + +/* When this header is included from a private header, don't make calls to H5open() */ +#undef H5OPEN +#ifndef _H5private_H +#define H5OPEN H5open(), +#else /* _H5private_H */ +#define H5OPEN +#endif /* _H5private_H */ + +/* HDF5 error class */ +#define H5E_ERR_CLS (H5OPEN H5E_ERR_CLS_g) +H5_DLLVAR hid_t H5E_ERR_CLS_g; + +/* Include the automatically generated public header information */ +/* (This includes the list of major and minor error codes for the library) */ +#include "H5Epubgen.h" + +/* + * One often needs to temporarily disable automatic error reporting when + * trying something that's likely or expected to fail. The code to try can + * be nested between calls to H5Eget_auto() and H5Eset_auto(), but it's + * easier just to use this macro like: + * H5E_BEGIN_TRY { + * ...stuff here that's likely to fail... + * } H5E_END_TRY; + * + * Warning: don't break, return, or longjmp() from the body of the loop or + * the error reporting won't be properly restored! + * + * These two macros still use the old API functions for backward compatibility + * purpose. + */ +#ifndef H5_NO_DEPRECATED_SYMBOLS +#define H5E_BEGIN_TRY { \ + unsigned H5E_saved_is_v2; \ + union { \ + H5E_auto1_t efunc1; \ + H5E_auto2_t efunc2; \ + } H5E_saved; \ + void *H5E_saved_edata; \ + \ + (void)H5Eauto_is_v2(H5E_DEFAULT, &H5E_saved_is_v2); \ + if(H5E_saved_is_v2) { \ + (void)H5Eget_auto2(H5E_DEFAULT, &H5E_saved.efunc2, &H5E_saved_edata); \ + (void)H5Eset_auto2(H5E_DEFAULT, NULL, NULL); \ + } else { \ + (void)H5Eget_auto1(&H5E_saved.efunc1, &H5E_saved_edata); \ + (void)H5Eset_auto1(NULL, NULL); \ + } + +#define H5E_END_TRY \ + if(H5E_saved_is_v2) \ + (void)H5Eset_auto2(H5E_DEFAULT, H5E_saved.efunc2, H5E_saved_edata); \ + else \ + (void)H5Eset_auto1(H5E_saved.efunc1, H5E_saved_edata); \ +} +#else /* H5_NO_DEPRECATED_SYMBOLS */ +#define H5E_BEGIN_TRY { \ + H5E_auto_t saved_efunc; \ + void *H5E_saved_edata; \ + \ + (void)H5Eget_auto(H5E_DEFAULT, &saved_efunc, &H5E_saved_edata); \ + (void)H5Eset_auto(H5E_DEFAULT, NULL, NULL); + +#define H5E_END_TRY \ + (void)H5Eset_auto(H5E_DEFAULT, saved_efunc, H5E_saved_edata); \ +} +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +/* + * Public API Convenience Macros for Error reporting - Documented + */ +/* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in */ +#define H5Epush_sim(func, cls, maj, min, str) H5Epush2(H5E_DEFAULT, __FILE__, func, __LINE__, cls, maj, min, str) + +/* + * Public API Convenience Macros for Error reporting - Undocumented + */ +/* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in */ +/* And return after pushing error onto stack */ +#define H5Epush_ret(func, cls, maj, min, str, ret) { \ + H5Epush2(H5E_DEFAULT, __FILE__, func, __LINE__, cls, maj, min, str); \ + return(ret); \ +} + +/* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in + * And goto a label after pushing error onto stack. + */ +#define H5Epush_goto(func, cls, maj, min, str, label) { \ + H5Epush2(H5E_DEFAULT, __FILE__, func, __LINE__, cls, maj, min, str); \ + goto label; \ +} + +/* Error stack traversal direction */ +typedef enum H5E_direction_t { + H5E_WALK_UPWARD = 0, /*begin deep, end at API function */ + H5E_WALK_DOWNWARD = 1 /*begin at API function, end deep */ +} H5E_direction_t; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Error stack traversal callback function pointers */ +typedef herr_t (*H5E_walk2_t)(unsigned n, const H5E_error2_t *err_desc, + void *client_data); +typedef herr_t (*H5E_auto2_t)(hid_t estack, void *client_data); + +/* Public API functions */ +H5_DLL hid_t H5Eregister_class(const char *cls_name, const char *lib_name, + const char *version); +H5_DLL herr_t H5Eunregister_class(hid_t class_id); +H5_DLL herr_t H5Eclose_msg(hid_t err_id); +H5_DLL hid_t H5Ecreate_msg(hid_t cls, H5E_type_t msg_type, const char *msg); +H5_DLL hid_t H5Ecreate_stack(void); +H5_DLL hid_t H5Eget_current_stack(void); +H5_DLL herr_t H5Eclose_stack(hid_t stack_id); +H5_DLL ssize_t H5Eget_class_name(hid_t class_id, char *name, size_t size); +H5_DLL herr_t H5Eset_current_stack(hid_t err_stack_id); +H5_DLL herr_t H5Epush2(hid_t err_stack, const char *file, const char *func, unsigned line, + hid_t cls_id, hid_t maj_id, hid_t min_id, const char *msg, ...); +H5_DLL herr_t H5Epop(hid_t err_stack, size_t count); +H5_DLL herr_t H5Eprint2(hid_t err_stack, FILE *stream); +H5_DLL herr_t H5Ewalk2(hid_t err_stack, H5E_direction_t direction, H5E_walk2_t func, + void *client_data); +H5_DLL herr_t H5Eget_auto2(hid_t estack_id, H5E_auto2_t *func, void **client_data); +H5_DLL herr_t H5Eset_auto2(hid_t estack_id, H5E_auto2_t func, void *client_data); +H5_DLL herr_t H5Eclear2(hid_t err_stack); +H5_DLL herr_t H5Eauto_is_v2(hid_t err_stack, unsigned *is_stack); +H5_DLL ssize_t H5Eget_msg(hid_t msg_id, H5E_type_t *type, char *msg, + size_t size); +H5_DLL ssize_t H5Eget_num(hid_t error_stack_id); + + +/* Symbols defined for compatibility with previous versions of the HDF5 API. + * + * Use of these symbols is deprecated. + */ +#ifndef H5_NO_DEPRECATED_SYMBOLS + +/* Typedefs */ + +/* Alias major & minor error types to hid_t's, for compatibility with new + * error API in v1.8 + */ +typedef hid_t H5E_major_t; +typedef hid_t H5E_minor_t; + +/* Information about an error element of error stack. */ +typedef struct H5E_error1_t { + H5E_major_t maj_num; /*major error number */ + H5E_minor_t min_num; /*minor error number */ + const char *func_name; /*function in which error occurred */ + const char *file_name; /*file in which error occurred */ + unsigned line; /*line in file where error occurs */ + const char *desc; /*optional supplied description */ +} H5E_error1_t; + +/* Error stack traversal callback function pointers */ +typedef herr_t (*H5E_walk1_t)(int n, H5E_error1_t *err_desc, void *client_data); +typedef herr_t (*H5E_auto1_t)(void *client_data); + +/* Function prototypes */ +H5_DLL herr_t H5Eclear1(void); +H5_DLL herr_t H5Eget_auto1(H5E_auto1_t *func, void **client_data); +H5_DLL herr_t H5Epush1(const char *file, const char *func, unsigned line, + H5E_major_t maj, H5E_minor_t min, const char *str); +H5_DLL herr_t H5Eprint1(FILE *stream); +H5_DLL herr_t H5Eset_auto1(H5E_auto1_t func, void *client_data); +H5_DLL herr_t H5Ewalk1(H5E_direction_t direction, H5E_walk1_t func, + void *client_data); +H5_DLL char *H5Eget_major(H5E_major_t maj); +H5_DLL char *H5Eget_minor(H5E_minor_t min); +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +#ifdef __cplusplus +} +#endif + +#endif /* end _H5Epublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Eterm.h b/Resources/windows-libs/HDF5/include/H5Eterm.h new file mode 100644 index 0000000000000000000000000000000000000000..86902b8b65c4326576fa4b210ecb7341e1abf131 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Eterm.h @@ -0,0 +1,218 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* Generated automatically by bin/make_err -- do not edit */ +/* Add new errors to H5err.txt file */ + + +#ifndef _H5Eterm_H +#define _H5Eterm_H + +/* Reset major error IDs */ + +H5E_DATASET_g= +H5E_FUNC_g= +H5E_STORAGE_g= +H5E_FILE_g= +H5E_SOHM_g= +H5E_SYM_g= +H5E_PLUGIN_g= +H5E_VFL_g= +H5E_INTERNAL_g= +H5E_BTREE_g= +H5E_REFERENCE_g= +H5E_DATASPACE_g= +H5E_RESOURCE_g= +H5E_PLIST_g= +H5E_LINK_g= +H5E_DATATYPE_g= +H5E_RS_g= +H5E_HEAP_g= +H5E_OHDR_g= +H5E_ATOM_g= +H5E_ATTR_g= +H5E_NONE_MAJOR_g= +H5E_IO_g= +H5E_SLIST_g= +H5E_EFL_g= +H5E_TST_g= +H5E_ARGS_g= +H5E_ERROR_g= +H5E_PLINE_g= +H5E_FSPACE_g= +H5E_CACHE_g= (-1); + +/* Reset minor error IDs */ + + +/* Generic low-level file I/O errors */ +H5E_SEEKERROR_g= +H5E_READERROR_g= +H5E_WRITEERROR_g= +H5E_CLOSEERROR_g= +H5E_OVERFLOW_g= +H5E_FCNTL_g= + +/* Resource errors */ +H5E_NOSPACE_g= +H5E_CANTALLOC_g= +H5E_CANTCOPY_g= +H5E_CANTFREE_g= +H5E_ALREADYEXISTS_g= +H5E_CANTLOCK_g= +H5E_CANTUNLOCK_g= +H5E_CANTGC_g= +H5E_CANTGETSIZE_g= +H5E_OBJOPEN_g= + +/* Heap errors */ +H5E_CANTRESTORE_g= +H5E_CANTCOMPUTE_g= +H5E_CANTEXTEND_g= +H5E_CANTATTACH_g= +H5E_CANTUPDATE_g= +H5E_CANTOPERATE_g= + +/* Function entry/exit interface errors */ +H5E_CANTINIT_g= +H5E_ALREADYINIT_g= +H5E_CANTRELEASE_g= + +/* Property list errors */ +H5E_CANTGET_g= +H5E_CANTSET_g= +H5E_DUPCLASS_g= +H5E_SETDISALLOWED_g= + +/* Free space errors */ +H5E_CANTMERGE_g= +H5E_CANTREVIVE_g= +H5E_CANTSHRINK_g= + +/* Object header related errors */ +H5E_LINKCOUNT_g= +H5E_VERSION_g= +H5E_ALIGNMENT_g= +H5E_BADMESG_g= +H5E_CANTDELETE_g= +H5E_BADITER_g= +H5E_CANTPACK_g= +H5E_CANTRESET_g= +H5E_CANTRENAME_g= + +/* System level errors */ +H5E_SYSERRSTR_g= + +/* I/O pipeline errors */ +H5E_NOFILTER_g= +H5E_CALLBACK_g= +H5E_CANAPPLY_g= +H5E_SETLOCAL_g= +H5E_NOENCODER_g= +H5E_CANTFILTER_g= + +/* Group related errors */ +H5E_CANTOPENOBJ_g= +H5E_CANTCLOSEOBJ_g= +H5E_COMPLEN_g= +H5E_PATH_g= + +/* No error */ +H5E_NONE_MINOR_g= + +/* Plugin errors */ +H5E_OPENERROR_g= + +/* File accessibilty errors */ +H5E_FILEEXISTS_g= +H5E_FILEOPEN_g= +H5E_CANTCREATE_g= +H5E_CANTOPENFILE_g= +H5E_CANTCLOSEFILE_g= +H5E_NOTHDF5_g= +H5E_BADFILE_g= +H5E_TRUNCATED_g= +H5E_MOUNT_g= + +/* Object atom related errors */ +H5E_BADATOM_g= +H5E_BADGROUP_g= +H5E_CANTREGISTER_g= +H5E_CANTINC_g= +H5E_CANTDEC_g= +H5E_NOIDS_g= + +/* Cache related errors */ +H5E_CANTFLUSH_g= +H5E_CANTSERIALIZE_g= +H5E_CANTLOAD_g= +H5E_PROTECT_g= +H5E_NOTCACHED_g= +H5E_SYSTEM_g= +H5E_CANTINS_g= +H5E_CANTPROTECT_g= +H5E_CANTUNPROTECT_g= +H5E_CANTPIN_g= +H5E_CANTUNPIN_g= +H5E_CANTMARKDIRTY_g= +H5E_CANTDIRTY_g= +H5E_CANTEXPUNGE_g= +H5E_CANTRESIZE_g= + +/* Link related errors */ +H5E_TRAVERSE_g= +H5E_NLINKS_g= +H5E_NOTREGISTERED_g= +H5E_CANTMOVE_g= +H5E_CANTSORT_g= + +/* Parallel MPI errors */ +H5E_MPI_g= +H5E_MPIERRSTR_g= +H5E_CANTRECV_g= + +/* Dataspace errors */ +H5E_CANTCLIP_g= +H5E_CANTCOUNT_g= +H5E_CANTSELECT_g= +H5E_CANTNEXT_g= +H5E_BADSELECT_g= +H5E_CANTCOMPARE_g= + +/* Argument errors */ +H5E_UNINITIALIZED_g= +H5E_UNSUPPORTED_g= +H5E_BADTYPE_g= +H5E_BADRANGE_g= +H5E_BADVALUE_g= + +/* B-tree related errors */ +H5E_NOTFOUND_g= +H5E_EXISTS_g= +H5E_CANTENCODE_g= +H5E_CANTDECODE_g= +H5E_CANTSPLIT_g= +H5E_CANTREDISTRIBUTE_g= +H5E_CANTSWAP_g= +H5E_CANTINSERT_g= +H5E_CANTLIST_g= +H5E_CANTMODIFY_g= +H5E_CANTREMOVE_g= + +/* Datatype conversion errors */ +H5E_CANTCONVERT_g= +H5E_BADSIZE_g= (-1); + +#endif /* H5Eterm_H */ diff --git a/Resources/windows-libs/HDF5/include/H5Exception.h b/Resources/windows-libs/HDF5/include/H5Exception.h new file mode 100644 index 0000000000000000000000000000000000000000..5373150f943da68ba4d8ec84ada5a459852d00fa --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Exception.h @@ -0,0 +1,178 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5Exception_H +#define __H5Exception_H + +#include <string> + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#ifdef H5_NO_STD + #define H5std_string ::string +#else + #define H5std_string std::string +#endif +#endif + +/*! \class Exception + \brief Exception provides wrappers of HDF5 error handling functions. + + Many classes are derived from Exception for specific HDF5 C interfaces. +*/ +class H5_DLLCPP Exception { + public: + // Creates an exception with a function name where the failure occurs + // and an optional detailed message + Exception(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + + // Returns a character string that describes the error specified by + // a major error number. + H5std_string getMajorString( hid_t err_major_id ) const; + + // Returns a character string that describes the error specified by + // a minor error number. + H5std_string getMinorString( hid_t err_minor_id ) const; + + // Returns the detailed message set at the time the exception is thrown + H5std_string getDetailMsg() const; + const char* getCDetailMsg() const; // C string of detailed message + H5std_string getFuncName() const; // function name as a string object + const char* getCFuncName() const; // function name as a char string + + // Turns on the automatic error printing. + static void setAutoPrint( H5E_auto2_t& func, void* client_data); + + // Turns off the automatic error printing. + static void dontPrint(); + + // Retrieves the current settings for the automatic error stack + // traversal function and its data. + static void getAutoPrint( H5E_auto2_t& func, void** client_data); + + // Clears the error stack for the current thread. + static void clearErrorStack(); + + // Walks the error stack for the current thread, calling the + // specified function. + static void walkErrorStack( H5E_direction_t direction, + H5E_walk2_t func, void* client_data); + + // Prints the error stack in a default manner. + static void printErrorStack(FILE* stream = stderr, + hid_t err_stack = H5E_DEFAULT); // Static + virtual void printError(FILE* stream = NULL) const; + + // Default constructor + Exception(); + + // copy constructor + Exception( const Exception& orig); + + // virtual Destructor + virtual ~Exception() throw(); + + private: + H5std_string detail_message; + H5std_string func_name; + + protected: + // Default value for detail_message + static const char DEFAULT_MSG[]; +}; + +class H5_DLLCPP FileIException : public Exception { + public: + FileIException( const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + FileIException(); + virtual ~FileIException() throw(); +}; + +class H5_DLLCPP GroupIException : public Exception { + public: + GroupIException( const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + GroupIException(); + virtual ~GroupIException() throw(); +}; + +class H5_DLLCPP DataSpaceIException : public Exception { + public: + DataSpaceIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + DataSpaceIException(); + virtual ~DataSpaceIException() throw(); +}; + +class H5_DLLCPP DataTypeIException : public Exception { + public: + DataTypeIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + DataTypeIException(); + virtual ~DataTypeIException() throw(); +}; + +class H5_DLLCPP PropListIException : public Exception { + public: + PropListIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + PropListIException(); + virtual ~PropListIException() throw(); +}; + +class H5_DLLCPP DataSetIException : public Exception { + public: + DataSetIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + DataSetIException(); + virtual ~DataSetIException() throw(); +}; + +class H5_DLLCPP AttributeIException : public Exception { + public: + AttributeIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + AttributeIException(); + virtual ~AttributeIException() throw(); +}; + +class H5_DLLCPP ReferenceException : public Exception { + public: + ReferenceException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + ReferenceException(); + virtual ~ReferenceException() throw(); +}; + +class H5_DLLCPP LibraryIException : public Exception { + public: + LibraryIException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + LibraryIException(); + virtual ~LibraryIException() throw(); +}; + +class H5_DLLCPP LocationException : public Exception { + public: + LocationException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + LocationException(); + virtual ~LocationException() throw(); +}; + +class H5_DLLCPP IdComponentException : public Exception { + public: + IdComponentException(const H5std_string& func_name, const H5std_string& message = DEFAULT_MSG); + IdComponentException(); + virtual ~IdComponentException() throw(); +}; + +#ifndef H5_NO_NAMESPACE +} +#endif + +#endif // __H5Exception_H diff --git a/Resources/windows-libs/HDF5/include/H5FDcore.h b/Resources/windows-libs/HDF5/include/H5FDcore.h new file mode 100644 index 0000000000000000000000000000000000000000..dca110ea20826e9a7c23f286d1153a4aed69b26b --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDcore.h @@ -0,0 +1,42 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke <matzke@llnl.gov> + * Monday, August 2, 1999 + * + * Purpose: The public header file for the sec2 driver. + */ +#ifndef H5FDcore_H +#define H5FDcore_H + +#include "H5Ipublic.h" + +#define H5FD_CORE (H5FD_core_init()) + +#ifdef __cplusplus +extern "C" { +#endif +H5_DLL hid_t H5FD_core_init(void); +H5_DLL void H5FD_core_term(void); +H5_DLL herr_t H5Pset_fapl_core(hid_t fapl_id, size_t increment, + hbool_t backing_store); +H5_DLL herr_t H5Pget_fapl_core(hid_t fapl_id, size_t *increment/*out*/, + hbool_t *backing_store/*out*/); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Resources/windows-libs/HDF5/include/H5FDdirect.h b/Resources/windows-libs/HDF5/include/H5FDdirect.h new file mode 100644 index 0000000000000000000000000000000000000000..26c70f30fa09a5077c4dffcb78faf500e30a3dc6 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDdirect.h @@ -0,0 +1,57 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Raymond Lu <slu@hdfgroup.uiuc.edu> + * Wednesday, 20 September 2006 + * + * Purpose: The public header file for the direct driver. + */ +#ifndef H5FDdirect_H +#define H5FDdirect_H + +#include "H5Ipublic.h" + +#ifdef H5_HAVE_DIRECT +# define H5FD_DIRECT (H5FD_direct_init()) +#else +# define H5FD_DIRECT (-1) +#endif /* H5_HAVE_DIRECT */ + +#ifdef H5_HAVE_DIRECT +#ifdef __cplusplus +extern "C" { +#endif + +/* Default values for memory boundary, file block size, and maximal copy buffer size. + * Application can set these values through the function H5Pset_fapl_direct. */ +#define MBOUNDARY_DEF 4096 +#define FBSIZE_DEF 4096 +#define CBSIZE_DEF 16*1024*1024 + +H5_DLL hid_t H5FD_direct_init(void); +H5_DLL void H5FD_direct_term(void); +H5_DLL herr_t H5Pset_fapl_direct(hid_t fapl_id, size_t alignment, size_t block_size, + size_t cbuf_size); +H5_DLL herr_t H5Pget_fapl_direct(hid_t fapl_id, size_t *boundary/*out*/, + size_t *block_size/*out*/, size_t *cbuf_size/*out*/); + +#ifdef __cplusplus +} +#endif + +#endif /* H5_HAVE_DIRECT */ + +#endif diff --git a/Resources/windows-libs/HDF5/include/H5FDfamily.h b/Resources/windows-libs/HDF5/include/H5FDfamily.h new file mode 100644 index 0000000000000000000000000000000000000000..dcb63e647e16d7083e4645f316d16479aad3d923 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDfamily.h @@ -0,0 +1,44 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke <matzke@llnl.gov> + * Monday, August 4, 1999 + * + * Purpose: The public header file for the family driver. + */ +#ifndef H5FDfamily_H +#define H5FDfamily_H + +#include "H5Ipublic.h" + +#define H5FD_FAMILY (H5FD_family_init()) + +#ifdef __cplusplus +extern "C" { +#endif + +H5_DLL hid_t H5FD_family_init(void); +H5_DLL void H5FD_family_term(void); +H5_DLL herr_t H5Pset_fapl_family(hid_t fapl_id, hsize_t memb_size, + hid_t memb_fapl_id); +H5_DLL herr_t H5Pget_fapl_family(hid_t fapl_id, hsize_t *memb_size/*out*/, + hid_t *memb_fapl_id/*out*/); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Resources/windows-libs/HDF5/include/H5FDlog.h b/Resources/windows-libs/HDF5/include/H5FDlog.h new file mode 100644 index 0000000000000000000000000000000000000000..ffc4df1a56ce0a55fadd5b94f36995a291dc0a23 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDlog.h @@ -0,0 +1,72 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Monday, April 17, 2000 + * + * Purpose: The public header file for the log driver. + */ +#ifndef H5FDlog_H +#define H5FDlog_H + +#include "H5Ipublic.h" + +#define H5FD_LOG (H5FD_log_init()) + +/* Flags for H5Pset_fapl_log() */ +/* Flags for tracking where reads/writes/seeks occur */ +#define H5FD_LOG_LOC_READ 0x00000001 +#define H5FD_LOG_LOC_WRITE 0x00000002 +#define H5FD_LOG_LOC_SEEK 0x00000004 +#define H5FD_LOG_LOC_IO (H5FD_LOG_LOC_READ|H5FD_LOG_LOC_WRITE|H5FD_LOG_LOC_SEEK) +/* Flags for tracking number of times each byte is read/written */ +#define H5FD_LOG_FILE_READ 0x00000008 +#define H5FD_LOG_FILE_WRITE 0x00000010 +#define H5FD_LOG_FILE_IO (H5FD_LOG_FILE_READ|H5FD_LOG_FILE_WRITE) +/* Flag for tracking "flavor" (type) of information stored at each byte */ +#define H5FD_LOG_FLAVOR 0x00000020 +/* Flags for tracking total number of reads/writes/seeks/truncates */ +#define H5FD_LOG_NUM_READ 0x00000040 +#define H5FD_LOG_NUM_WRITE 0x00000080 +#define H5FD_LOG_NUM_SEEK 0x00000100 +#define H5FD_LOG_NUM_TRUNCATE 0x00000200 +#define H5FD_LOG_NUM_IO (H5FD_LOG_NUM_READ|H5FD_LOG_NUM_WRITE|H5FD_LOG_NUM_SEEK|H5FD_LOG_NUM_TRUNCATE) +/* Flags for tracking time spent in open/stat/read/write/seek/close */ +#define H5FD_LOG_TIME_OPEN 0x00000400 +#define H5FD_LOG_TIME_STAT 0x00000800 +#define H5FD_LOG_TIME_READ 0x00001000 +#define H5FD_LOG_TIME_WRITE 0x00002000 +#define H5FD_LOG_TIME_SEEK 0x00004000 +#define H5FD_LOG_TIME_CLOSE 0x00008000 +#define H5FD_LOG_TIME_IO (H5FD_LOG_TIME_OPEN|H5FD_LOG_TIME_STAT|H5FD_LOG_TIME_READ|H5FD_LOG_TIME_WRITE|H5FD_LOG_TIME_SEEK|H5FD_LOG_TIME_CLOSE) +/* Flag for tracking allocation of space in file */ +#define H5FD_LOG_ALLOC 0x00010000 +#define H5FD_LOG_ALL (H5FD_LOG_ALLOC|H5FD_LOG_TIME_IO|H5FD_LOG_NUM_IO|H5FD_LOG_FLAVOR|H5FD_LOG_FILE_IO|H5FD_LOG_LOC_IO) + +#ifdef __cplusplus +extern "C" { +#endif + +H5_DLL hid_t H5FD_log_init(void); +H5_DLL void H5FD_log_term(void); +H5_DLL herr_t H5Pset_fapl_log(hid_t fapl_id, const char *logfile, unsigned long long flags, size_t buf_size); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Resources/windows-libs/HDF5/include/H5FDmpi.h b/Resources/windows-libs/HDF5/include/H5FDmpi.h new file mode 100644 index 0000000000000000000000000000000000000000..784fe70c0568c2ec8e662a327f6299a6727c96c0 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDmpi.h @@ -0,0 +1,62 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Friday, January 30, 2004 + * + * Purpose: The public header file for common items for all MPI VFL drivers + */ +#ifndef H5FDmpi_H +#define H5FDmpi_H + +/***** Macros for One linked collective IO case. *****/ +/* The default value to do one linked collective IO for all chunks. + If the average number of chunks per process is greater than this value, + the library will create an MPI derived datatype to link all chunks to do collective IO. + The user can set this value through an API. */ + +#define H5D_ONE_LINK_CHUNK_IO_THRESHOLD 0 +/***** Macros for multi-chunk collective IO case. *****/ +/* The default value of the threshold to do collective IO for this chunk. + If the average percentage of processes per chunk is greater than the default value, + collective IO is done for this chunk. +*/ + +#define H5D_MULTI_CHUNK_IO_COL_THRESHOLD 60 +/* Type of I/O for data transfer properties */ +typedef enum H5FD_mpio_xfer_t { + H5FD_MPIO_INDEPENDENT = 0, /*zero is the default*/ + H5FD_MPIO_COLLECTIVE +} H5FD_mpio_xfer_t; + +/* Type of chunked dataset I/O */ +typedef enum H5FD_mpio_chunk_opt_t { + H5FD_MPIO_CHUNK_DEFAULT = 0, + H5FD_MPIO_CHUNK_ONE_IO, /*zero is the default*/ + H5FD_MPIO_CHUNK_MULTI_IO +} H5FD_mpio_chunk_opt_t; + +/* Type of collective I/O */ +typedef enum H5FD_mpio_collective_opt_t { + H5FD_MPIO_COLLECTIVE_IO = 0, + H5FD_MPIO_INDIVIDUAL_IO /*zero is the default*/ +} H5FD_mpio_collective_opt_t; + +/* Include all the MPI VFL headers */ +#include "H5FDmpio.h" /* MPI I/O file driver */ + +#endif /* H5FDmpi_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5FDmpio.h b/Resources/windows-libs/HDF5/include/H5FDmpio.h new file mode 100644 index 0000000000000000000000000000000000000000..1d91cc32cb45bde9abc4c4248724f92617aa218c --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDmpio.h @@ -0,0 +1,66 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke <matzke@llnl.gov> + * Monday, August 2, 1999 + * + * Purpose: The public header file for the mpio driver. + */ +#ifndef H5FDmpio_H +#define H5FDmpio_H + +/* Macros */ + +#ifdef H5_HAVE_PARALLEL +# define H5FD_MPIO (H5FD_mpio_init()) +#else +# define H5FD_MPIO (-1) +#endif /* H5_HAVE_PARALLEL */ + +#ifdef H5_HAVE_PARALLEL +/*Turn on H5FDmpio_debug if H5F_DEBUG is on */ +#ifdef H5F_DEBUG +#ifndef H5FDmpio_DEBUG +#define H5FDmpio_DEBUG +#endif +#endif + +/* Global var whose value comes from environment variable */ +/* (Defined in H5FDmpio.c) */ +H5_DLLVAR hbool_t H5FD_mpi_opt_types_g; + +/* Function prototypes */ +#ifdef __cplusplus +extern "C" { +#endif +H5_DLL hid_t H5FD_mpio_init(void); +H5_DLL void H5FD_mpio_term(void); +H5_DLL herr_t H5Pset_fapl_mpio(hid_t fapl_id, MPI_Comm comm, MPI_Info info); +H5_DLL herr_t H5Pget_fapl_mpio(hid_t fapl_id, MPI_Comm *comm/*out*/, + MPI_Info *info/*out*/); +H5_DLL herr_t H5Pset_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t xfer_mode); +H5_DLL herr_t H5Pget_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t *xfer_mode/*out*/); +H5_DLL herr_t H5Pset_dxpl_mpio_collective_opt(hid_t dxpl_id, H5FD_mpio_collective_opt_t opt_mode); +H5_DLL herr_t H5Pset_dxpl_mpio_chunk_opt(hid_t dxpl_id, H5FD_mpio_chunk_opt_t opt_mode); +H5_DLL herr_t H5Pset_dxpl_mpio_chunk_opt_num(hid_t dxpl_id, unsigned num_chunk_per_proc); +H5_DLL herr_t H5Pset_dxpl_mpio_chunk_opt_ratio(hid_t dxpl_id, unsigned percent_num_proc_per_chunk); +#ifdef __cplusplus +} +#endif + +#endif /* H5_HAVE_PARALLEL */ + +#endif diff --git a/Resources/windows-libs/HDF5/include/H5FDmulti.h b/Resources/windows-libs/HDF5/include/H5FDmulti.h new file mode 100644 index 0000000000000000000000000000000000000000..b45a02957004a98a13c5133e022aa859ba2863e3 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDmulti.h @@ -0,0 +1,49 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke <matzke@llnl.gov> + * Monday, August 2, 1999 + * + * Purpose: The public header file for the "multi" driver. + */ +#ifndef H5FDmulti_H +#define H5FDmulti_H + +#include "H5Ipublic.h" +#include "H5Ppublic.h" /* Property lists */ +#include "H5Fpublic.h" + +#define H5FD_MULTI (H5FD_multi_init()) + +#ifdef __cplusplus +extern "C" { +#endif +H5_DLL hid_t H5FD_multi_init(void); +H5_DLL void H5FD_multi_term(void); +H5_DLL herr_t H5Pset_fapl_multi(hid_t fapl_id, const H5FD_mem_t *memb_map, + const hid_t *memb_fapl, const char * const *memb_name, + const haddr_t *memb_addr, hbool_t relax); +H5_DLL herr_t H5Pget_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map/*out*/, + hid_t *memb_fapl/*out*/, char **memb_name/*out*/, + haddr_t *memb_addr/*out*/, hbool_t *relax/*out*/); +H5_DLL herr_t H5Pset_fapl_split(hid_t fapl, const char *meta_ext, + hid_t meta_plist_id, const char *raw_ext, + hid_t raw_plist_id); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Resources/windows-libs/HDF5/include/H5FDpkg.h b/Resources/windows-libs/HDF5/include/H5FDpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..7c0988ea13d8d5cf7bac50e4ddcecd0a352995f6 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDpkg.h @@ -0,0 +1,67 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@hdfgroup.org> + * Thursday, January 3, 2008 + * + * Purpose: This file contains declarations which are visible only within + * the H5FD package. Source files outside the H5FD package should + * include H5FDprivate.h instead. + */ +#ifndef H5FD_PACKAGE +#error "Do not include this file outside the H5FD package!" +#endif + +#ifndef _H5FDpkg_H +#define _H5FDpkg_H + +/* Get package's private header */ +#include "H5FDprivate.h" /* File drivers */ + +/* Other private headers needed by this file */ +#include "H5FLprivate.h" /* Free lists */ + +/**************************/ +/* Package Private Macros */ +/**************************/ + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ +H5_DLL herr_t H5FD_init(void); +H5_DLL haddr_t H5FD_alloc_real(H5FD_t *file, hid_t dxpl_id, H5FD_mem_t type, + hsize_t size, haddr_t *align_addr, hsize_t *align_size); +H5_DLL herr_t H5FD_free_real(H5FD_t *file, hid_t dxpl_id, H5FD_mem_t type, + haddr_t addr, hsize_t size); + + +/* Testing routines */ +#ifdef H5FD_TESTING +#endif /* H5FD_TESTING */ + +#endif /* _H5FDpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5FDpublic.h b/Resources/windows-libs/HDF5/include/H5FDpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..f1b3920fb6a324db00aa51fced31a50e84553af6 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDpublic.h @@ -0,0 +1,318 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke <matzke@llnl.gov> + * Monday, July 26, 1999 + */ +#ifndef _H5FDpublic_H +#define _H5FDpublic_H + +#include "H5public.h" +#include "H5Fpublic.h" /*for H5F_close_degree_t */ + +#define H5_HAVE_VFL 1 /*define a convenient app feature test*/ +#define H5FD_VFD_DEFAULT 0 /* Default VFL driver value */ + +/* Types of allocation requests: see H5Fpublic.h */ +typedef enum H5F_mem_t H5FD_mem_t; + +/* Map "fractal heap" header blocks to 'ohdr' type file memory, since its + * a fair amount of work to add a new kind of file memory and they are similar + * enough to object headers and probably too minor to deserve their own type. + * + * Map "fractal heap" indirect blocks to 'ohdr' type file memory, since they + * are similar to fractal heap header blocks. + * + * Map "fractal heap" direct blocks to 'lheap' type file memory, since they + * will be replacing local heaps. + * + * Map "fractal heap" 'huge' objects to 'draw' type file memory, since they + * represent large objects that are directly stored in the file. + * + * -QAK + */ +#define H5FD_MEM_FHEAP_HDR H5FD_MEM_OHDR +#define H5FD_MEM_FHEAP_IBLOCK H5FD_MEM_OHDR +#define H5FD_MEM_FHEAP_DBLOCK H5FD_MEM_LHEAP +#define H5FD_MEM_FHEAP_HUGE_OBJ H5FD_MEM_DRAW + +/* Map "free space" header blocks to 'ohdr' type file memory, since its + * a fair amount of work to add a new kind of file memory and they are similar + * enough to object headers and probably too minor to deserve their own type. + * + * Map "free space" serialized sections to 'lheap' type file memory, since they + * are similar enough to local heap info. + * + * -QAK + */ +#define H5FD_MEM_FSPACE_HDR H5FD_MEM_OHDR +#define H5FD_MEM_FSPACE_SINFO H5FD_MEM_LHEAP + +/* Map "shared object header message" master table to 'ohdr' type file memory, + * since its a fair amount of work to add a new kind of file memory and they are + * similar enough to object headers and probably too minor to deserve their own + * type. + * + * Map "shared object header message" indices to 'btree' type file memory, + * since they are similar enough to B-tree nodes. + * + * -QAK + */ +#define H5FD_MEM_SOHM_TABLE H5FD_MEM_OHDR +#define H5FD_MEM_SOHM_INDEX H5FD_MEM_BTREE + +/* + * A free-list map which maps all types of allocation requests to a single + * free list. This is useful for drivers that don't really care about + * keeping different requests segregated in the underlying file and which + * want to make most efficient reuse of freed memory. The use of the + * H5FD_MEM_SUPER free list is arbitrary. + */ +#define H5FD_FLMAP_SINGLE { \ + H5FD_MEM_SUPER, /*default*/ \ + H5FD_MEM_SUPER, /*super*/ \ + H5FD_MEM_SUPER, /*btree*/ \ + H5FD_MEM_SUPER, /*draw*/ \ + H5FD_MEM_SUPER, /*gheap*/ \ + H5FD_MEM_SUPER, /*lheap*/ \ + H5FD_MEM_SUPER /*ohdr*/ \ +} + +/* + * A free-list map which segregates requests into `raw' or `meta' data + * pools. + */ +#define H5FD_FLMAP_DICHOTOMY { \ + H5FD_MEM_SUPER, /*default*/ \ + H5FD_MEM_SUPER, /*super*/ \ + H5FD_MEM_SUPER, /*btree*/ \ + H5FD_MEM_DRAW, /*draw*/ \ + H5FD_MEM_DRAW, /*gheap*/ \ + H5FD_MEM_SUPER, /*lheap*/ \ + H5FD_MEM_SUPER /*ohdr*/ \ +} + +/* + * The default free list map which causes each request type to use it's own + * free-list. + */ +#define H5FD_FLMAP_DEFAULT { \ + H5FD_MEM_DEFAULT, /*default*/ \ + H5FD_MEM_DEFAULT, /*super*/ \ + H5FD_MEM_DEFAULT, /*btree*/ \ + H5FD_MEM_DEFAULT, /*draw*/ \ + H5FD_MEM_DEFAULT, /*gheap*/ \ + H5FD_MEM_DEFAULT, /*lheap*/ \ + H5FD_MEM_DEFAULT /*ohdr*/ \ +} + + +/* Define VFL driver features that can be enabled on a per-driver basis */ +/* These are returned with the 'query' function pointer in H5FD_class_t */ + /* + * Defining the H5FD_FEAT_AGGREGATE_METADATA for a VFL driver means that + * the library will attempt to allocate a larger block for metadata and + * then sub-allocate each metadata request from that larger block. + */ +#define H5FD_FEAT_AGGREGATE_METADATA 0x00000001 + /* + * Defining the H5FD_FEAT_ACCUMULATE_METADATA for a VFL driver means that + * the library will attempt to cache metadata as it is written to the file + * and build up a larger block of metadata to eventually pass to the VFL + * 'write' routine. + * + * Distinguish between updating the metadata accumulator on writes and + * reads. This is particularly (perhaps only, even) important for MPI-I/O + * where we guarantee that writes are collective, but reads may not be. + * If we were to allow the metadata accumulator to be written during a + * read operation, the application would hang. + */ +#define H5FD_FEAT_ACCUMULATE_METADATA_WRITE 0x00000002 +#define H5FD_FEAT_ACCUMULATE_METADATA_READ 0x00000004 +#define H5FD_FEAT_ACCUMULATE_METADATA (H5FD_FEAT_ACCUMULATE_METADATA_WRITE|H5FD_FEAT_ACCUMULATE_METADATA_READ) + /* + * Defining the H5FD_FEAT_DATA_SIEVE for a VFL driver means that + * the library will attempt to cache raw data as it is read from/written to + * a file in a "data seive" buffer. See Rajeev Thakur's papers: + * http://www.mcs.anl.gov/~thakur/papers/romio-coll.ps.gz + * http://www.mcs.anl.gov/~thakur/papers/mpio-high-perf.ps.gz + */ +#define H5FD_FEAT_DATA_SIEVE 0x00000008 + /* + * Defining the H5FD_FEAT_AGGREGATE_SMALLDATA for a VFL driver means that + * the library will attempt to allocate a larger block for "small" raw data + * and then sub-allocate "small" raw data requests from that larger block. + */ +#define H5FD_FEAT_AGGREGATE_SMALLDATA 0x00000010 + /* + * Defining the H5FD_FEAT_IGNORE_DRVRINFO for a VFL driver means that + * the library will ignore the driver info that is encoded in the file + * for the VFL driver. (This will cause the driver info to be eliminated + * from the file when it is flushed/closed, if the file is opened R/W). + */ +#define H5FD_FEAT_IGNORE_DRVRINFO 0x00000020 + /* + * Defining the H5FD_FEAT_DIRTY_SBLK_LOAD for a VFL driver means that + * the library will mark the superblock dirty when the file is opened + * R/W. This will cause the driver info to be re-encoded when the file + * is flushed/closed. + */ +#define H5FD_FEAT_DIRTY_SBLK_LOAD 0x00000040 + /* + * Defining the H5FD_FEAT_POSIX_COMPAT_HANDLE for a VFL driver means that + * the handle for the VFD (returned with the 'get_handle' callback) is + * of type 'int' and is compatible with POSIX I/O calls. + */ +#define H5FD_FEAT_POSIX_COMPAT_HANDLE 0x00000080 + /* + * Defining the H5FD_FEAT_ALLOW_FILE_IMAGE for a VFL driver means that + * the driver is able to use a file image in the fapl as the initial + * contents of a file. + */ +#define H5FD_FEAT_ALLOW_FILE_IMAGE 0x00000400 + /* + * Defining the H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS for a VFL driver + * means that the driver is able to use callbacks to make a copy of the + * image to store in memory. + */ +#define H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS 0x00000800 + + +/* Forward declaration */ +typedef struct H5FD_t H5FD_t; + +/* Class information for each file driver */ +typedef struct H5FD_class_t { + const char *name; + haddr_t maxaddr; + H5F_close_degree_t fc_degree; + hsize_t (*sb_size)(H5FD_t *file); + herr_t (*sb_encode)(H5FD_t *file, char *name/*out*/, + unsigned char *p/*out*/); + herr_t (*sb_decode)(H5FD_t *f, const char *name, const unsigned char *p); + size_t fapl_size; + void * (*fapl_get)(H5FD_t *file); + void * (*fapl_copy)(const void *fapl); + herr_t (*fapl_free)(void *fapl); + size_t dxpl_size; + void * (*dxpl_copy)(const void *dxpl); + herr_t (*dxpl_free)(void *dxpl); + H5FD_t *(*open)(const char *name, unsigned flags, hid_t fapl, + haddr_t maxaddr); + herr_t (*close)(H5FD_t *file); + int (*cmp)(const H5FD_t *f1, const H5FD_t *f2); + herr_t (*query)(const H5FD_t *f1, unsigned long *flags); + herr_t (*get_type_map)(const H5FD_t *file, H5FD_mem_t *type_map); + haddr_t (*alloc)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size); + herr_t (*free)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, + haddr_t addr, hsize_t size); + haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type); + herr_t (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr); + haddr_t (*get_eof)(const H5FD_t *file); + herr_t (*get_handle)(H5FD_t *file, hid_t fapl, void**file_handle); + herr_t (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, + haddr_t addr, size_t size, void *buffer); + herr_t (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, + haddr_t addr, size_t size, const void *buffer); + herr_t (*flush)(H5FD_t *file, hid_t dxpl_id, unsigned closing); + herr_t (*truncate)(H5FD_t *file, hid_t dxpl_id, hbool_t closing); + herr_t (*lock)(H5FD_t *file, unsigned char *oid, unsigned lock_type, hbool_t last); + herr_t (*unlock)(H5FD_t *file, unsigned char *oid, hbool_t last); + H5FD_mem_t fl_map[H5FD_MEM_NTYPES]; +} H5FD_class_t; + +/* A free list is a singly-linked list of address/size pairs. */ +typedef struct H5FD_free_t { + haddr_t addr; + hsize_t size; + struct H5FD_free_t *next; +} H5FD_free_t; + +/* + * The main datatype for each driver. Public fields common to all drivers + * are declared here and the driver appends private fields in memory. + */ +struct H5FD_t { + hid_t driver_id; /*driver ID for this file */ + const H5FD_class_t *cls; /*constant class info */ + unsigned long fileno; /* File 'serial' number */ + unsigned long feature_flags; /* VFL Driver feature Flags */ + haddr_t maxaddr; /* For this file, overrides class */ + haddr_t base_addr; /* Base address for HDF5 data w/in file */ + + /* Space allocation management fields */ + hsize_t threshold; /* Threshold for alignment */ + hsize_t alignment; /* Allocation alignment */ +}; + +/* Define enum for the source of file image callbacks */ +typedef enum { + H5FD_FILE_IMAGE_OP_NO_OP, + H5FD_FILE_IMAGE_OP_PROPERTY_LIST_SET, + H5FD_FILE_IMAGE_OP_PROPERTY_LIST_COPY, + H5FD_FILE_IMAGE_OP_PROPERTY_LIST_GET, + H5FD_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE, + H5FD_FILE_IMAGE_OP_FILE_OPEN, + H5FD_FILE_IMAGE_OP_FILE_RESIZE, + H5FD_FILE_IMAGE_OP_FILE_CLOSE +} H5FD_file_image_op_t; + +/* Define structure to hold file image callbacks */ +typedef struct { + void *(*image_malloc)(size_t size, H5FD_file_image_op_t file_image_op, + void *udata); + void *(*image_memcpy)(void *dest, const void *src, size_t size, + H5FD_file_image_op_t file_image_op, void *udata); + void *(*image_realloc)(void *ptr, size_t size, + H5FD_file_image_op_t file_image_op, void *udata); + herr_t (*image_free)(void *ptr, H5FD_file_image_op_t file_image_op, + void *udata); + void *(*udata_copy)(void *udata); + herr_t (*udata_free)(void *udata); + void *udata; +} H5FD_file_image_callbacks_t; + +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ +H5_DLL hid_t H5FDregister(const H5FD_class_t *cls); +H5_DLL herr_t H5FDunregister(hid_t driver_id); +H5_DLL H5FD_t *H5FDopen(const char *name, unsigned flags, hid_t fapl_id, + haddr_t maxaddr); +H5_DLL herr_t H5FDclose(H5FD_t *file); +H5_DLL int H5FDcmp(const H5FD_t *f1, const H5FD_t *f2); +H5_DLL int H5FDquery(const H5FD_t *f, unsigned long *flags); +H5_DLL haddr_t H5FDalloc(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size); +H5_DLL herr_t H5FDfree(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, + haddr_t addr, hsize_t size); +H5_DLL haddr_t H5FDget_eoa(H5FD_t *file, H5FD_mem_t type); +H5_DLL herr_t H5FDset_eoa(H5FD_t *file, H5FD_mem_t type, haddr_t eoa); +H5_DLL haddr_t H5FDget_eof(H5FD_t *file); +H5_DLL herr_t H5FDget_vfd_handle(H5FD_t *file, hid_t fapl, void**file_handle); +H5_DLL herr_t H5FDread(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, + haddr_t addr, size_t size, void *buf/*out*/); +H5_DLL herr_t H5FDwrite(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, + haddr_t addr, size_t size, const void *buf); +H5_DLL herr_t H5FDflush(H5FD_t *file, hid_t dxpl_id, unsigned closing); +H5_DLL herr_t H5FDtruncate(H5FD_t *file, hid_t dxpl_id, hbool_t closing); + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/Resources/windows-libs/HDF5/include/H5FDsec2.h b/Resources/windows-libs/HDF5/include/H5FDsec2.h new file mode 100644 index 0000000000000000000000000000000000000000..b7db0d5ea998e779c8ea2f47ef42789ebaa5b39d --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDsec2.h @@ -0,0 +1,42 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke <matzke@llnl.gov> + * Monday, August 2, 1999 + * + * Purpose: The public header file for the sec2 driver. + */ +#ifndef H5FDsec2_H +#define H5FDsec2_H + +#include "H5Ipublic.h" + +#define H5FD_SEC2 (H5FD_sec2_init()) + +#ifdef __cplusplus +extern "C" { +#endif + +H5_DLL hid_t H5FD_sec2_init(void); +H5_DLL void H5FD_sec2_term(void); +H5_DLL herr_t H5Pset_fapl_sec2(hid_t fapl_id); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Resources/windows-libs/HDF5/include/H5FDstdio.h b/Resources/windows-libs/HDF5/include/H5FDstdio.h new file mode 100644 index 0000000000000000000000000000000000000000..80443d890165a4588df6b01e594309fc39bfe16c --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDstdio.h @@ -0,0 +1,41 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke <matzke@llnl.gov> + * Monday, August 2, 1999 + * + * Purpose: The public header file for the sec2 driver. + */ +#ifndef H5FDstdio_H +#define H5FDstdio_H + +#include "H5Ipublic.h" + +#define H5FD_STDIO (H5FD_stdio_init()) + +#ifdef __cplusplus +extern "C" { +#endif + +H5_DLL hid_t H5FD_stdio_init(void); +H5_DLL void H5FD_stdio_term(void); +H5_DLL herr_t H5Pset_fapl_stdio(hid_t fapl_id); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Resources/windows-libs/HDF5/include/H5FDwindows.h b/Resources/windows-libs/HDF5/include/H5FDwindows.h new file mode 100644 index 0000000000000000000000000000000000000000..7b547bf034d20adc8d1ed7dca18bc30b261e185f --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FDwindows.h @@ -0,0 +1,49 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Scott Wegner <swegner@hdfgroup.org> + * Based on code by Robb Matzke + * Thursday, May 24 2007 + * + * Purpose: The public header file for the windows driver. + */ +#ifndef H5FDwindows_H +#define H5FDwindows_H + +#include "H5Ipublic.h" +#include "H5FDsec2.h" + +#define H5FD_WINDOWS (H5FD_windows_init()) + +#ifdef __cplusplus +extern "C" { +#endif + +/* The code behind the windows VFD has been removed and the windows + * VFD initialization has been redirected to the SEC2 driver. The + * "Windows" VFD was actually identical to the SEC2 driver code + * (a planned Win32 API driver never happened) so this change + * should be transparent to users. + */ +#define H5FD_windows_init H5FD_sec2_init +#define H5FD_windows_term H5FD_sec2_term +H5_DLL herr_t H5Pset_fapl_windows(hid_t fapl_id); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Resources/windows-libs/HDF5/include/H5FSpkg.h b/Resources/windows-libs/HDF5/include/H5FSpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..e22e4113ad0a88c59692444a62025d0a8e1aab78 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FSpkg.h @@ -0,0 +1,250 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Tuesday, May 2, 2006 + * + * Purpose: This file contains declarations which are visible only within + * the H5FS package. Source files outside the H5FS package should + * include H5FSprivate.h instead. + */ +#ifndef H5FS_PACKAGE +#error "Do not include this file outside the H5FS package!" +#endif + +#ifndef _H5FSpkg_H +#define _H5FSpkg_H + +/* Uncomment this macro to enable debugging output for free space manager */ +/* #define H5FS_DEBUG */ + +/* Uncomment this macro to enable debugging output for free space sections */ +/* #define H5FS_SINFO_DEBUG */ + +/* Uncomment this macro to enable extra sanity checking */ +/* #define H5FS_DEBUG_ASSERT */ + +/* Get package's private header */ +#include "H5FSprivate.h" /* File free space */ + +/* Other private headers needed by this file */ +#include "H5ACprivate.h" /* Metadata cache */ +#include "H5SLprivate.h" /* Skip lists */ + +/**************************/ +/* Package Private Macros */ +/**************************/ + +/* Size of checksum information (on disk) */ +#define H5FS_SIZEOF_CHKSUM 4 + +/* "Standard" size of prefix information for free space metadata */ +#define H5FS_METADATA_PREFIX_SIZE ( \ + H5_SIZEOF_MAGIC /* Signature */ \ + + 1 /* Version */ \ + + H5FS_SIZEOF_CHKSUM /* Metadata checksum */ \ + ) + +/* Size of the fractal heap header on disk */ +#define H5FS_HEADER_SIZE(f) ( \ + /* General metadata fields */ \ + H5FS_METADATA_PREFIX_SIZE \ + \ + /* Free space header specific fields */ \ + + 1 /* Client ID */ \ + + H5F_SIZEOF_SIZE(f) /* Total free space tracked */ \ + + H5F_SIZEOF_SIZE(f) /* Total # of sections tracked */ \ + + H5F_SIZEOF_SIZE(f) /* # of serializable sections tracked */ \ + + H5F_SIZEOF_SIZE(f) /* # of ghost sections tracked */ \ + + 2 /* Number of section classes */ \ + + 2 /* Shrink percent */ \ + + 2 /* Expand percent */ \ + + 2 /* Size of address space for sections (log2 of value) */ \ + + H5F_SIZEOF_SIZE(f) /* Max. size of section to track */ \ + + H5F_SIZEOF_ADDR(f) /* Address of serialized free space sections */ \ + + H5F_SIZEOF_SIZE(f) /* Size of serialized free space sections used */ \ + + H5F_SIZEOF_SIZE(f) /* Allocated size of serialized free space sections */ \ + ) + +/* Size of the free space serialized sections on disk */ +#define H5FS_SINFO_PREFIX_SIZE(f) ( \ + /* General metadata fields */ \ + H5FS_METADATA_PREFIX_SIZE \ + \ + /* Free space serialized sections specific fields */ \ + + H5F_SIZEOF_ADDR(f) /* Address of free space header for these sections */ \ + ) + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +/* Callback info for loading a free space header into the cache */ +typedef struct H5FS_hdr_cache_ud_t { + H5F_t *f; /* File that free space header is within */ + size_t nclasses; /* Number of section classes */ + const H5FS_section_class_t **classes; /* Array of section class info */ + void *cls_init_udata; /* Pointer to class init user data */ + haddr_t addr; /* Address of header */ +} H5FS_hdr_cache_ud_t; + +/* Callback info for loading free space section info into the cache */ +typedef struct H5FS_sinfo_cache_ud_t { + H5F_t *f; /* File that free space section info is within */ + H5FS_t *fspace; /* free space manager */ + hid_t dxpl_id; +} H5FS_sinfo_cache_ud_t; + +/* Free space section bin info */ +typedef struct H5FS_bin_t { + size_t tot_sect_count; /* Total # of sections in this bin */ + size_t serial_sect_count; /* # of serializable sections in this bin */ + size_t ghost_sect_count; /* # of un-serializable sections in this bin */ + H5SL_t *bin_list; /* Skip list of differently sized sections */ +} H5FS_bin_t; + +/* Free space node for free space sections of the same size */ +typedef struct H5FS_node_t { + hsize_t sect_size; /* Size of all sections on list */ + size_t serial_count; /* # of serializable sections on list */ + size_t ghost_count; /* # of un-serializable sections on list */ + H5SL_t *sect_list; /* Skip list to hold pointers to actual free list section node */ +} H5FS_node_t; + +/* Free space section info */ +typedef struct H5FS_sinfo_t { + /* Information for H5AC cache functions, _must_ be first field in structure */ + H5AC_info_t cache_info; + +/* Stored information */ + H5FS_bin_t *bins; /* Array of lists of lists of free sections */ + +/* Computed/cached values */ + hbool_t dirty; /* Whether this info in memory is out of sync w/info in file */ + unsigned nbins; /* Number of bins */ + size_t serial_size; /* Total size of all serializable sections */ + size_t tot_size_count; /* Total number of differently sized sections */ + size_t serial_size_count; /* Total number of differently sized serializable sections */ + size_t ghost_size_count; /* Total number of differently sized un-serializable sections */ + unsigned sect_prefix_size; /* Size of the section serialization prefix (in bytes) */ + unsigned sect_off_size; /* Size of a section offset (in bytes) */ + unsigned sect_len_size; /* Size of a section length (in bytes) */ + H5FS_t *fspace; /* Pointer to free space manager that owns sections */ + +/* Memory data structures (not stored directly) */ + H5SL_t *merge_list; /* Skip list to hold sections for detecting merges */ +} H5FS_sinfo_t; + +/* Free space header info */ +struct H5FS_t { + /* Information for H5AC cache functions, _must_ be first field in structure */ + H5AC_info_t cache_info; + +/* Stored information */ + /* Statistics about sections managed */ + hsize_t tot_space; /* Total amount of space tracked */ + hsize_t tot_sect_count; /* Total # of sections tracked */ + hsize_t serial_sect_count; /* # of serializable sections tracked */ + hsize_t ghost_sect_count; /* # of un-serializable sections tracked */ + + /* Creation parameters */ + H5FS_client_t client; /* Type of user of this free space manager */ + unsigned nclasses; /* Number of section classes handled */ + unsigned shrink_percent; /* Percent of "normal" serialized size to shrink serialized space at */ + unsigned expand_percent; /* Percent of "normal" serialized size to expand serialized space at */ + unsigned max_sect_addr; /* Size of address space free sections are within (log2 of actual value) */ + hsize_t max_sect_size; /* Maximum size of section to track */ + + /* Serialized section information */ + haddr_t sect_addr; /* Address of the section info in the file */ + hsize_t sect_size; /* Size of the section info in the file */ + hsize_t alloc_sect_size; /* Allocated size of the section info in the file */ + +/* Computed/cached values */ + unsigned rc; /* Count of outstanding references to struct */ + haddr_t addr; /* Address of free space header on disk */ + size_t hdr_size; /* Size of free space header on disk */ + H5FS_sinfo_t *sinfo; /* Section information */ + unsigned sinfo_lock_count; /* # of times the section info has been locked */ + hbool_t sinfo_protected; /* Whether the section info was protected when locked */ + hbool_t sinfo_modified; /* Whether the section info has been modified while locked */ + H5AC_protect_t sinfo_accmode; /* Access mode for protecting the section info */ + size_t max_cls_serial_size; /* Max. additional size of serialized form of section */ + hsize_t threshold; /* Threshold for alignment */ + hsize_t alignment; /* Alignment */ + + +/* Memory data structures (not stored directly) */ + H5FS_section_class_t *sect_cls; /* Array of section classes for this free list */ +}; + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + +/* H5FS header inherits cache-like properties from H5AC */ +H5_DLLVAR const H5AC_class_t H5AC_FSPACE_HDR[1]; + +/* H5FS section info inherits cache-like properties from H5AC */ +H5_DLLVAR const H5AC_class_t H5AC_FSPACE_SINFO[1]; + +/* Declare a free list to manage the H5FS_node_t struct */ +H5FL_EXTERN(H5FS_node_t); + +/* Declare a free list to manage the H5FS_bin_t sequence information */ +H5FL_SEQ_EXTERN(H5FS_bin_t); + +/* Declare a free list to manage the H5FS_sinfo_t struct */ +H5FL_EXTERN(H5FS_sinfo_t); + +/* Declare a free list to manage the H5FS_t struct */ +H5FL_EXTERN(H5FS_t); + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +/* Free space manager header routines */ +H5_DLL H5FS_t *H5FS_new(const H5F_t *f, size_t nclasses, + const H5FS_section_class_t *classes[], void *cls_init_udata); +H5_DLL herr_t H5FS_incr(H5FS_t *fspace); +H5_DLL herr_t H5FS_decr(H5FS_t *fspace); +H5_DLL herr_t H5FS_dirty(H5FS_t *fspace); + +/* Free space section routines */ +H5_DLL H5FS_sinfo_t *H5FS_sinfo_new(H5F_t *f, H5FS_t *fspace); + +/* Routines for destroying structures */ +H5_DLL herr_t H5FS_hdr_dest(H5FS_t *hdr); +H5_DLL herr_t H5FS_sinfo_dest(H5FS_sinfo_t *sinfo); + +/* Sanity check routines */ +#ifdef H5FS_DEBUG +H5_DLL herr_t H5FS_assert(const H5FS_t *fspace); +H5_DLL herr_t H5FS_sect_assert(const H5FS_t *fspace); +#endif /* H5FS_DEBUG */ + +/* Testing routines */ +#ifdef H5FS_TESTING +H5_DLL herr_t H5FS_get_cparam_test(const H5FS_t *fh, H5FS_create_t *cparam); +H5_DLL int H5FS_cmp_cparam_test(const H5FS_create_t *cparam1, const H5FS_create_t *cparam2); +#endif /* H5FS_TESTING */ + +#endif /* _H5FSpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5FSpublic.h b/Resources/windows-libs/HDF5/include/H5FSpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..d1bae94ade3cece623108b1362ce322ef2cd45ee --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FSpublic.h @@ -0,0 +1,54 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5FSpublic.h + * May 2 2006 + * Quincey Koziol <koziol@ncsa.uiuc.edu> + * + * Purpose: Public declarations for the file free space package. + * + *------------------------------------------------------------------------- + */ + +#ifndef _H5FSpublic_H +#define _H5FSpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +/*****************/ +/* Public Macros */ +/*****************/ + +/*******************/ +/* Public Typedefs */ +/*******************/ + +/**********************************/ +/* Public API Function Prototypes */ +/**********************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _H5FSpublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5FaccProp.h b/Resources/windows-libs/HDF5/include/H5FaccProp.h new file mode 100644 index 0000000000000000000000000000000000000000..4042eba6f839ebfaeeac61b098022fed3b23a8a4 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FaccProp.h @@ -0,0 +1,148 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +// Class FileAccPropList represents the HDF5 file access property list and +// inherits from DataType. + +#ifndef __H5FileAccPropList_H +#define __H5FileAccPropList_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +//! Class FileAccPropList represents the HDF5 file access property list. +class H5_DLLCPP FileAccPropList : public PropList { + public: + static const FileAccPropList DEFAULT; + + // Creates a file access property list. + FileAccPropList(); + + // Modifies this property list to use the H5FD_STDIO driver + void setStdio() const; + + // Set file driver for this property list + void setDriver(hid_t new_driver_id, const void *new_driver_info) const; + + // Returns a low-level file driver identifier. + hid_t getDriver() const; + + // Sets offset for family driver. + void setFamilyOffset(hsize_t offset) const; + + // Gets offset for family driver. + hsize_t getFamilyOffset() const; + + // Modifies this file access property list to use the sec2 driver. + void setSec2() const; + + // Modifies this file access property list to use the H5FD_CORE + // driver. + void setCore (size_t increment, hbool_t backing_store) const; + + // Queries H5FD_CORE driver properties. + void getCore (size_t& increment, hbool_t& backing_store) const; + + // Sets this file access properties list to the family driver. + void setFamily( hsize_t memb_size, const FileAccPropList& memb_plist ) const; + + // Returns information about the family file access property list. + void getFamily(hsize_t& memb_size, FileAccPropList& memb_plist) const; + FileAccPropList getFamily(hsize_t& memb_size) const; + + // Emulates the old split file driver, + void setSplit(const FileAccPropList& meta_plist, + const FileAccPropList& raw_plist, + const char* meta_ext = ".meta", + const char* raw_ext = ".raw" ) const; + void setSplit(const FileAccPropList& meta_plist, + const FileAccPropList& raw_plist, + const H5std_string& meta_ext = ".meta", + const H5std_string& raw_ext = ".raw") const; + // These two overloaded functions are kept for backward compatibility + // only; they missed the const's and will be removed in future release. + void setSplit(FileAccPropList& meta_plist, FileAccPropList& raw_plist, + const char* meta_ext=".meta", const char* raw_ext=".raw") const; + void setSplit(FileAccPropList& meta_plist, FileAccPropList& raw_plist, + const H5std_string& meta_ext=".meta", + const H5std_string& raw_ext=".raw") const; + + // Sets the maximum size of the data sieve buffer. + void setSieveBufSize(size_t bufsize) const; + + // Returns the current settings for the data sieve buffer size + // property + size_t getSieveBufSize() const; + + // Sets the minimum size of metadata block allocations. + void setMetaBlockSize(hsize_t &block_size) const; + + // Returns the current metadata block size setting. + hsize_t getMetaBlockSize() const; + + // Modifies this file access property list to use the logging driver. + void setLog(const char *logfile, unsigned flags, size_t buf_size) const; + void setLog(const H5std_string& logfile, unsigned flags, size_t buf_size) const; + + // Sets alignment properties of this file access property list + void setAlignment( hsize_t threshold = 1, hsize_t alignment = 1 ) const; + + // Retrieves the current settings for alignment properties from + // this property list. + void getAlignment( hsize_t& threshold, hsize_t& alignment ) const; + + // Sets data type for multi driver. + void setMultiType(H5FD_mem_t dtype) const; + + // Returns the data type property for MULTI driver. + H5FD_mem_t getMultiType() const; + + // Sets the meta data cache and raw data chunk cache parameters. + void setCache( int mdc_nelmts, size_t rdcc_nelmts, size_t rdcc_nbytes, double rdcc_w0 ) const; + + // Queries the meta data cache and raw data chunk cache parameters. + void getCache( int& mdc_nelmts, size_t& rdcc_nelmts, size_t& rdcc_nbytes, double& rdcc_w0 ) const; + + // Sets the degree for the file close behavior. + void setFcloseDegree(H5F_close_degree_t degree); + + // Returns the degree for the file close behavior. + H5F_close_degree_t getFcloseDegree(); + + // Sets garbage collecting references flag. + void setGcReferences( unsigned gc_ref = 0 ) const; + + // Returns garbage collecting references setting. + unsigned getGcReferences() const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("FileAccPropList"); } + + // Copy constructor: creates a copy of a FileAccPropList object. + FileAccPropList( const FileAccPropList& original ); + + // Creates a copy of an existing file access property list + // using the property list id. + FileAccPropList (const hid_t plist_id); + + // Noop destructor + virtual ~FileAccPropList(); +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5FileAccPropList_H diff --git a/Resources/windows-libs/HDF5/include/H5FcreatProp.h b/Resources/windows-libs/HDF5/include/H5FcreatProp.h new file mode 100644 index 0000000000000000000000000000000000000000..4149880cd7ca6d90ff086df7bcdcd3c9e498ae08 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FcreatProp.h @@ -0,0 +1,79 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5FileCreatPropList_H +#define __H5FileCreatPropList_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +//! Class FileCreatPropList represents the HDF5 file create property list. +class H5_DLLCPP FileCreatPropList : public PropList { + public: + // Default file creation property list. + static const FileCreatPropList DEFAULT; + + // Creates a file create property list. + FileCreatPropList(); + + // Retrieves version information for various parts of a file. + void getVersion( unsigned& super, unsigned& freelist, unsigned& stab, unsigned& shhdr ) const; + + // Sets the userblock size field of a file creation property list. + void setUserblock( hsize_t size ) const; + + // Gets the size of a user block in this file creation property list. + hsize_t getUserblock() const; + + // Retrieves the size-of address and size quantities stored in a + // file according to this file creation property list. + void getSizes( size_t& sizeof_addr, size_t& sizeof_size ) const; + + // Sets file size-of addresses and sizes. + void setSizes( size_t sizeof_addr = 4, size_t sizeof_size = 4 ) const; + + // Retrieves the size of the symbol table B-tree 1/2 rank and the + // symbol table leaf node 1/2 size. + void getSymk( unsigned& int_nodes_k, unsigned& leaf_nodes_k ) const; + + // Sets the size of parameters used to control the symbol table nodes. + void setSymk( unsigned int_nodes_k, unsigned leaf_nodes_k ) const; + + // Returns the 1/2 rank of an indexed storage B-tree. + unsigned getIstorek() const; + + // Sets the size of parameter used to control the B-trees for + // indexing chunked datasets. + void setIstorek( unsigned ik ) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("FileCreatPropList"); } + + // Copy constructor: creates a copy of a FileCreatPropList object. + FileCreatPropList(const FileCreatPropList& orig); + + // Creates a copy of an existing file create property list + // using the property list id. + FileCreatPropList (const hid_t plist_id); + + // Noop destructor + virtual ~FileCreatPropList(); +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5FileCreatPropList_H diff --git a/Resources/windows-libs/HDF5/include/H5File.h b/Resources/windows-libs/HDF5/include/H5File.h new file mode 100644 index 0000000000000000000000000000000000000000..0ef85b58a168c0f22fb785c931d155beebf0089e --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5File.h @@ -0,0 +1,124 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5File_H +#define __H5File_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/*! \class H5File + \brief Class H5File represents an HDF5 file. + + It inherits from H5Location and CommonFG. +*/ +class H5_DLLCPP H5File : public H5Location, public CommonFG { + public: + // Creates or opens an HDF5 file. + H5File( const char* name, unsigned int flags, + const FileCreatPropList& create_plist = FileCreatPropList::DEFAULT, + const FileAccPropList& access_plist = FileAccPropList::DEFAULT ); + H5File( const H5std_string& name, unsigned int flags, + const FileCreatPropList& create_plist = FileCreatPropList::DEFAULT, + const FileAccPropList& access_plist = FileAccPropList::DEFAULT ); + + // Open the file + void openFile(const H5std_string& name, unsigned int flags, + const FileAccPropList& access_plist = FileAccPropList::DEFAULT); + void openFile(const char* name, unsigned int flags, + const FileAccPropList& access_plist = FileAccPropList::DEFAULT); + + // Close this file. + virtual void close(); + + // Gets the access property list of this file. + FileAccPropList getAccessPlist() const; + + // Gets the creation property list of this file. + FileCreatPropList getCreatePlist() const; + + // Retrieves the file size of an opened file. + hsize_t getFileSize() const; + + // Returns the amount of free space in the file. + hssize_t getFreeSpace() const; + + // Returns the number of opened object IDs (files, datasets, groups + // and datatypes) in the same file. + ssize_t getObjCount(unsigned types) const; + ssize_t getObjCount() const; + + // Retrieves a list of opened object IDs (files, datasets, groups + // and datatypes) in the same file. + void getObjIDs(unsigned types, size_t max_objs, hid_t *oid_list) const; + + // Returns the pointer to the file handle of the low-level file driver. + void getVFDHandle(void **file_handle) const; + void getVFDHandle(const FileAccPropList& fapl, void **file_handle) const; + void getVFDHandle(FileAccPropList& fapl, void **file_handle) const; // kept for backward compatibility + + // Determines if a file, specified by its name, is in HDF5 format + static bool isHdf5(const char* name ); + static bool isHdf5(const H5std_string& name ); + + // Reopens this file. + void reOpen(); // added for better name + +#ifndef DOXYGEN_SHOULD_SKIP_THIS + void reopen(); // obsolete in favor of reOpen() + + // Gets the file id + virtual hid_t getLocId() const; + +#endif // DOXYGEN_SHOULD_SKIP_THIS + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("H5File"); } + + // Throw file exception. + virtual void throwException(const H5std_string& func_name, const H5std_string& msg) const; + + // Default constructor + H5File(); + + // Copy constructor: makes a copy of the original H5File object. + H5File(const H5File& original); + + // Gets the HDF5 file id. + virtual hid_t getId() const; + + // H5File destructor. + virtual ~H5File(); + + protected: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Sets the HDF5 file id. + virtual void p_setId(const hid_t new_id); +#endif // DOXYGEN_SHOULD_SKIP_THIS + + private: + hid_t id; // HDF5 file id + + // This function is private and contains common code between the + // constructors taking a string or a char* + void p_get_file( const char* name, unsigned int flags, const FileCreatPropList& create_plist, const FileAccPropList& access_plist ); + +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5File_H diff --git a/Resources/windows-libs/HDF5/include/H5FloatType.h b/Resources/windows-libs/HDF5/include/H5FloatType.h new file mode 100644 index 0000000000000000000000000000000000000000..4d5de171fe4ba2e23e48f42597cf5368530b1a09 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5FloatType.h @@ -0,0 +1,75 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5FloatType_H +#define __H5FloatType_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +//! Class FloatType operates on HDF5 floating point datatype. +class H5_DLLCPP FloatType : public AtomType { + public: + // Creates a floating-point type using a predefined type. + FloatType( const PredType& pred_type ); + + // Gets the floating-point datatype of the specified dataset. + FloatType( const DataSet& dataset ); + + // Retrieves the exponent bias of a floating-point type. + size_t getEbias() const; + + // Sets the exponent bias of a floating-point type. + void setEbias( size_t ebias ) const; + + // Retrieves floating point datatype bit field information. + void getFields( size_t& spos, size_t& epos, size_t& esize, size_t& mpos, size_t& msize ) const; + + // Sets locations and sizes of floating point bit fields. + void setFields( size_t spos, size_t epos, size_t esize, size_t mpos, size_t msize ) const; + + // Retrieves the internal padding type for unused bits in floating-point datatypes. + H5T_pad_t getInpad( H5std_string& pad_string ) const; + + // Fills unused internal floating point bits. + void setInpad( H5T_pad_t inpad ) const; + + // Retrieves mantissa normalization of a floating-point datatype. + H5T_norm_t getNorm( H5std_string& norm_string ) const; + + // Sets the mantissa normalization of a floating-point datatype. + void setNorm( H5T_norm_t norm ) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("FloatType"); } + + // Default constructor + FloatType(); + + // Creates a floating-point datatype using an existing id. + FloatType( const hid_t existing_id ); + + // Copy constructor: makes a copy of the original FloatType object. + FloatType( const FloatType& original ); + + // Noop destructor. + virtual ~FloatType(); +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5FloatType_H diff --git a/Resources/windows-libs/HDF5/include/H5Fpkg.h b/Resources/windows-libs/HDF5/include/H5Fpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..1f10dbc88bcc62c5e73d8c505fb6f8887343b4f2 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Fpkg.h @@ -0,0 +1,347 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Thursday, September 28, 2000 + * + * Purpose: This file contains declarations which are visible only within + * the H5F package. Source files outside the H5F package should + * include H5Fprivate.h instead. + */ +#ifndef H5F_PACKAGE +#error "Do not include this file outside the H5F package!" +#endif + +#ifndef _H5Fpkg_H +#define _H5Fpkg_H + +/* Get package's private header */ +#include "H5Fprivate.h" + +/* Other public headers needed by this file */ +#include "H5Bpublic.h" /* B-tree header, for H5B_NUM_BTREE_ID */ + +/* Other private headers needed by this file */ +#include "H5private.h" /* Generic Functions */ +#include "H5ACprivate.h" /* Metadata cache */ +#include "H5FLprivate.h" /* Free Lists */ +#include "H5FOprivate.h" /* File objects */ +#include "H5FSprivate.h" /* File free space */ +#include "H5Gprivate.h" /* Groups */ +#include "H5Oprivate.h" /* Object header messages */ +#include "H5RCprivate.h" /* Reference counted object functions */ + + +/* + * Feature: Define this constant on the compiler command-line if you want to + * see some debugging messages on the debug stream. + */ +#ifdef NDEBUG +# undef H5F_DEBUG +#endif + +/* Define the HDF5 file signature */ +#define H5F_SIGNATURE "\211HDF\r\n\032\n" +#define H5F_SIGNATURE_LEN 8 + +/* Superblock status flags */ +#define H5F_SUPER_WRITE_ACCESS 0x01 +#define H5F_SUPER_FILE_OK 0x02 +#define H5F_SUPER_ALL_FLAGS (H5F_SUPER_WRITE_ACCESS | H5F_SUPER_FILE_OK) + +/* Mask for removing private file access flags */ +#define H5F_ACC_PUBLIC_FLAGS 0x001fu + +/* Free space section+aggregator merge flags */ +#define H5F_FS_MERGE_METADATA 0x01 /* Section can merge with metadata aggregator */ +#define H5F_FS_MERGE_RAWDATA 0x02 /* Section can merge with small 'raw' data aggregator */ + +/* Macro to abstract checking whether file is using a free space manager */ +#define H5F_HAVE_FREE_SPACE_MANAGER(F) TRUE /* Currently always have a free space manager */ + +/* Macros for encoding/decoding superblock */ +#define H5F_MAX_DRVINFOBLOCK_SIZE 1024 /* Maximum size of superblock driver info buffer */ +#define H5F_DRVINFOBLOCK_HDR_SIZE 16 /* Size of superblock driver info header */ + +/* Superblock sizes for various versions */ +#define H5F_SIZEOF_CHKSUM 4 /* Checksum size in the file */ + +/* Fixed-size portion at the beginning of all superblocks */ +#define H5F_SUPERBLOCK_FIXED_SIZE ( H5F_SIGNATURE_LEN \ + + 1) /* superblock version */ + +/* Macros for computing variable-size superblock size */ +#define H5F_SUPERBLOCK_VARLEN_SIZE_COMMON \ + (2 /* freespace, and root group versions */ \ + + 1 /* reserved */ \ + + 3 /* shared header vers, size of address, size of lengths */ \ + + 1 /* reserved */ \ + + 4 /* group leaf k, group internal k */ \ + + 4) /* consistency flags */ +#define H5F_SUPERBLOCK_VARLEN_SIZE_V0(f) \ + ( H5F_SUPERBLOCK_VARLEN_SIZE_COMMON /* Common variable-length info */ \ + + H5F_SIZEOF_ADDR(f) /* base address */ \ + + H5F_SIZEOF_ADDR(f) /* <unused> */ \ + + H5F_SIZEOF_ADDR(f) /* EOF address */ \ + + H5F_SIZEOF_ADDR(f) /* driver block address */ \ + + H5G_SIZEOF_ENTRY(f)) /* root group ptr */ +#define H5F_SUPERBLOCK_VARLEN_SIZE_V1(f) \ + ( H5F_SUPERBLOCK_VARLEN_SIZE_COMMON /* Common variable-length info */ \ + + 2 /* indexed B-tree internal k */ \ + + 2 /* reserved */ \ + + H5F_SIZEOF_ADDR(f) /* base address */ \ + + H5F_SIZEOF_ADDR(f) /* <unused> */ \ + + H5F_SIZEOF_ADDR(f) /* EOF address */ \ + + H5F_SIZEOF_ADDR(f) /* driver block address */ \ + + H5G_SIZEOF_ENTRY(f)) /* root group ptr */ +#define H5F_SUPERBLOCK_VARLEN_SIZE_V2(f) \ + ( 2 /* size of address, size of lengths */ \ + + 1 /* consistency flags */ \ + + H5F_SIZEOF_ADDR(f) /* base address */ \ + + H5F_SIZEOF_ADDR(f) /* superblock extension address */ \ + + H5F_SIZEOF_ADDR(f) /* EOF address */ \ + + H5F_SIZEOF_ADDR(f) /* root group object header address */ \ + + H5F_SIZEOF_CHKSUM) /* superblock checksum (keep this last) */ +#define H5F_SUPERBLOCK_VARLEN_SIZE(v, f) ( \ + (v == 0 ? H5F_SUPERBLOCK_VARLEN_SIZE_V0(f) : 0) \ + + (v == 1 ? H5F_SUPERBLOCK_VARLEN_SIZE_V1(f) : 0) \ + + (v == 2 ? H5F_SUPERBLOCK_VARLEN_SIZE_V2(f) : 0)) + +/* Total size of superblock, depends on superblock version */ +#define H5F_SUPERBLOCK_SIZE(v, f) ( H5F_SUPERBLOCK_FIXED_SIZE \ + + H5F_SUPERBLOCK_VARLEN_SIZE(v, f)) + + +/* Forward declaration external file cache struct used below (defined in + * H5Fefc.c) */ +typedef struct H5F_efc_t H5F_efc_t; + +/* Structure for metadata & "small [raw] data" block aggregation fields */ +struct H5F_blk_aggr_t { + unsigned long feature_flag; /* Feature flag type */ + hsize_t alloc_size; /* Size for allocating new blocks */ + hsize_t tot_size; /* Total amount of bytes aggregated into block */ + hsize_t size; /* Current size of block left */ + haddr_t addr; /* Location of block left */ +}; + +/* Structure for metadata accumulator fields */ +typedef struct H5F_meta_accum_t { + unsigned char *buf; /* Buffer to hold the accumulated metadata */ + haddr_t loc; /* File location (offset) of the accumulated metadata */ + size_t size; /* Size of the accumulated metadata buffer used (in bytes) */ + size_t alloc_size; /* Size of the accumulated metadata buffer allocated (in bytes) */ + size_t dirty_off; /* Offset of the dirty region in the accumulator buffer */ + size_t dirty_len; /* Length of the dirty region in the accumulator buffer */ + hbool_t dirty; /* Flag to indicate that the accumulated metadata is dirty */ +} H5F_meta_accum_t; + +/* Enum for free space manager state */ +typedef enum H5F_fs_state_t { + H5F_FS_STATE_CLOSED, /* Free space manager is closed */ + H5F_FS_STATE_OPEN, /* Free space manager has been opened */ + H5F_FS_STATE_DELETING /* Free space manager is being deleted */ +} H5F_fs_state_t; + +/* A record of the mount table */ +typedef struct H5F_mount_t { + struct H5G_t *group; /* Mount point group held open */ + struct H5F_t *file; /* File mounted at that point */ +} H5F_mount_t; + +/* + * The mount table describes what files are attached to (mounted on) the file + * to which this table belongs. + */ +typedef struct H5F_mtab_t { + unsigned nmounts;/* Number of children which are mounted */ + unsigned nalloc; /* Number of mount slots allocated */ + H5F_mount_t *child; /* An array of mount records */ +} H5F_mtab_t; + +/* Structure specifically to store superblock. This was originally + * maintained entirely within H5F_file_t, but is now extracted + * here because the superblock is now handled by the cache */ +typedef struct H5F_super_t { + H5AC_info_t cache_info; /* Cache entry information structure */ + unsigned super_vers; /* Superblock version */ + uint8_t status_flags; /* File status flags */ + unsigned sym_leaf_k; /* Size of leaves in symbol tables */ + unsigned btree_k[H5B_NUM_BTREE_ID]; /* B-tree key values for each type */ + haddr_t base_addr; /* Absolute base address for rel.addrs. */ + /* (superblock for file is at this offset) */ + haddr_t ext_addr; /* Relative address of superblock extension */ + haddr_t driver_addr; /* File driver information block address */ + haddr_t root_addr; /* Root group address */ + H5G_entry_t *root_ent; /* Root group symbol table entry */ +} H5F_super_t; + +/* + * Define the structure to store the file information for HDF5 files. One of + * these structures is allocated per file, not per H5Fopen(). That is, set of + * H5F_t structs can all point to the same H5F_file_t struct. The `nrefs' + * count in this struct indicates the number of H5F_t structs which are + * pointing to this struct. + */ +struct H5F_file_t { + H5FD_t *lf; /* Lower level file handle for I/O */ + H5F_super_t *sblock; /* Pointer to (pinned) superblock for file */ + unsigned nrefs; /* Ref count for times file is opened */ + unsigned flags; /* Access Permissions for file */ + H5F_mtab_t mtab; /* File mount table */ + H5F_efc_t *efc; /* External file cache */ + + /* Cached values from FCPL/superblock */ + uint8_t sizeof_addr; /* Size of addresses in file */ + uint8_t sizeof_size; /* Size of offsets in file */ + haddr_t sohm_addr; /* Relative address of shared object header message table */ + unsigned sohm_vers; /* Version of shared message table on disk */ + unsigned sohm_nindexes; /* Number of shared messages indexes in the table */ + unsigned long feature_flags; /* VFL Driver feature Flags */ + haddr_t maxaddr; /* Maximum address for file */ + + H5AC_t *cache; /* The object cache */ + H5AC_cache_config_t + mdc_initCacheCfg; /* initial configuration for the */ + /* metadata cache. This structure is */ + /* fixed at creation time and should */ + /* not change thereafter. */ + hid_t fcpl_id; /* File creation property list ID */ + H5F_close_degree_t fc_degree; /* File close behavior degree */ + size_t rdcc_nslots; /* Size of raw data chunk cache (slots) */ + size_t rdcc_nbytes; /* Size of raw data chunk cache (bytes) */ + double rdcc_w0; /* Preempt read chunks first? [0.0..1.0]*/ + size_t sieve_buf_size; /* Size of the data sieve buffer allocated (in bytes) */ + hsize_t threshold; /* Threshold for alignment */ + hsize_t alignment; /* Alignment */ + unsigned gc_ref; /* Garbage-collect references? */ + hbool_t latest_format; /* Always use the latest format? */ + hbool_t store_msg_crt_idx; /* Store creation index for object header messages? */ + unsigned ncwfs; /* Num entries on cwfs list */ + struct H5HG_heap_t **cwfs; /* Global heap cache */ + struct H5G_t *root_grp; /* Open root group */ + H5FO_t *open_objs; /* Open objects in file */ + H5RC_t *grp_btree_shared; /* Ref-counted group B-tree node info */ + + /* File space allocation information */ + hbool_t use_tmp_space; /* Whether temp. file space allocation is allowed */ + haddr_t tmp_addr; /* Next address to use for temp. space in the file */ + unsigned fs_aggr_merge[H5FD_MEM_NTYPES]; /* Flags for whether free space can merge with aggregator(s) */ + H5F_fs_state_t fs_state[H5FD_MEM_NTYPES]; /* State of free space manager for each type */ + haddr_t fs_addr[H5FD_MEM_NTYPES]; /* Address of free space manager info for each type */ + H5FS_t *fs_man[H5FD_MEM_NTYPES]; /* Free space manager for each file space type */ + H5FD_mem_t fs_type_map[H5FD_MEM_NTYPES]; /* Mapping of "real" file space type into tracked type */ + H5F_blk_aggr_t meta_aggr; /* Metadata aggregation info */ + /* (if aggregating metadata allocations) */ + H5F_blk_aggr_t sdata_aggr; /* "Small data" aggregation info */ + /* (if aggregating "small data" allocations) */ + + /* Metadata accumulator information */ + H5F_meta_accum_t accum; /* Metadata accumulator info */ +}; + +/* + * This is the top-level file descriptor. One of these structures is + * allocated every time H5Fopen() is called although they may contain pointers + * to shared H5F_file_t structs. + */ +struct H5F_t { + char *open_name; /* Name used to open file */ + char *actual_name; /* Actual name of the file, after resolving symlinks, etc. */ + char *extpath; /* Path for searching target external link file */ + H5F_file_t *shared; /* The shared file info */ + unsigned nopen_objs; /* Number of open object headers*/ + H5FO_t *obj_count; /* # of time each object is opened through top file structure */ + hid_t file_id; /* ID of this file */ + hbool_t closing; /* File is in the process of being closed */ + struct H5F_t *parent; /* Parent file that this file is mounted to */ + unsigned nmounts; /* Number of children mounted to this file */ +}; + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + +/* Declare a free list to manage the H5F_t struct */ +H5FL_EXTERN(H5F_t); + +/* Declare a free list to manage the H5F_file_t struct */ +H5FL_EXTERN(H5F_file_t); + +H5_DLLVAR const H5AC_class_t H5AC_SUPERBLOCK[1]; + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +/* General routines */ +H5_DLL herr_t H5F_init(void); +H5_DLL herr_t H5F__term_deprec_interface(void); +H5_DLL herr_t H5F_locate_signature(H5FD_t *file, hid_t dxpl_id, haddr_t *sig_addr); +H5_DLL herr_t H5F_flush(H5F_t *f, hid_t dxpl_id, hbool_t closing); + +/* File mount related routines */ +H5_DLL herr_t H5F_close_mounts(H5F_t *f); +H5_DLL int H5F_term_unmount_cb(void *obj_ptr, hid_t obj_id, void *key); +H5_DLL herr_t H5F_mount_count_ids(H5F_t *f, unsigned *nopen_files, unsigned *nopen_objs); + +/* Superblock related routines */ +H5_DLL herr_t H5F_super_init(H5F_t *f, hid_t dxpl_id); +H5_DLL herr_t H5F_super_read(H5F_t *f, hid_t dxpl_id); +H5_DLL herr_t H5F_super_size(H5F_t *f, hid_t dxpl_id, hsize_t *super_size, + hsize_t *super_ext_info); +H5_DLL herr_t H5F_super_free(H5F_super_t *sblock); + +/* Superblock extension related routines */ +H5_DLL herr_t H5F_super_ext_open(H5F_t *f, haddr_t ext_addr, H5O_loc_t *ext_ptr); +H5_DLL herr_t H5F_super_ext_write_msg(H5F_t *f, hid_t dxpl_id, void *mesg, unsigned id, hbool_t may_create); +H5_DLL herr_t H5F_super_ext_close(H5F_t *f, H5O_loc_t *ext_ptr, hid_t dxpl_id, + hbool_t was_created); + +/* Metadata accumulator routines */ +H5_DLL herr_t H5F_accum_read(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, + haddr_t addr, size_t size, void *buf); +H5_DLL herr_t H5F_accum_write(const H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, + haddr_t addr, size_t size, const void *buf); +H5_DLL herr_t H5F_accum_free(H5F_t *f, hid_t dxpl_id, H5FD_mem_t type, + haddr_t addr, hsize_t size); +H5_DLL herr_t H5F_accum_flush(const H5F_t *f, hid_t dxpl_id); +H5_DLL herr_t H5F_accum_reset(const H5F_t *f, hid_t dxpl_id, hbool_t flush); + +/* Shared file list related routines */ +H5_DLL herr_t H5F_sfile_add(H5F_file_t *shared); +H5_DLL H5F_file_t * H5F_sfile_search(H5FD_t *lf); +H5_DLL herr_t H5F_sfile_remove(H5F_file_t *shared); + +/* External file cache routines */ +H5_DLL H5F_efc_t *H5F_efc_create(unsigned max_nfiles); +H5_DLL unsigned H5F_efc_max_nfiles(H5F_efc_t *efc); +H5_DLL herr_t H5F_efc_release(H5F_efc_t *efc); +H5_DLL herr_t H5F_efc_destroy(H5F_efc_t *efc); +H5_DLL herr_t H5F_efc_try_close(H5F_t *f); + +/* Testing functions */ +#ifdef H5F_TESTING +H5_DLL herr_t H5F_get_sohm_mesg_count_test(hid_t fid, unsigned type_id, + size_t *mesg_count); +H5_DLL herr_t H5F_check_cached_stab_test(hid_t file_id); +H5_DLL herr_t H5F_get_maxaddr_test(hid_t file_id, haddr_t *maxaddr); +#endif /* H5F_TESTING */ + +#endif /* _H5Fpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Fpublic.h b/Resources/windows-libs/HDF5/include/H5Fpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..8466a26aa6c28d9c309c70a4d0129b0af533254d --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Fpublic.h @@ -0,0 +1,196 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5F module. + */ +#ifndef _H5Fpublic_H +#define _H5Fpublic_H + +/* Public header files needed by this file */ +#include "H5public.h" +#include "H5ACpublic.h" +#include "H5Ipublic.h" + +/* When this header is included from a private header, don't make calls to H5check() */ +#undef H5CHECK +#ifndef _H5private_H +#define H5CHECK H5check(), +#else /* _H5private_H */ +#define H5CHECK +#endif /* _H5private_H */ + +/* + * These are the bits that can be passed to the `flags' argument of + * H5Fcreate() and H5Fopen(). Use the bit-wise OR operator (|) to combine + * them as needed. As a side effect, they call H5check_version() to make sure + * that the application is compiled with a version of the hdf5 header files + * which are compatible with the library to which the application is linked. + * We're assuming that these constants are used rather early in the hdf5 + * session. + * + */ +#define H5F_ACC_RDONLY (H5CHECK 0x0000u) /*absence of rdwr => rd-only */ +#define H5F_ACC_RDWR (H5CHECK 0x0001u) /*open for read and write */ +#define H5F_ACC_TRUNC (H5CHECK 0x0002u) /*overwrite existing files */ +#define H5F_ACC_EXCL (H5CHECK 0x0004u) /*fail if file already exists*/ +#define H5F_ACC_DEBUG (H5CHECK 0x0008u) /*print debug info */ +#define H5F_ACC_CREAT (H5CHECK 0x0010u) /*create non-existing files */ + +/* Value passed to H5Pset_elink_acc_flags to cause flags to be taken from the + * parent file. */ +#define H5F_ACC_DEFAULT (H5CHECK 0xffffu) /*ignore setting on lapl */ + +/* Flags for H5Fget_obj_count() & H5Fget_obj_ids() calls */ +#define H5F_OBJ_FILE (0x0001u) /* File objects */ +#define H5F_OBJ_DATASET (0x0002u) /* Dataset objects */ +#define H5F_OBJ_GROUP (0x0004u) /* Group objects */ +#define H5F_OBJ_DATATYPE (0x0008u) /* Named datatype objects */ +#define H5F_OBJ_ATTR (0x0010u) /* Attribute objects */ +#define H5F_OBJ_ALL (H5F_OBJ_FILE|H5F_OBJ_DATASET|H5F_OBJ_GROUP|H5F_OBJ_DATATYPE|H5F_OBJ_ATTR) +#define H5F_OBJ_LOCAL (0x0020u) /* Restrict search to objects opened through current file ID */ + /* (as opposed to objects opened through any file ID accessing this file) */ + +#define H5F_FAMILY_DEFAULT (hsize_t)0 + +#ifdef H5_HAVE_PARALLEL +/* + * Use this constant string as the MPI_Info key to set H5Fmpio debug flags. + * To turn on H5Fmpio debug flags, set the MPI_Info value with this key to + * have the value of a string consisting of the characters that turn on the + * desired flags. + */ +#define H5F_MPIO_DEBUG_KEY "H5F_mpio_debug_key" +#endif /* H5_HAVE_PARALLEL */ + +/* The difference between a single file and a set of mounted files */ +typedef enum H5F_scope_t { + H5F_SCOPE_LOCAL = 0, /*specified file handle only */ + H5F_SCOPE_GLOBAL = 1 /*entire virtual file */ +} H5F_scope_t; + +/* Unlimited file size for H5Pset_external() */ +#define H5F_UNLIMITED ((hsize_t)(-1L)) + +/* How does file close behave? + * H5F_CLOSE_DEFAULT - Use the degree pre-defined by underlining VFL + * H5F_CLOSE_WEAK - file closes only after all opened objects are closed + * H5F_CLOSE_SEMI - if no opened objects, file is close; otherwise, file + close fails + * H5F_CLOSE_STRONG - if there are opened objects, close them first, then + close file + */ +typedef enum H5F_close_degree_t { + H5F_CLOSE_DEFAULT = 0, + H5F_CLOSE_WEAK = 1, + H5F_CLOSE_SEMI = 2, + H5F_CLOSE_STRONG = 3 +} H5F_close_degree_t; + +/* Current "global" information about file */ +/* (just size info currently) */ +typedef struct H5F_info_t { + hsize_t super_ext_size; /* Superblock extension size */ + struct { + hsize_t hdr_size; /* Shared object header message header size */ + H5_ih_info_t msgs_info; /* Shared object header message index & heap size */ + } sohm; +} H5F_info_t; + +/* + * Types of allocation requests. The values larger than H5FD_MEM_DEFAULT + * should not change other than adding new types to the end. These numbers + * might appear in files. + * + * Note: please change the log VFD flavors array if you change this + * enumeration. + */ +typedef enum H5F_mem_t { + H5FD_MEM_NOLIST = -1, /* Data should not appear in the free list. + * Must be negative. + */ + H5FD_MEM_DEFAULT = 0, /* Value not yet set. Can also be the + * datatype set in a larger allocation + * that will be suballocated by the library. + * Must be zero. + */ + H5FD_MEM_SUPER = 1, /* Superblock data */ + H5FD_MEM_BTREE = 2, /* B-tree data */ + H5FD_MEM_DRAW = 3, /* Raw data (content of datasets, etc.) */ + H5FD_MEM_GHEAP = 4, /* Global heap data */ + H5FD_MEM_LHEAP = 5, /* Local heap data */ + H5FD_MEM_OHDR = 6, /* Object header data */ + + H5FD_MEM_NTYPES /* Sentinel value - must be last */ +} H5F_mem_t; + +/* Library's file format versions */ +typedef enum H5F_libver_t { + H5F_LIBVER_EARLIEST, /* Use the earliest possible format for storing objects */ + H5F_LIBVER_LATEST /* Use the latest possible format available for storing objects*/ +} H5F_libver_t; + +/* Define file format version for 1.8 to prepare for 1.10 release. + * (Not used anywhere now)*/ +#define H5F_LIBVER_18 H5F_LIBVER_LATEST + +#ifdef __cplusplus +extern "C" { +#endif + +/* Functions in H5F.c */ +H5_DLL htri_t H5Fis_hdf5(const char *filename); +H5_DLL hid_t H5Fcreate(const char *filename, unsigned flags, + hid_t create_plist, hid_t access_plist); +H5_DLL hid_t H5Fopen(const char *filename, unsigned flags, + hid_t access_plist); +H5_DLL hid_t H5Freopen(hid_t file_id); +H5_DLL herr_t H5Fflush(hid_t object_id, H5F_scope_t scope); +H5_DLL herr_t H5Fclose(hid_t file_id); +H5_DLL hid_t H5Fget_create_plist(hid_t file_id); +H5_DLL hid_t H5Fget_access_plist(hid_t file_id); +H5_DLL herr_t H5Fget_intent(hid_t file_id, unsigned * intent); +H5_DLL ssize_t H5Fget_obj_count(hid_t file_id, unsigned types); +H5_DLL ssize_t H5Fget_obj_ids(hid_t file_id, unsigned types, size_t max_objs, hid_t *obj_id_list); +H5_DLL herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl, void **file_handle); +H5_DLL herr_t H5Fmount(hid_t loc, const char *name, hid_t child, hid_t plist); +H5_DLL herr_t H5Funmount(hid_t loc, const char *name); +H5_DLL hssize_t H5Fget_freespace(hid_t file_id); +H5_DLL herr_t H5Fget_filesize(hid_t file_id, hsize_t *size); +H5_DLL ssize_t H5Fget_file_image(hid_t file_id, void * buf_ptr, size_t buf_len); +H5_DLL herr_t H5Fget_mdc_config(hid_t file_id, + H5AC_cache_config_t * config_ptr); +H5_DLL herr_t H5Fset_mdc_config(hid_t file_id, + H5AC_cache_config_t * config_ptr); +H5_DLL herr_t H5Fget_mdc_hit_rate(hid_t file_id, double * hit_rate_ptr); +H5_DLL herr_t H5Fget_mdc_size(hid_t file_id, + size_t * max_size_ptr, + size_t * min_clean_size_ptr, + size_t * cur_size_ptr, + int * cur_num_entries_ptr); +H5_DLL herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id); +H5_DLL ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size); +H5_DLL herr_t H5Fget_info(hid_t obj_id, H5F_info_t *bh_info); +H5_DLL herr_t H5Fclear_elink_file_cache(hid_t file_id); +#ifdef H5_HAVE_PARALLEL +H5_DLL herr_t H5Fset_mpi_atomicity(hid_t file_id, hbool_t flag); +H5_DLL herr_t H5Fget_mpi_atomicity(hid_t file_id, hbool_t *flag); +#endif /* H5_HAVE_PARALLEL */ + +#ifdef __cplusplus +} +#endif +#endif /* _H5Fpublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Gpkg.h b/Resources/windows-libs/HDF5/include/H5Gpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..b194adb19f001b0e2bf9458cbcd5f65cbfdbcf34 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Gpkg.h @@ -0,0 +1,539 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke <matzke@llnl.gov> + * Thursday, September 18, 1997 + * + * Purpose: This file contains declarations which are visible + * only within the H5G package. Source files outside the + * H5G package should include H5Gprivate.h instead. + */ +#ifndef H5G_PACKAGE +#error "Do not include this file outside the H5G package!" +#endif + +#ifndef _H5Gpkg_H +#define _H5Gpkg_H + +/* Get package's private header */ +#include "H5Gprivate.h" + +/* Other private headers needed by this file */ +#include "H5B2private.h" /* v2 B-trees */ +#include "H5FLprivate.h" /* Free Lists */ +#include "H5HFprivate.h" /* Fractal heaps */ +#include "H5HLprivate.h" /* Local Heaps */ +#include "H5Oprivate.h" /* Object headers */ +#include "H5SLprivate.h" /* Skip lists */ + +/**************************/ +/* Package Private Macros */ +/**************************/ + +/* Standard length of fractal heap ID for link */ +#define H5G_DENSE_FHEAP_ID_LEN 7 + +/* Size of a symbol table node on disk */ +#define H5G_NODE_SIZE(f) ( \ + /* General metadata fields */ \ + H5_SIZEOF_MAGIC \ + + 1 /* Version */ \ + + 1 /* Reserved */ \ + + 2 /* Number of symbols */ \ + \ + /* Entries */ \ + + ((2 * H5F_SYM_LEAF_K(f)) * H5G_SIZEOF_ENTRY(f)) \ + ) + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +/* + * Various types of object header information can be cached in a symbol + * table entry (it's normal home is the object header to which the entry + * points). This datatype determines what (if anything) is cached in the + * symbol table entry. + */ +typedef enum H5G_cache_type_t { + H5G_CACHED_ERROR = -1, /*force enum to be signed */ + H5G_NOTHING_CACHED = 0, /*nothing is cached, must be 0 */ + H5G_CACHED_STAB = 1, /*symbol table, `stab' */ + H5G_CACHED_SLINK = 2, /*symbolic link */ + + H5G_NCACHED /*THIS MUST BE LAST */ +} H5G_cache_type_t; + +/* + * A symbol table entry caches these parameters from object header + * messages... The values are entered into the symbol table when an object + * header is created (by hand) and are extracted from the symbol table with a + * callback function registered in H5O_init_interface(). Be sure to update + * H5G_ent_decode(), H5G_ent_encode(), and H5G__ent_debug() as well. + */ +typedef union H5G_cache_t { + struct { + haddr_t btree_addr; /*file address of symbol table B-tree*/ + haddr_t heap_addr; /*file address of stab name heap */ + } stab; + + struct { + size_t lval_offset; /*link value offset */ + } slink; +} H5G_cache_t; + +/* + * A symbol table entry. The two important fields are `name_off' and + * `header'. The remaining fields are used for caching information that + * also appears in the object header to which this symbol table entry + * points. + */ +struct H5G_entry_t { + H5G_cache_type_t type; /*type of information cached */ + H5G_cache_t cache; /*cached data from object header */ + size_t name_off; /*offset of name within name heap */ + haddr_t header; /*file address of object header */ +}; + +/* + * A symbol table node is a collection of symbol table entries. It can + * be thought of as the lowest level of the B-link tree that points to + * a collection of symbol table entries that belong to a specific symbol + * table or group. + */ +typedef struct H5G_node_t { + H5AC_info_t cache_info; /* Information for H5AC cache functions, _must_ be */ + /* first field in structure */ + size_t node_size; /* Size of node on disk */ + unsigned nsyms; /* Number of symbols */ + H5G_entry_t *entry; /* Array of symbol table entries */ +} H5G_node_t; + +/* + * Shared information for all open group objects + */ +struct H5G_shared_t { + int fo_count; /* open file object count */ + hbool_t mounted; /* Group is mount point */ +}; + +/* + * A group handle passed around through layers of the library within and + * above the H5G layer. + */ +struct H5G_t { + H5G_shared_t *shared; /* Shared file object data */ + H5O_loc_t oloc; /* Object location for group */ + H5G_name_t path; /* Group hierarchy path */ +}; + +/* Link iteration operator for internal library callbacks */ +typedef herr_t (*H5G_lib_iterate_t)(const H5O_link_t *lnk, void *op_data); + +/* Data structure to hold table of links for a group */ +typedef struct { + size_t nlinks; /* # of links in table */ + H5O_link_t *lnks; /* Pointer to array of links */ +} H5G_link_table_t; + +/* + * Common data exchange structure for symbol table nodes. This structure is + * passed through the B-link tree layer to the methods for the objects + * to which the B-link tree points. + * + * It's also used for B-tree iterators which require no additional info. + * + */ +typedef struct H5G_bt_common_t { + /* downward */ + const char *name; /*points to temporary memory */ + H5HL_t *heap; /*symbol table heap */ +} H5G_bt_common_t; + +/* + * Data exchange structure for symbol table nodes. This structure is + * passed through the B-link tree layer to the insert method for entries. + */ +typedef struct H5G_bt_ins_t { + /* downward */ + H5G_bt_common_t common; /* Common info for B-tree user data (must be first) */ + const H5O_link_t *lnk; /* Link to insert into table */ + H5O_type_t obj_type; /* Type of object being inserted */ + const void *crt_info; /* Creation info for object being inserted */ +} H5G_bt_ins_t; + +/* + * Data exchange structure for symbol table nodes. This structure is + * passed through the B-link tree layer to the remove method for entries. + */ +typedef struct H5G_bt_rm_t { + /* downward */ + H5G_bt_common_t common; /* Common info for B-tree user data (must be first) */ + H5RS_str_t *grp_full_path_r; /* Full path of group where link is removed */ +} H5G_bt_rm_t; + +/* Typedef for B-tree 'find' operation */ +typedef herr_t (*H5G_bt_find_op_t)(const H5G_entry_t *ent/*in*/, void *operator_data/*in,out*/); + +/* + * Data exchange structure for symbol table nodes. This structure is + * passed through the B-link tree layer to the 'find' method for entries. + */ +typedef struct H5G_bt_lkp_t { + /* downward */ + H5G_bt_common_t common; /* Common info for B-tree user data (must be first) */ + H5G_bt_find_op_t op; /* Operator to call when correct entry is found */ + void *op_data; /* Data to pass to operator */ + + /* upward */ +} H5G_bt_lkp_t; + +/* + * Data exchange structure to pass through the B-tree layer for the + * H5B_iterate function. + */ +typedef struct H5G_bt_it_it_t { + /* downward */ + H5HL_t *heap; /*symbol table heap */ + hsize_t skip; /*initial entries to skip */ + H5G_lib_iterate_t op; /*iteration operator */ + void *op_data; /*user-defined operator data */ + + /* upward */ + hsize_t *final_ent; /*final entry looked at */ +} H5G_bt_it_it_t; + +/* Data passed through B-tree iteration for copying copy symbol table content */ +typedef struct H5G_bt_it_cpy_t { + const H5O_loc_t *src_oloc; /* Source object location */ + haddr_t src_heap_addr; /* Heap address of the source symbol table */ + H5F_t *dst_file; /* File of destination group */ + const H5O_stab_t *dst_stab; /* Symbol table message for destination group */ + H5O_copy_t *cpy_info; /* Information for copy operation */ +} H5G_bt_it_cpy_t; + +/* Common information for "by index" lookups in symbol tables */ +typedef struct H5G_bt_it_idx_common_t { + /* downward */ + hsize_t idx; /* Index of group member to be queried */ + hsize_t num_objs; /* The number of objects having been traversed */ + H5G_bt_find_op_t op; /* Operator to call when correct entry is found */ +} H5G_bt_it_idx_common_t; + +/* Data passed through B-tree iteration for building a table of the links */ +typedef struct H5G_bt_it_bt_t { + /* downward */ + size_t alloc_nlinks; /* Number of links allocated in table */ + H5HL_t *heap; /* Symbol table heap */ + + /* upward */ + H5G_link_table_t *ltable; /* Link table to add information to */ +} H5G_bt_it_bt_t; + +/* Typedefs for "new format" groups */ +/* (fractal heap & v2 B-tree info) */ + +/* Typedef for native 'name' field index records in the v2 B-tree */ +/* (Keep 'id' field first so generic record handling in callbacks works) */ +typedef struct H5G_dense_bt2_name_rec_t { + uint8_t id[H5G_DENSE_FHEAP_ID_LEN]; /* Heap ID for link */ + uint32_t hash; /* Hash of 'name' field value */ +} H5G_dense_bt2_name_rec_t; + +/* Typedef for native 'creation order' field index records in the v2 B-tree */ +/* (Keep 'id' field first so generic record handling in callbacks works) */ +typedef struct H5G_dense_bt2_corder_rec_t { + uint8_t id[H5G_DENSE_FHEAP_ID_LEN]; /* Heap ID for link */ + int64_t corder; /* 'creation order' field value */ +} H5G_dense_bt2_corder_rec_t; + +/* + * Common data exchange structure for dense link storage. This structure is + * passed through the v2 B-tree layer to the methods for the objects + * to which the v2 B-tree points. + */ +typedef struct H5G_bt2_ud_common_t { + /* downward */ + H5F_t *f; /* Pointer to file that fractal heap is in */ + hid_t dxpl_id; /* DXPL for operation */ + H5HF_t *fheap; /* Fractal heap handle */ + const char *name; /* Name of link to compare */ + uint32_t name_hash; /* Hash of name of link to compare */ + int64_t corder; /* Creation order value of link to compare */ + H5B2_found_t found_op; /* Callback when correct link is found */ + void *found_op_data; /* Callback data when correct link is found */ +} H5G_bt2_ud_common_t; + +/* + * Data exchange structure for dense link storage. This structure is + * passed through the v2 B-tree layer when inserting links. + */ +typedef struct H5G_bt2_ud_ins_t { + /* downward */ + H5G_bt2_ud_common_t common; /* Common info for B-tree user data (must be first) */ + uint8_t id[H5G_DENSE_FHEAP_ID_LEN]; /* Heap ID of link to insert */ +} H5G_bt2_ud_ins_t; + +/* Typedef for group creation operation */ +typedef struct H5G_obj_create_t{ + hid_t gcpl_id; /* Group creation property list */ + H5G_cache_type_t cache_type; /* Type of symbol table entry cache */ + H5G_cache_t cache; /* Cached data for symbol table entry */ +} H5G_obj_create_t; + +/* Callback information for copying groups */ +typedef struct H5G_copy_file_ud_t { + H5O_copy_file_ud_common_t common; /* Shared information (must be first) */ + H5G_cache_type_t cache_type; /* Type of symbol table entry cache */ + H5G_cache_t cache; /* Cached data for symbol table entry */ +} H5G_copy_file_ud_t; + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + +/* + * This is the class identifier to give to the B-tree functions. + */ +H5_DLLVAR H5B_class_t H5B_SNODE[1]; + +/* The cache subclass */ +H5_DLLVAR const H5AC_class_t H5AC_SNODE[1]; + +/* The v2 B-tree class for indexing 'name' field on links */ +H5_DLLVAR const H5B2_class_t H5G_BT2_NAME[1]; + +/* The v2 B-tree class for indexing 'creation order' field on links */ +H5_DLLVAR const H5B2_class_t H5G_BT2_CORDER[1]; + +/* Free list for managing H5G_t structs */ +H5FL_EXTERN(H5G_t); + +/* Free list for managing H5G_shared_t structs */ +H5FL_EXTERN(H5G_shared_t); + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +/* + * General group routines + */ +H5_DLL H5G_t *H5G__create(H5F_t *file, H5G_obj_create_t *gcrt_info, + hid_t dxpl_id); +H5_DLL H5G_t *H5G__create_named(const H5G_loc_t *loc, const char *name, + hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id, hid_t dxpl_id); +H5_DLL H5G_t *H5G__open_name(const H5G_loc_t *loc, const char *name, + hid_t gapl_id, hid_t dxpl_id); + +/* + * Group hierarchy traversal routines + */ +H5_DLL herr_t H5G__traverse_special(const H5G_loc_t *grp_loc, + const H5O_link_t *lnk, unsigned target, size_t *nlinks, hbool_t last_comp, + H5G_loc_t *obj_loc, hbool_t *obj_exists, hid_t lapl_id, hid_t dxpl_id); + +/* + * Utility functions + */ +H5_DLL herr_t H5G__init(void); +H5_DLL herr_t H5G__term_deprec_interface(void); +H5_DLL const char *H5G__component(const char *name, size_t *size_p); + +/* + * Functions that understand symbol tables but not names. The + * functions that understand names are exported to the rest of + * the library and appear in H5Gprivate.h. + */ +H5_DLL herr_t H5G__stab_create(H5O_loc_t *grp_oloc, hid_t dxpl_id, + const H5O_ginfo_t *ginfo, H5O_stab_t *stab); +H5_DLL herr_t H5G__stab_create_components(H5F_t *f, H5O_stab_t *stab, size_t size_hint, hid_t dxpl_id); +H5_DLL herr_t H5G__stab_insert(const H5O_loc_t *grp_oloc, const char *name, + H5O_link_t *obj_lnk, H5O_type_t obj_type, const void *crt_info, + hid_t dxpl_id); +H5_DLL herr_t H5G__stab_insert_real(H5F_t *f, const H5O_stab_t *stab, + const char *name, H5O_link_t *obj_lnk, H5O_type_t obj_type, + const void *crt_info, hid_t dxpl_id); +H5_DLL herr_t H5G__stab_delete(H5F_t *f, hid_t dxpl_id, const H5O_stab_t *stab); +H5_DLL herr_t H5G__stab_iterate(const H5O_loc_t *oloc, hid_t dxpl_id, H5_iter_order_t order, + hsize_t skip, hsize_t *last_lnk, H5G_lib_iterate_t op, void *op_data); +H5_DLL herr_t H5G__stab_count(struct H5O_loc_t *oloc, hsize_t *num_objs, hid_t dxpl_id); +H5_DLL herr_t H5G__stab_bh_size(H5F_t *f, hid_t dxpl_id, const H5O_stab_t *stab, + H5_ih_info_t *bh_info); +H5_DLL ssize_t H5G__stab_get_name_by_idx(const H5O_loc_t *oloc, H5_iter_order_t order, + hsize_t n, char* name, size_t size, hid_t dxpl_id); +H5_DLL herr_t H5G__stab_remove(const H5O_loc_t *oloc, hid_t dxpl_id, + H5RS_str_t *grp_full_path_r, const char *name); +H5_DLL herr_t H5G__stab_remove_by_idx(const H5O_loc_t *oloc, hid_t dxpl_id, + H5RS_str_t *grp_full_path_r, H5_iter_order_t order, hsize_t n); +H5_DLL herr_t H5G__stab_lookup(const H5O_loc_t *grp_oloc, const char *name, + H5O_link_t *lnk, hid_t dxpl_id); +H5_DLL herr_t H5G__stab_lookup_by_idx(const H5O_loc_t *grp_oloc, H5_iter_order_t order, + hsize_t n, H5O_link_t *lnk, hid_t dxpl_id); +#ifndef H5_STRICT_FORMAT_CHECKS +H5_DLL herr_t H5G__stab_valid(H5O_loc_t *grp_oloc, hid_t dxpl_id, + H5O_stab_t *alt_stab); +#endif /* H5_STRICT_FORMAT_CHECKS */ +#ifndef H5_NO_DEPRECATED_SYMBOLS +H5_DLL H5G_obj_t H5G__stab_get_type_by_idx(H5O_loc_t *oloc, hsize_t idx, + hid_t dxpl_id); +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + + +/* + * Functions that understand symbol table entries. + */ +H5_DLL void H5G__ent_copy(H5G_entry_t *dst, const H5G_entry_t *src, + H5_copy_depth_t depth); +H5_DLL void H5G__ent_reset(H5G_entry_t *ent); +H5_DLL herr_t H5G__ent_decode_vec(const H5F_t *f, const uint8_t **pp, + H5G_entry_t *ent, unsigned n); +H5_DLL herr_t H5G__ent_encode_vec(const H5F_t *f, uint8_t **pp, + const H5G_entry_t *ent, unsigned n); +H5_DLL herr_t H5G__ent_convert(H5F_t *f, hid_t dxpl_id, H5HL_t *heap, + const char *name, const H5O_link_t *lnk, H5O_type_t obj_type, + const void *crt_info, H5G_entry_t *ent); +H5_DLL herr_t H5G__ent_debug(const H5G_entry_t *ent, FILE * stream, int indent, + int fwidth, const H5HL_t *heap); + +/* Functions that understand symbol table nodes */ +H5_DLL herr_t H5G__node_init(H5F_t *f); +H5_DLL int H5G__node_iterate(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr, + const void *_rt_key, void *_udata); +H5_DLL int H5G__node_sumup(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr, + const void *_rt_key, void *_udata); +H5_DLL int H5G__node_by_idx(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr, + const void *_rt_key, void *_udata); +H5_DLL int H5G__node_copy(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr, + const void *_rt_key, void *_udata); +H5_DLL int H5G__node_build_table(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr, + const void *_rt_key, void *_udata); +H5_DLL herr_t H5G__node_iterate_size(H5F_t *f, hid_t dxpl_id, const void *_lt_key, haddr_t addr, + const void *_rt_key, void *_udata); +H5_DLL herr_t H5G__node_free(H5G_node_t *sym); + +/* Functions that understand links in groups */ +H5_DLL herr_t H5G__ent_to_link(H5O_link_t *lnk, const H5HL_t *heap, + const H5G_entry_t *ent, const char *name); +H5_DLL herr_t H5G__link_to_loc(const H5G_loc_t *grp_loc, const H5O_link_t *lnk, + H5G_loc_t *obj_loc); +H5_DLL herr_t H5G__link_sort_table(H5G_link_table_t *ltable, H5_index_t idx_type, + H5_iter_order_t order); +H5_DLL herr_t H5G__link_iterate_table(const H5G_link_table_t *ltable, + hsize_t skip, hsize_t *last_lnk, const H5G_lib_iterate_t op, void *op_data); +H5_DLL herr_t H5G__link_release_table(H5G_link_table_t *ltable); +H5_DLL herr_t H5G__link_name_replace(H5F_t *file, hid_t dxpl_id, + H5RS_str_t *grp_full_path_r, const H5O_link_t *lnk); + +/* Functions that understand "compact" link storage */ +H5_DLL herr_t H5G__compact_insert(const H5O_loc_t *grp_oloc, H5O_link_t *obj_lnk, + hid_t dxpl_id); +H5_DLL ssize_t H5G__compact_get_name_by_idx(const H5O_loc_t *oloc, hid_t dxpl_id, + const H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order, + hsize_t idx, char *name, size_t size); +H5_DLL herr_t H5G__compact_remove(const H5O_loc_t *oloc, hid_t dxpl_id, + H5RS_str_t *grp_full_path_r, const char *name); +H5_DLL herr_t H5G__compact_remove_by_idx(const H5O_loc_t *oloc, hid_t dxpl_id, + const H5O_linfo_t *linfo, H5RS_str_t *grp_full_path_r, H5_index_t idx_type, + H5_iter_order_t order, hsize_t n); +H5_DLL herr_t H5G__compact_iterate(const H5O_loc_t *oloc, hid_t dxpl_id, + const H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order, + hsize_t skip, hsize_t *last_lnk, H5G_lib_iterate_t op, void *op_data); +H5_DLL htri_t H5G__compact_lookup(const H5O_loc_t *grp_oloc, const char *name, + H5O_link_t *lnk, hid_t dxpl_id); +H5_DLL herr_t H5G__compact_lookup_by_idx(const H5O_loc_t *oloc, hid_t dxpl_id, + const H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order, + hsize_t n, H5O_link_t *lnk); +#ifndef H5_NO_DEPRECATED_SYMBOLS +H5_DLL H5G_obj_t H5G__compact_get_type_by_idx(H5O_loc_t *oloc, hid_t dxpl_id, + const H5O_linfo_t *linfo, hsize_t idx); +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +/* Functions that understand "dense" link storage */ +H5_DLL herr_t H5G__dense_build_table(H5F_t *f, hid_t dxpl_id, const H5O_linfo_t *linfo, + H5_index_t idx_type, H5_iter_order_t order, H5G_link_table_t *ltable); +H5_DLL herr_t H5G__dense_create(H5F_t *f, hid_t dxpl_id, H5O_linfo_t *linfo, + const H5O_pline_t *pline); +H5_DLL herr_t H5G__dense_insert(H5F_t *f, hid_t dxpl_id, + const H5O_linfo_t *linfo, const H5O_link_t *lnk); +H5_DLL htri_t H5G__dense_lookup(H5F_t *f, hid_t dxpl_id, + const H5O_linfo_t *linfo, const char *name, H5O_link_t *lnk); +H5_DLL herr_t H5G__dense_lookup_by_idx(H5F_t *f, hid_t dxpl_id, + const H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order, + hsize_t n, H5O_link_t *lnk); +H5_DLL herr_t H5G__dense_iterate(H5F_t *f, hid_t dxpl_id, const H5O_linfo_t *linfo, + H5_index_t idx_type, H5_iter_order_t order, hsize_t skip, hsize_t *last_lnk, + H5G_lib_iterate_t op, void *op_data); +H5_DLL ssize_t H5G__dense_get_name_by_idx(H5F_t *f, hid_t dxpl_id, + H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, + char *name, size_t size); +H5_DLL herr_t H5G__dense_remove(H5F_t *f, hid_t dxpl_id, const H5O_linfo_t *linfo, + H5RS_str_t *grp_full_path_r, const char *name); +H5_DLL herr_t H5G__dense_remove_by_idx(H5F_t *f, hid_t dxpl_id, + const H5O_linfo_t *linfo, H5RS_str_t *grp_full_path_r, H5_index_t idx_type, + H5_iter_order_t order, hsize_t n); +H5_DLL herr_t H5G__dense_delete(H5F_t *f, hid_t dxpl_id, H5O_linfo_t *linfo, + hbool_t adj_link); +#ifndef H5_NO_DEPRECATED_SYMBOLS +H5_DLL H5G_obj_t H5G__dense_get_type_by_idx(H5F_t *f, hid_t dxpl_id, + H5O_linfo_t *linfo, hsize_t idx); +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +/* Functions that understand group objects */ +H5_DLL herr_t H5G__obj_create(H5F_t *f, hid_t dxpl_id, + H5G_obj_create_t *gcrt_info, H5O_loc_t *oloc/*out*/); +H5_DLL herr_t H5G__obj_create_real(H5F_t *f, hid_t dxpl_id, + const H5O_ginfo_t *ginfo, const H5O_linfo_t *linfo, + const H5O_pline_t *pline, H5G_obj_create_t *gcrt_info, + H5O_loc_t *oloc/*out*/); +H5_DLL htri_t H5G__obj_get_linfo(const H5O_loc_t *grp_oloc, H5O_linfo_t *linfo, + hid_t dxpl_id); +H5_DLL herr_t H5G__obj_iterate(const H5O_loc_t *grp_oloc, + H5_index_t idx_type, H5_iter_order_t order, hsize_t skip, hsize_t *last_lnk, + H5G_lib_iterate_t op, void *op_data, hid_t dxpl_id); +H5_DLL herr_t H5G__obj_info(H5O_loc_t *oloc, H5G_info_t *grp_info, hid_t dxpl_id); +H5_DLL htri_t H5G__obj_lookup(const H5O_loc_t *grp_oloc, const char *name, + H5O_link_t *lnk, hid_t dxpl_id); + +/* + * These functions operate on group hierarchy names. + */ +H5_DLL herr_t H5G__name_init(H5G_name_t *name, const char *path); + +/* + * These functions operate on group "locations" + */ +H5_DLL herr_t H5G__loc_copy(H5G_loc_t *dst, const H5G_loc_t *src, H5_copy_depth_t depth); +H5_DLL herr_t H5G__loc_insert(H5G_loc_t *grp_loc, const char *name, + H5G_loc_t *obj_loc, H5O_type_t obj_type, const void *crt_info, hid_t dxpl_id); + +/* Testing functions */ +#ifdef H5G_TESTING +H5_DLL htri_t H5G__is_empty_test(hid_t gid); +H5_DLL htri_t H5G__has_links_test(hid_t gid, unsigned *nmsgs); +H5_DLL htri_t H5G__has_stab_test(hid_t gid); +H5_DLL htri_t H5G__is_new_dense_test(hid_t gid); +H5_DLL herr_t H5G__new_dense_info_test(hid_t gid, hsize_t *name_count, hsize_t *corder_count); +H5_DLL herr_t H5G__lheap_size_test(hid_t gid, size_t *lheap_size); +H5_DLL herr_t H5G__user_path_test(hid_t obj_id, char *user_path, size_t *user_path_len, unsigned *user_path_hidden); +H5_DLL herr_t H5G__verify_cached_stab_test(H5O_loc_t *grp_oloc, H5G_entry_t *ent); +H5_DLL herr_t H5G__verify_cached_stabs_test(hid_t gid); +#endif /* H5G_TESTING */ + +#endif /* _H5Gpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Gpublic.h b/Resources/windows-libs/HDF5/include/H5Gpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..5b8b05478a5bdf36df8efbf507ec55b6b03fc589 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Gpublic.h @@ -0,0 +1,178 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5Gpublic.h + * Jul 11 1997 + * Robb Matzke <matzke@llnl.gov> + * + * Purpose: Public declarations for the H5G package + * + *------------------------------------------------------------------------- + */ +#ifndef _H5Gpublic_H +#define _H5Gpublic_H + +/* System headers needed by this file */ +#include <sys/types.h> + +/* Public headers needed by this file */ +#include "H5public.h" /* Generic Functions */ +#include "H5Lpublic.h" /* Links */ +#include "H5Opublic.h" /* Object headers */ +#include "H5Tpublic.h" /* Datatypes */ + +/*****************/ +/* Public Macros */ +/*****************/ + +#ifdef __cplusplus +extern "C" { +#endif + +/*******************/ +/* Public Typedefs */ +/*******************/ + +/* Types of link storage for groups */ +typedef enum H5G_storage_type_t { + H5G_STORAGE_TYPE_UNKNOWN = -1, /* Unknown link storage type */ + H5G_STORAGE_TYPE_SYMBOL_TABLE, /* Links in group are stored with a "symbol table" */ + /* (this is sometimes called "old-style" groups) */ + H5G_STORAGE_TYPE_COMPACT, /* Links are stored in object header */ + H5G_STORAGE_TYPE_DENSE /* Links are stored in fractal heap & indexed with v2 B-tree */ +} H5G_storage_type_t; + +/* Information struct for group (for H5Gget_info/H5Gget_info_by_name/H5Gget_info_by_idx) */ +typedef struct H5G_info_t { + H5G_storage_type_t storage_type; /* Type of storage for links in group */ + hsize_t nlinks; /* Number of links in group */ + int64_t max_corder; /* Current max. creation order value for group */ + hbool_t mounted; /* Whether group has a file mounted on it */ +} H5G_info_t; + +/********************/ +/* Public Variables */ +/********************/ + + +/*********************/ +/* Public Prototypes */ +/*********************/ +H5_DLL hid_t H5Gcreate2(hid_t loc_id, const char *name, hid_t lcpl_id, + hid_t gcpl_id, hid_t gapl_id); +H5_DLL hid_t H5Gcreate_anon(hid_t loc_id, hid_t gcpl_id, hid_t gapl_id); +H5_DLL hid_t H5Gopen2(hid_t loc_id, const char *name, hid_t gapl_id); +H5_DLL hid_t H5Gget_create_plist(hid_t group_id); +H5_DLL herr_t H5Gget_info(hid_t loc_id, H5G_info_t *ginfo); +H5_DLL herr_t H5Gget_info_by_name(hid_t loc_id, const char *name, H5G_info_t *ginfo, + hid_t lapl_id); +H5_DLL herr_t H5Gget_info_by_idx(hid_t loc_id, const char *group_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5G_info_t *ginfo, + hid_t lapl_id); +H5_DLL herr_t H5Gclose(hid_t group_id); + +/* Symbols defined for compatibility with previous versions of the HDF5 API. + * + * Use of these symbols is deprecated. + */ +#ifndef H5_NO_DEPRECATED_SYMBOLS + +/* Macros */ + +/* Link definitions */ +#define H5G_SAME_LOC H5L_SAME_LOC +#define H5G_LINK_ERROR H5L_TYPE_ERROR +#define H5G_LINK_HARD H5L_TYPE_HARD +#define H5G_LINK_SOFT H5L_TYPE_SOFT +#define H5G_link_t H5L_type_t + +/* Macros for types of objects in a group (see H5G_obj_t definition) */ +#define H5G_NTYPES 256 /* Max possible number of types */ +#define H5G_NLIBTYPES 8 /* Number of internal types */ +#define H5G_NUSERTYPES (H5G_NTYPES - H5G_NLIBTYPES) +#define H5G_USERTYPE(X) (8 + (X)) /* User defined types */ + + +/* Typedefs */ + +/* + * An object has a certain type. The first few numbers are reserved for use + * internally by HDF5. Users may add their own types with higher values. The + * values are never stored in the file -- they only exist while an + * application is running. An object may satisfy the `isa' function for more + * than one type. + */ +typedef enum H5G_obj_t { + H5G_UNKNOWN = -1, /* Unknown object type */ + H5G_GROUP, /* Object is a group */ + H5G_DATASET, /* Object is a dataset */ + H5G_TYPE, /* Object is a named data type */ + H5G_LINK, /* Object is a symbolic link */ + H5G_UDLINK, /* Object is a user-defined link */ + H5G_RESERVED_5, /* Reserved for future use */ + H5G_RESERVED_6, /* Reserved for future use */ + H5G_RESERVED_7 /* Reserved for future use */ +} H5G_obj_t; + +/* Prototype for H5Giterate() operator */ +typedef herr_t (*H5G_iterate_t)(hid_t group, const char *name, void *op_data); + +/* Information about an object */ +typedef struct H5G_stat_t { + unsigned long fileno[2]; /*file number */ + unsigned long objno[2]; /*object number */ + unsigned nlink; /*number of hard links to object*/ + H5G_obj_t type; /*basic object type */ + time_t mtime; /*modification time */ + size_t linklen; /*symbolic link value length */ + H5O_stat_t ohdr; /* Object header information */ +} H5G_stat_t; + + +/* Function prototypes */ +H5_DLL hid_t H5Gcreate1(hid_t loc_id, const char *name, size_t size_hint); +H5_DLL hid_t H5Gopen1(hid_t loc_id, const char *name); +H5_DLL herr_t H5Glink(hid_t cur_loc_id, H5G_link_t type, const char *cur_name, + const char *new_name); +H5_DLL herr_t H5Glink2(hid_t cur_loc_id, const char *cur_name, H5G_link_t type, + hid_t new_loc_id, const char *new_name); +H5_DLL herr_t H5Gmove(hid_t src_loc_id, const char *src_name, + const char *dst_name); +H5_DLL herr_t H5Gmove2(hid_t src_loc_id, const char *src_name, hid_t dst_loc_id, + const char *dst_name); +H5_DLL herr_t H5Gunlink(hid_t loc_id, const char *name); +H5_DLL herr_t H5Gget_linkval(hid_t loc_id, const char *name, size_t size, + char *buf/*out*/); +H5_DLL herr_t H5Gset_comment(hid_t loc_id, const char *name, const char *comment); +H5_DLL int H5Gget_comment(hid_t loc_id, const char *name, size_t bufsize, + char *buf); +H5_DLL herr_t H5Giterate(hid_t loc_id, const char *name, int *idx, + H5G_iterate_t op, void *op_data); +H5_DLL herr_t H5Gget_num_objs(hid_t loc_id, hsize_t *num_objs); +H5_DLL herr_t H5Gget_objinfo(hid_t loc_id, const char *name, + hbool_t follow_link, H5G_stat_t *statbuf/*out*/); +H5_DLL ssize_t H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char* name, + size_t size); +H5_DLL H5G_obj_t H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx); + +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +#ifdef __cplusplus +} +#endif +#endif /* _H5Gpublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Group.h b/Resources/windows-libs/HDF5/include/H5Group.h new file mode 100644 index 0000000000000000000000000000000000000000..100b214b55c7d7a9eb3a991862c4c2c68adbe7db --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Group.h @@ -0,0 +1,75 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5Group_H +#define __H5Group_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/*! \class Group + \brief Class Group represents an HDF5 group. + + It inherits many operations from H5Location and CommonFG. +*/ +class H5_DLLCPP Group : public H5Object, public CommonFG { + public: + // Close this group. + virtual void close(); + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("Group"); } + + // Throw group exception. + virtual void throwException(const H5std_string& func_name, const H5std_string& msg) const; + + // for CommonFG to get the file id. + virtual hid_t getLocId() const; + + // Creates a group by way of dereference. + Group(const H5Location& loc, const void* ref, H5R_type_t ref_type = H5R_OBJECT); + Group(const Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT); + + // default constructor + Group(); + + // Copy constructor: makes a copy of the original object + Group(const Group& original); + + // Gets the group id. + virtual hid_t getId() const; + + // Destructor + virtual ~Group(); + + // Creates a copy of an existing group using its id. + Group( const hid_t group_id ); + + protected: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Sets the group id. + virtual void p_setId(const hid_t new_id); +#endif // DOXYGEN_SHOULD_SKIP_THIS + + private: + hid_t id; // HDF5 group id + +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5Group_H diff --git a/Resources/windows-libs/HDF5/include/H5HFpkg.h b/Resources/windows-libs/HDF5/include/H5HFpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..9c9c34c7d29c3de4a8771e385331e74ba520a796 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5HFpkg.h @@ -0,0 +1,799 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Friday, February 24, 2006 + * + * Purpose: This file contains declarations which are visible only within + * the H5HF package. Source files outside the H5HF package should + * include H5HFprivate.h instead. + */ +#ifndef H5HF_PACKAGE +#error "Do not include this file outside the H5HF package!" +#endif + +#ifndef _H5HFpkg_H +#define _H5HFpkg_H + +/* Get package's private header */ +#include "H5HFprivate.h" + +/* Other private headers needed by this file */ +#include "H5ACprivate.h" /* Metadata cache */ +#include "H5B2private.h" /* v2 B-trees */ +#include "H5FLprivate.h" /* Free Lists */ +#include "H5FSprivate.h" /* Free space manager */ +#include "H5SLprivate.h" /* Skip lists */ + +/**************************/ +/* Package Private Macros */ +/**************************/ + +/* Size of checksum information (on disk) */ +#define H5HF_SIZEOF_CHKSUM 4 + +/* "Standard" size of prefix information for fractal heap metadata */ +#define H5HF_METADATA_PREFIX_SIZE(c) ( \ + H5_SIZEOF_MAGIC /* Signature */ \ + + 1 /* Version */ \ + + ((c) ? H5HF_SIZEOF_CHKSUM : 0) /* Metadata checksum */ \ + ) + +/* Size of doubling-table information */ +#define H5HF_DTABLE_INFO_SIZE(h) ( \ + 2 /* Width of table (i.e. # of columns) */ \ + + (h)->sizeof_size /* Starting block size */ \ + + (h)->sizeof_size /* Maximum direct block size */ \ + + 2 /* Max. size of heap (log2 of actual value - i.e. the # of bits) */ \ + + 2 /* Starting # of rows in root indirect block */ \ + + (h)->sizeof_addr /* File address of table managed */ \ + + 2 /* Current # of rows in root indirect block */ \ + ) + +/* Flags for status byte */ +#define H5HF_HDR_FLAGS_HUGE_ID_WRAPPED 0x01 /* "huge" object IDs have wrapped */ +#define H5HF_HDR_FLAGS_CHECKSUM_DBLOCKS 0x02 /* checksum direct blocks */ + +/* Size of the fractal heap header on disk */ +/* (this is the fixed-len portion, the variable-len I/O filter information + * follows this information, if there are I/O filters for the heap) + */ +#define H5HF_HEADER_SIZE(h) ( \ + /* General metadata fields */ \ + H5HF_METADATA_PREFIX_SIZE(TRUE) \ + \ + /* Fractal Heap Header specific fields */ \ + \ + /* General heap information */ \ + + 2 /* Heap ID len */ \ + + 2 /* I/O filters' encoded len */ \ + + 1 /* Status flags */ \ + \ + /* "Huge" object fields */ \ + + 4 /* Max. size of "managed" object */ \ + + (h)->sizeof_size /* Next ID for "huge" object */ \ + + (h)->sizeof_addr /* File address of "huge" object tracker B-tree */ \ + \ + /* "Managed" object free space fields */ \ + + (h)->sizeof_size /* Total man. free space */ \ + + (h)->sizeof_addr /* File address of free section header */ \ + \ + /* Statistics fields */ \ + + (h)->sizeof_size /* Size of man. space in heap */ \ + + (h)->sizeof_size /* Size of man. space iterator offset in heap */ \ + + (h)->sizeof_size /* Size of alloacted man. space in heap */ \ + + (h)->sizeof_size /* Number of man. objects in heap */ \ + + (h)->sizeof_size /* Size of huge space in heap */ \ + + (h)->sizeof_size /* Number of huge objects in heap */ \ + + (h)->sizeof_size /* Size of tiny space in heap */ \ + + (h)->sizeof_size /* Number of tiny objects in heap */ \ + \ + /* "Managed" object doubling table info */ \ + + H5HF_DTABLE_INFO_SIZE(h) /* Size of managed obj. doubling-table info */ \ + ) + +/* Size of overhead for a direct block */ +#define H5HF_MAN_ABS_DIRECT_OVERHEAD(h) ( \ + /* General metadata fields */ \ + H5HF_METADATA_PREFIX_SIZE(h->checksum_dblocks) \ + \ + /* Fractal heap managed, absolutely mapped direct block specific fields */ \ + + (h)->sizeof_addr /* File address of heap owning the block */ \ + + (h)->heap_off_size /* Offset of the block in the heap */ \ + ) + +/* Size of managed indirect block entry for a child direct block */ +#define H5HF_MAN_INDIRECT_CHILD_DIR_ENTRY_SIZE(h) ( \ + ((h)->filter_len > 0 ? \ + ((h)->sizeof_addr + (h)->sizeof_size + 4) : /* Size of entries for filtered direct blocks */ \ + (h)->sizeof_addr) /* Size of entries for un-filtered direct blocks */ \ + ) + +/* Size of managed indirect block */ +#define H5HF_MAN_INDIRECT_SIZE(h, r) ( \ + /* General metadata fields */ \ + H5HF_METADATA_PREFIX_SIZE(TRUE) \ + \ + /* Fractal heap managed, absolutely mapped indirect block specific fields */ \ + + (h)->sizeof_addr /* File address of heap owning the block */ \ + + (h)->heap_off_size /* Offset of the block in the heap */ \ + + (MIN(r, (h)->man_dtable.max_direct_rows) * (h)->man_dtable.cparam.width * H5HF_MAN_INDIRECT_CHILD_DIR_ENTRY_SIZE(h)) /* Size of entries for direct blocks */ \ + + (((r > (h)->man_dtable.max_direct_rows) ? (r - (h)->man_dtable.max_direct_rows) : 0) * (h)->man_dtable.cparam.width * (h)->sizeof_addr) /* Size of entries for indirect blocks */ \ + ) + +/* Compute the # of bytes required to store an offset into a given buffer size */ +#define H5HF_SIZEOF_OFFSET_BITS(b) (((b) + 7) / 8) +#define H5HF_SIZEOF_OFFSET_LEN(l) H5HF_SIZEOF_OFFSET_BITS(H5VM_log2_of2((unsigned)(l))) + +/* Heap ID bit flags */ +/* Heap ID version (2 bits: 6-7) */ +#define H5HF_ID_VERS_CURR 0x00 /* Current version of ID format */ +#define H5HF_ID_VERS_MASK 0xC0 /* Mask for getting the ID version from flags */ +/* Heap ID type (2 bits: 4-5) */ +#define H5HF_ID_TYPE_MAN 0x00 /* "Managed" object - stored in fractal heap blocks */ +#define H5HF_ID_TYPE_HUGE 0x10 /* "Huge" object - stored in file directly */ +#define H5HF_ID_TYPE_TINY 0x20 /* "Tiny" object - stored in heap ID directly */ +#define H5HF_ID_TYPE_RESERVED 0x30 /* "?" object - reserved for future use */ +#define H5HF_ID_TYPE_MASK 0x30 /* Mask for getting the ID type from flags */ +/* Heap ID bits 0-3 reserved for future use */ + +/* Encode a "managed" heap ID */ +#define H5HF_MAN_ID_ENCODE(i, h, o, l) \ + *(i) = H5HF_ID_VERS_CURR | H5HF_ID_TYPE_MAN; \ + (i)++; \ + UINT64ENCODE_VAR((i), (o), (h)->heap_off_size); \ + UINT64ENCODE_VAR((i), (l), (h)->heap_len_size) + +/* Decode a "managed" heap ID */ +#define H5HF_MAN_ID_DECODE(i, h, f, o, l) \ + f = *(uint8_t *)i++; \ + UINT64DECODE_VAR((i), (o), (h)->heap_off_size); \ + UINT64DECODE_VAR((i), (l), (h)->heap_len_size) + +/* Free space section types for fractal heap */ +/* (values stored in free space data structures in file) */ +#define H5HF_FSPACE_SECT_SINGLE 0 /* Section is a range of actual bytes in a direct block */ +#define H5HF_FSPACE_SECT_FIRST_ROW 1 /* Section is first range of blocks in an indirect block row */ +#define H5HF_FSPACE_SECT_NORMAL_ROW 2 /* Section is a range of blocks in an indirect block row */ +#define H5HF_FSPACE_SECT_INDIRECT 3 /* Section is a span of blocks in an indirect block */ + +/* Flags for 'op' operations */ +#define H5HF_OP_MODIFY 0x0001 /* Operation will modify object */ +#define H5HF_OP_FLAGS (H5HF_OP_MODIFY) /* Bit-wise OR of all op flags */ + +/* Flags for 'root_iblock_flags' field in header */ +#define H5HF_ROOT_IBLOCK_PINNED 0x01 +#define H5HF_ROOT_IBLOCK_PROTECTED 0x02 + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +/* Doubling-table info */ +typedef struct H5HF_dtable_t { + /* Immutable, pre-set information for table */ + H5HF_dtable_cparam_t cparam; /* Creation parameters for table */ + + /* Derived information (stored, varies during lifetime of table) */ + haddr_t table_addr; /* Address of first block for table */ + /* Undefined if no space allocated for table */ + unsigned curr_root_rows; /* Current number of rows in the root indirect block */ + /* 0 indicates that the TABLE_ADDR field points + * to direct block (of START_BLOCK_SIZE) instead + * of indirect root block. + */ + + /* Computed information (not stored) */ + unsigned max_root_rows; /* Maximum # of rows in root indirect block */ + unsigned max_direct_rows; /* Maximum # of direct rows in any indirect block */ + unsigned start_bits; /* # of bits for starting block size (i.e. log2(start_block_size)) */ + unsigned max_direct_bits; /* # of bits for max. direct block size (i.e. log2(max_direct_size)) */ + unsigned max_dir_blk_off_size; /* Max. size of offsets in direct blocks */ + unsigned first_row_bits; /* # of bits in address of first row */ + hsize_t num_id_first_row; /* Number of IDs in first row of table */ + hsize_t *row_block_size; /* Block size per row of indirect block */ + hsize_t *row_block_off; /* Cumulative offset per row of indirect block */ + hsize_t *row_tot_dblock_free; /* Total free space in dblocks for this row */ + /* (For indirect block rows, it's the total + * free space in all direct blocks referenced + * from the indirect block) + */ + size_t *row_max_dblock_free; /* Max. free space in dblocks for this row */ + /* (For indirect block rows, it's the maximum + * free space in a direct block referenced + * from the indirect block) + */ +} H5HF_dtable_t; + +/* Fractal heap free list info (forward decl - defined in H5HFflist.c) */ +typedef struct H5HF_freelist_t H5HF_freelist_t; + +/* Forward decl indirect block info */ +typedef struct H5HF_indirect_t H5HF_indirect_t; + +/* Fractal heap block location */ +typedef struct H5HF_block_loc_t { + /* Necessary table fields */ + unsigned row; /* Row of block in doubling table */ + unsigned col; /* Column of block in doubling table */ + + /* Derived/computed/cached table fields */ + unsigned entry; /* Entry of block in doubling table */ + + /* Infrastructure */ + H5HF_indirect_t *context; /* Pointer to the indirect block containing the block */ + struct H5HF_block_loc_t *up; /* Pointer to next level up in the stack of levels */ +} H5HF_block_loc_t; + +/* Fractal heap block iterator info */ +typedef struct H5HF_block_iter_t { + hbool_t ready; /* Set if iterator is finished initializing */ + H5HF_block_loc_t *curr; /* Pointer to the current level information for iterator */ +} H5HF_block_iter_t; + +/* Fractal heap free space section info */ +typedef struct H5HF_free_section_t { + H5FS_section_info_t sect_info; /* Free space section information (must be first in struct) */ + union { + struct { + H5HF_indirect_t *parent; /* Indirect block parent for free section's direct block */ + unsigned par_entry; /* Entry of free section's direct block in parent indirect block */ + } single; + struct { + struct H5HF_free_section_t *under; /* Pointer to indirect block underlying row section */ + unsigned row; /* Row for range of blocks */ + unsigned col; /* Column for range of blocks */ + unsigned num_entries; /* Number of entries covered */ + + /* Fields that aren't stored */ + hbool_t checked_out; /* Flag to indicate that a row section is temporarily out of the free space manager */ + } row; + struct { + /* Holds either a pointer to an indirect block (if its "live") or + * the block offset of it's indirect block (if its "serialized") + * (This allows the indirect block that the section is within to + * be compared with other sections, whether it's serialized + * or not) + */ + union { + H5HF_indirect_t *iblock; /* Indirect block for free section */ + hsize_t iblock_off; /* Indirect block offset in "heap space" */ + } u; + unsigned row; /* Row for range of blocks */ + unsigned col; /* Column for range of blocks */ + unsigned num_entries; /* Number of entries covered */ + + /* Fields that aren't stored */ + struct H5HF_free_section_t *parent; /* Pointer to "parent" indirect section */ + unsigned par_entry; /* Entry within parent indirect section */ + hsize_t span_size; /* Size of space tracked, in "heap space" */ + unsigned iblock_entries; /* Number of entries in indirect block where section is located */ + unsigned rc; /* Reference count of outstanding row & child indirect sections */ + unsigned dir_nrows; /* Number of direct rows in section */ + struct H5HF_free_section_t **dir_rows; /* Array of pointers to outstanding row sections */ + unsigned indir_nents; /* Number of indirect entries in section */ + struct H5HF_free_section_t **indir_ents; /* Array of pointers to outstanding child indirect sections */ + } indirect; + } u; +} H5HF_free_section_t; + +/* The fractal heap header information */ +/* (Each fractal heap header has certain information that is shared across all + * the instances of blocks in that fractal heap) + */ +typedef struct H5HF_hdr_t { + /* Information for H5AC cache functions, _must_ be first field in structure */ + H5AC_info_t cache_info; + + /* General header information (stored in header) */ + unsigned id_len; /* Size of heap IDs (in bytes) */ + unsigned filter_len; /* Size of I/O filter information (in bytes) */ + + /* Flags for heap settings (stored in status byte in header) */ + hbool_t debug_objs; /* Is the heap storing objects in 'debug' format */ + hbool_t write_once; /* Is heap being written in "write once" mode? */ + hbool_t huge_ids_wrapped; /* Have "huge" object IDs wrapped around? */ + hbool_t checksum_dblocks; /* Should the direct blocks in the heap be checksummed? */ + + /* Doubling table information (partially stored in header) */ + /* (Partially set by user, partially derived/updated internally) */ + H5HF_dtable_t man_dtable; /* Doubling-table info for managed objects */ + + /* Free space information for managed objects (stored in header) */ + hsize_t total_man_free; /* Total amount of free space in managed blocks */ + haddr_t fs_addr; /* Address of free space header on disk */ + + /* "Huge" object support (stored in header) */ + uint32_t max_man_size; /* Max. size of object to manage in doubling table */ + hsize_t huge_next_id; /* Next ID to use for indirectly tracked 'huge' object */ + haddr_t huge_bt2_addr; /* Address of v2 B-tree for tracking "huge" object info */ + + /* I/O filter support (stored in header, if any are used) */ + H5O_pline_t pline; /* I/O filter pipeline for heap objects */ + size_t pline_root_direct_size; /* Size of filtered root direct block */ + unsigned pline_root_direct_filter_mask; /* I/O filter mask for filtered root direct block */ + + /* Statistics for heap (stored in header) */ + hsize_t man_size; /* Total amount of 'managed' space in heap */ + hsize_t man_alloc_size; /* Total amount of allocated 'managed' space in heap */ + hsize_t man_iter_off; /* Offset of iterator in 'managed' heap space */ + hsize_t man_nobjs; /* Number of 'managed' objects in heap */ + hsize_t huge_size; /* Total size of 'huge' objects in heap */ + hsize_t huge_nobjs; /* Number of 'huge' objects in heap */ + hsize_t tiny_size; /* Total size of 'tiny' objects in heap */ + hsize_t tiny_nobjs; /* Number of 'tiny' objects in heap */ + + /* Cached/computed values (not stored in header) */ + size_t rc; /* Reference count of heap's components using heap header */ + haddr_t heap_addr; /* Address of heap header in the file */ + size_t heap_size; /* Size of heap header in the file */ + H5AC_protect_t mode; /* Access mode for heap */ + H5F_t *f; /* Pointer to file for heap */ + size_t file_rc; /* Reference count of files using heap header */ + hbool_t pending_delete; /* Heap is pending deletion */ + uint8_t sizeof_size; /* Size of file sizes */ + uint8_t sizeof_addr; /* Size of file addresses */ + struct H5HF_indirect_t *root_iblock; /* Pointer to root indirect block */ + unsigned root_iblock_flags; /* Flags to indicate whether root indirect block is pinned/protected */ + H5FS_t *fspace; /* Free space list for objects in heap */ + H5HF_block_iter_t next_block; /* Block iterator for searching for next block with space */ + H5B2_t *huge_bt2; /* v2 B-tree handle for huge objects */ + hsize_t huge_max_id; /* Max. 'huge' heap ID before rolling 'huge' heap IDs over */ + uint8_t huge_id_size; /* Size of 'huge' heap IDs (in bytes) */ + hbool_t huge_ids_direct; /* Flag to indicate that 'huge' object's offset & length are stored directly in heap ID */ + size_t tiny_max_len; /* Max. size of tiny objects for this heap */ + hbool_t tiny_len_extended; /* Flag to indicate that 'tiny' object's length is stored in extended form (i.e. w/extra byte) */ + uint8_t heap_off_size; /* Size of heap offsets (in bytes) */ + uint8_t heap_len_size; /* Size of heap ID lengths (in bytes) */ + hbool_t checked_filters; /* TRUE if pipeline passes can_apply checks */ +} H5HF_hdr_t; + +/* Common indirect block doubling table entry */ +/* (common between entries pointing to direct & indirect child blocks) */ +typedef struct H5HF_indirect_ent_t { + haddr_t addr; /* Direct block's address */ +} H5HF_indirect_ent_t; + +/* Extern indirect block doubling table entry for compressed direct blocks */ +/* (only exists for indirect blocks in heaps that have I/O filters) */ +typedef struct H5HF_indirect_filt_ent_t { + size_t size; /* Size of child direct block, after passing though I/O filters */ + unsigned filter_mask; /* Excluded filters for child direct block */ +} H5HF_indirect_filt_ent_t; + +/* Fractal heap indirect block */ +struct H5HF_indirect_t { + /* Information for H5AC cache functions, _must_ be first field in structure */ + H5AC_info_t cache_info; + + /* Internal heap information (not stored) */ + size_t rc; /* Reference count of objects using this block */ + H5HF_hdr_t *hdr; /* Shared heap header info */ + struct H5HF_indirect_t *parent; /* Shared parent indirect block info */ + unsigned par_entry; /* Entry in parent's table */ + haddr_t addr; /* Address of this indirect block on disk */ + size_t size; /* Size of indirect block on disk */ + unsigned nrows; /* Total # of rows in indirect block */ + unsigned max_rows; /* Max. # of rows in indirect block */ + unsigned nchildren; /* Number of child blocks */ + unsigned max_child; /* Max. offset used in child entries */ + struct H5HF_indirect_t **child_iblocks; /* Array of pointers to pinned child indirect blocks */ + + /* Stored values */ + hsize_t block_off; /* Offset of the block within the heap's address space */ + H5HF_indirect_ent_t *ents; /* Pointer to block entry table */ + H5HF_indirect_filt_ent_t *filt_ents; /* Pointer to filtered information for direct blocks */ +}; + +/* A fractal heap direct block */ +typedef struct H5HF_direct_t { + /* Information for H5AC cache functions, _must_ be first field in structure */ + H5AC_info_t cache_info; + + /* Internal heap information */ + H5HF_hdr_t *hdr; /* Shared heap header info */ + H5HF_indirect_t *parent; /* Shared parent indirect block info */ + unsigned par_entry; /* Entry in parent's table */ + size_t size; /* Size of direct block */ + hsize_t file_size; /* Size of direct block in file (only valid when block's space is being freed) */ + unsigned blk_off_size; /* Size of offsets in the block */ + uint8_t *blk; /* Pointer to buffer containing block data */ + + /* Stored values */ + hsize_t block_off; /* Offset of the block within the heap's address space */ +} H5HF_direct_t; + +/* Fractal heap */ +struct H5HF_t { + H5HF_hdr_t *hdr; /* Pointer to internal fractal heap header info */ + H5F_t *f; /* Pointer to file for heap */ +}; + +/* Fractal heap "parent info" (for loading a block) */ +typedef struct H5HF_parent_t { + H5HF_hdr_t *hdr; /* Pointer to heap header info */ + H5HF_indirect_t *iblock; /* Pointer to parent indirect block */ + unsigned entry; /* Location of block in parent's entry table */ +} H5HF_parent_t; + +/* Typedef for indirectly accessed 'huge' object's records in the v2 B-tree */ +typedef struct H5HF_huge_bt2_indir_rec_t { + haddr_t addr; /* Address of the object in the file */ + hsize_t len; /* Length of the object in the file */ + hsize_t id; /* ID used for object (not used for 'huge' objects directly accessed) */ +} H5HF_huge_bt2_indir_rec_t; + +/* Typedef for indirectly accessed, filtered 'huge' object's records in the v2 B-tree */ +typedef struct H5HF_huge_bt2_filt_indir_rec_t { + haddr_t addr; /* Address of the filtered object in the file */ + hsize_t len; /* Length of the filtered object in the file */ + unsigned filter_mask; /* I/O pipeline filter mask for filtered object in the file */ + hsize_t obj_size; /* Size of the de-filtered object in memory */ + hsize_t id; /* ID used for object (not used for 'huge' objects directly accessed) */ +} H5HF_huge_bt2_filt_indir_rec_t; + +/* Typedef for directly accessed 'huge' object's records in the v2 B-tree */ +typedef struct H5HF_huge_bt2_dir_rec_t { + haddr_t addr; /* Address of the object in the file */ + hsize_t len; /* Length of the object in the file */ +} H5HF_huge_bt2_dir_rec_t; + +/* Typedef for directly accessed, filtered 'huge' object's records in the v2 B-tree */ +typedef struct H5HF_huge_bt2_filt_dir_rec_t { + haddr_t addr; /* Address of the filtered object in the file */ + hsize_t len; /* Length of the filtered object in the file */ + unsigned filter_mask; /* I/O pipeline filter mask for filtered object in the file */ + hsize_t obj_size; /* Size of the de-filtered object in memory */ +} H5HF_huge_bt2_filt_dir_rec_t; + +/* User data for free space section 'add' callback */ +typedef struct { + H5HF_hdr_t *hdr; /* Fractal heap header */ + hid_t dxpl_id; /* DXPL ID for operation */ +} H5HF_sect_add_ud_t; + +/* User data for v2 B-tree 'remove' callback on 'huge' objects */ +typedef struct { + H5HF_hdr_t *hdr; /* Fractal heap header (in) */ + hid_t dxpl_id; /* DXPL ID for operation (in) */ + hsize_t obj_len; /* Length of object removed (out) */ +} H5HF_huge_remove_ud_t; + +/* User data for fractal heap header cache client callback */ +typedef struct H5HF_hdr_cache_ud_t { + H5F_t *f; /* File pointer */ + hid_t dxpl_id; /* DXPL ID for operation (in) */ +} H5HF_hdr_cache_ud_t; + +/* User data for fractal heap indirect block cache client callbacks */ +typedef struct H5HF_iblock_cache_ud_t { + H5HF_parent_t * par_info; /* Parent info */ + H5F_t * f; /* File pointer */ + const unsigned *nrows; /* Number of rows */ +} H5HF_iblock_cache_ud_t; + +/* User data for fractal heap direct block cache client callbacks */ +typedef struct H5HF_dblock_cache_ud_t { + H5HF_parent_t par_info; /* Parent info */ + H5F_t * f; /* File pointer */ + size_t odi_size; /* On disk image size of the direct block. + * Note that there is no necessary relation + * between this value, and the actual + * direct block size, as conpression may + * reduce the size of the on disk image, + * and check sums may increase it. + */ + size_t dblock_size; /* size of the direct block, which bears + * no necessary relation to the block + * odi_size -- the size of the on disk + * image of the block. Note that the + * metadata cache is only interested + * in the odi_size, and thus it is this + * value that is passed to the cache in + * calls to it. + */ + unsigned filter_mask; /* Excluded filters for direct block */ +} H5HF_dblock_cache_ud_t; + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + +/* H5HF header inherits cache-like properties from H5AC */ +H5_DLLVAR const H5AC_class_t H5AC_FHEAP_HDR[1]; + +/* H5HF indirect block inherits cache-like properties from H5AC */ +H5_DLLVAR const H5AC_class_t H5AC_FHEAP_IBLOCK[1]; + +/* H5HF direct block inherits cache-like properties from H5AC */ +H5_DLLVAR const H5AC_class_t H5AC_FHEAP_DBLOCK[1]; + +/* The v2 B-tree class for tracking indirectly accessed 'huge' objects */ +H5_DLLVAR const H5B2_class_t H5HF_HUGE_BT2_INDIR[1]; + +/* The v2 B-tree class for tracking indirectly accessed filtered 'huge' objects */ +H5_DLLVAR const H5B2_class_t H5HF_HUGE_BT2_FILT_INDIR[1]; + +/* The v2 B-tree class for tracking directly accessed 'huge' objects */ +H5_DLLVAR const H5B2_class_t H5HF_HUGE_BT2_DIR[1]; + +/* The v2 B-tree class for tracking directly accessed filtered 'huge' objects */ +H5_DLLVAR const H5B2_class_t H5HF_HUGE_BT2_FILT_DIR[1]; + +/* H5HF single section inherits serializable properties from H5FS_section_class_t */ +H5_DLLVAR H5FS_section_class_t H5HF_FSPACE_SECT_CLS_SINGLE[1]; + +/* H5HF 'first' row section inherits serializable properties from H5FS_section_class_t */ +H5_DLLVAR H5FS_section_class_t H5HF_FSPACE_SECT_CLS_FIRST_ROW[1]; + +/* H5HF 'normal' row section inherits serializable properties from H5FS_section_class_t */ +H5_DLLVAR H5FS_section_class_t H5HF_FSPACE_SECT_CLS_NORMAL_ROW[1]; + +/* H5HF indirect section inherits serializable properties from H5FS_section_class_t */ +H5_DLLVAR H5FS_section_class_t H5HF_FSPACE_SECT_CLS_INDIRECT[1]; + +/* Declare a free list to manage the H5HF_indirect_t struct */ +H5FL_EXTERN(H5HF_indirect_t); + +/* Declare a free list to manage the H5HF_indirect_ent_t sequence information */ +H5FL_SEQ_EXTERN(H5HF_indirect_ent_t); + +/* Declare a free list to manage the H5HF_indirect_filt_ent_t sequence information */ +H5FL_SEQ_EXTERN(H5HF_indirect_filt_ent_t); + +/* Declare a free list to manage the H5HF_indirect_t * sequence information */ +typedef H5HF_indirect_t *H5HF_indirect_ptr_t; +H5FL_SEQ_EXTERN(H5HF_indirect_ptr_t); + +/* Declare a free list to manage the H5HF_direct_t struct */ +H5FL_EXTERN(H5HF_direct_t); + +/* Declare a free list to manage heap direct block data to/from disk */ +H5FL_BLK_EXTERN(direct_block); + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +/* Doubling table routines */ +H5_DLL herr_t H5HF_dtable_init(H5HF_dtable_t *dtable); +H5_DLL herr_t H5HF_dtable_dest(H5HF_dtable_t *dtable); +H5_DLL herr_t H5HF_dtable_lookup(const H5HF_dtable_t *dtable, hsize_t off, + unsigned *row, unsigned *col); +H5_DLL unsigned H5HF_dtable_size_to_row(const H5HF_dtable_t *dtable, size_t block_size); +H5_DLL unsigned H5HF_dtable_size_to_rows(const H5HF_dtable_t *dtable, hsize_t size); +H5_DLL hsize_t H5HF_dtable_span_size(const H5HF_dtable_t *dtable, unsigned start_row, + unsigned start_col, unsigned num_entries); + +/* Heap header routines */ +H5_DLL H5HF_hdr_t * H5HF_hdr_alloc(H5F_t *f); +H5_DLL haddr_t H5HF_hdr_create(H5F_t *f, hid_t dxpl_id, const H5HF_create_t *cparam); +H5_DLL H5HF_hdr_t *H5HF_hdr_protect(H5F_t *f, hid_t dxpl_id, haddr_t addr, + H5AC_protect_t rw); +H5_DLL herr_t H5HF_hdr_finish_init_phase1(H5HF_hdr_t *hdr); +H5_DLL herr_t H5HF_hdr_finish_init_phase2(H5HF_hdr_t *hdr); +H5_DLL herr_t H5HF_hdr_finish_init(H5HF_hdr_t *hdr); +H5_DLL herr_t H5HF_hdr_incr(H5HF_hdr_t *hdr); +H5_DLL herr_t H5HF_hdr_decr(H5HF_hdr_t *hdr); +H5_DLL herr_t H5HF_hdr_fuse_incr(H5HF_hdr_t *hdr); +H5_DLL size_t H5HF_hdr_fuse_decr(H5HF_hdr_t *hdr); +H5_DLL herr_t H5HF_hdr_dirty(H5HF_hdr_t *hdr); +H5_DLL herr_t H5HF_hdr_adj_free(H5HF_hdr_t *hdr, ssize_t amt); +H5_DLL herr_t H5HF_hdr_adjust_heap(H5HF_hdr_t *hdr, hsize_t new_size, hssize_t extra_free); +H5_DLL herr_t H5HF_hdr_inc_alloc(H5HF_hdr_t *hdr, size_t alloc_size); +H5_DLL herr_t H5HF_hdr_start_iter(H5HF_hdr_t *hdr, H5HF_indirect_t *iblock, hsize_t curr_off, unsigned curr_entry); +H5_DLL herr_t H5HF_hdr_skip_blocks(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_indirect_t *iblock, unsigned start_entry, unsigned nentries); +H5_DLL herr_t H5HF_hdr_update_iter(H5HF_hdr_t *hdr, hid_t dxpl_id, size_t min_dblock_size); +H5_DLL herr_t H5HF_hdr_inc_iter(H5HF_hdr_t *hdr, hsize_t adv_size, unsigned nentries); +H5_DLL herr_t H5HF_hdr_reverse_iter(H5HF_hdr_t *hdr, hid_t dxpl_id, + haddr_t dblock_addr); +H5_DLL herr_t H5HF_hdr_reset_iter(H5HF_hdr_t *hdr, hsize_t curr_off); +H5_DLL herr_t H5HF_hdr_empty(H5HF_hdr_t *hdr); +H5_DLL herr_t H5HF_hdr_free(H5HF_hdr_t *hdr); +H5_DLL herr_t H5HF_hdr_delete(H5HF_hdr_t *hdr, hid_t dxpl_id); +H5_DLL herr_t H5HF_hdr_dest(H5HF_hdr_t *hdr); + +/* Indirect block routines */ +H5_DLL herr_t H5HF_iblock_incr(H5HF_indirect_t *iblock); +H5_DLL herr_t H5HF_iblock_decr(H5HF_indirect_t *iblock); +H5_DLL herr_t H5HF_iblock_dirty(H5HF_indirect_t *iblock); +H5_DLL herr_t H5HF_man_iblock_root_create(H5HF_hdr_t *hdr, hid_t dxpl_id, + size_t min_dblock_size); +H5_DLL herr_t H5HF_man_iblock_root_double(H5HF_hdr_t *hdr, hid_t dxpl_id, + size_t min_dblock_size); +H5_DLL herr_t H5HF_man_iblock_alloc_row(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_free_section_t **sec_node); +H5_DLL herr_t H5HF_man_iblock_create(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_indirect_t *par_iblock, unsigned par_entry, unsigned nrows, + unsigned max_rows, haddr_t *addr_p); +H5_DLL H5HF_indirect_t *H5HF_man_iblock_protect(H5HF_hdr_t *hdr, hid_t dxpl_id, + haddr_t iblock_addr, unsigned iblock_nrows, + H5HF_indirect_t *par_iblock, unsigned par_entry, hbool_t must_protect, + H5AC_protect_t rw, hbool_t *did_protect); +H5_DLL herr_t H5HF_man_iblock_unprotect(H5HF_indirect_t *iblock, hid_t dxpl_id, + unsigned cache_flags, hbool_t did_protect); +H5_DLL herr_t H5HF_man_iblock_attach(H5HF_indirect_t *iblock, unsigned entry, + haddr_t dblock_addr); +H5_DLL herr_t H5HF_man_iblock_detach(H5HF_indirect_t *iblock, hid_t dxpl_id, unsigned entry); +H5_DLL herr_t H5HF_man_iblock_entry_addr(H5HF_indirect_t *iblock, unsigned entry, + haddr_t *child_addr); +H5_DLL herr_t H5HF_man_iblock_delete(H5HF_hdr_t *hdr, hid_t dxpl_id, + haddr_t iblock_addr, unsigned iblock_nrows, H5HF_indirect_t *par_iblock, + unsigned par_entry); +H5_DLL herr_t H5HF_man_iblock_size(H5F_t *f, hid_t dxpl_id, H5HF_hdr_t *hdr, + haddr_t iblock_addr, unsigned nrows, H5HF_indirect_t *par_iblock, unsigned par_entry, hsize_t *heap_size/*out*/); +H5_DLL herr_t H5HF_man_iblock_dest(H5HF_indirect_t *iblock); + +/* Direct block routines */ +H5_DLL herr_t H5HF_man_dblock_new(H5HF_hdr_t *fh, hid_t dxpl_id, size_t request, + H5HF_free_section_t **ret_sec_node); +H5_DLL herr_t H5HF_man_dblock_create(hid_t dxpl_id, H5HF_hdr_t *hdr, + H5HF_indirect_t *par_iblock, unsigned par_entry, haddr_t *addr_p, + H5HF_free_section_t **ret_sec_node); +H5_DLL herr_t H5HF_man_dblock_destroy(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_direct_t *dblock, haddr_t dblock_addr); +H5_DLL H5HF_direct_t *H5HF_man_dblock_protect(H5HF_hdr_t *hdr, hid_t dxpl_id, + haddr_t dblock_addr, size_t dblock_size, + H5HF_indirect_t *par_iblock, unsigned par_entry, + H5AC_protect_t rw); +H5_DLL herr_t H5HF_man_dblock_locate(H5HF_hdr_t *hdr, hid_t dxpl_id, + hsize_t obj_off, H5HF_indirect_t **par_iblock, + unsigned *par_entry, hbool_t *par_did_protect, H5AC_protect_t rw); +H5_DLL herr_t H5HF_man_dblock_delete(H5F_t *f, hid_t dxpl_id, haddr_t dblock_addr, + hsize_t dblock_size); +H5_DLL herr_t H5HF_man_dblock_dest(H5HF_direct_t *dblock); + +/* Managed object routines */ +H5_DLL herr_t H5HF_man_insert(H5HF_hdr_t *fh, hid_t dxpl_id, size_t obj_size, + const void *obj, void *id); +H5_DLL herr_t H5HF_man_read(H5HF_hdr_t *fh, hid_t dxpl_id, const uint8_t *id, + void *obj); +H5_DLL herr_t H5HF_man_write(H5HF_hdr_t *hdr, hid_t dxpl_id, const uint8_t *id, + const void *obj); +H5_DLL herr_t H5HF_man_op(H5HF_hdr_t *hdr, hid_t dxpl_id, const uint8_t *id, + H5HF_operator_t op, void *op_data); +H5_DLL herr_t H5HF_man_remove(H5HF_hdr_t *hdr, hid_t dxpl_id, const uint8_t *id); + +/* 'Huge' object routines */ +H5_DLL herr_t H5HF_huge_init(H5HF_hdr_t *hdr); +H5_DLL herr_t H5HF_huge_insert(H5HF_hdr_t *hdr, hid_t dxpl_id, size_t obj_size, + void *obj, void *id); +H5_DLL herr_t H5HF_huge_get_obj_len(H5HF_hdr_t *hdr, hid_t dxpl_id, + const uint8_t *id, size_t *obj_len_p); +H5_DLL herr_t H5HF_huge_read(H5HF_hdr_t *fh, hid_t dxpl_id, const uint8_t *id, + void *obj); +H5_DLL herr_t H5HF_huge_write(H5HF_hdr_t *hdr, hid_t dxpl_id, const uint8_t *id, + const void *obj); +H5_DLL herr_t H5HF_huge_op(H5HF_hdr_t *hdr, hid_t dxpl_id, const uint8_t *id, + H5HF_operator_t op, void *op_data); +H5_DLL herr_t H5HF_huge_remove(H5HF_hdr_t *fh, hid_t dxpl_id, const uint8_t *id); +H5_DLL herr_t H5HF_huge_term(H5HF_hdr_t *hdr, hid_t dxpl_id); +H5_DLL herr_t H5HF_huge_delete(H5HF_hdr_t *hdr, hid_t dxpl_id); + +/* 'Huge' object v2 B-tree function callbacks */ +H5_DLL herr_t H5HF_huge_bt2_indir_found(const void *nrecord, void *op_data); +H5_DLL herr_t H5HF_huge_bt2_indir_remove(const void *nrecord, void *op_data); +H5_DLL herr_t H5HF_huge_bt2_filt_indir_found(const void *nrecord, void *op_data); +H5_DLL herr_t H5HF_huge_bt2_filt_indir_remove(const void *nrecord, void *op_data); +H5_DLL herr_t H5HF_huge_bt2_dir_remove(const void *nrecord, void *op_data); +H5_DLL herr_t H5HF_huge_bt2_filt_dir_found(const void *nrecord, void *op_data); +H5_DLL herr_t H5HF_huge_bt2_filt_dir_remove(const void *nrecord, void *op_data); + +/* 'Tiny' object routines */ +H5_DLL herr_t H5HF_tiny_init(H5HF_hdr_t *hdr); +H5_DLL herr_t H5HF_tiny_insert(H5HF_hdr_t *hdr, size_t obj_size, const void *obj, + void *id); +H5_DLL herr_t H5HF_tiny_get_obj_len(H5HF_hdr_t *hdr, const uint8_t *id, + size_t *obj_len_p); +H5_DLL herr_t H5HF_tiny_read(H5HF_hdr_t *fh, const uint8_t *id, void *obj); +H5_DLL herr_t H5HF_tiny_op(H5HF_hdr_t *hdr, const uint8_t *id, + H5HF_operator_t op, void *op_data); +H5_DLL herr_t H5HF_tiny_remove(H5HF_hdr_t *fh, const uint8_t *id); + +/* Debugging routines for dumping file structures */ +H5_DLL void H5HF_hdr_print(const H5HF_hdr_t *hdr, hid_t dxpl_id, + hbool_t dump_internal, FILE *stream, int indent, int fwidth); +H5_DLL herr_t H5HF_hdr_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, + FILE *stream, int indent, int fwidth); +H5_DLL herr_t H5HF_dblock_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, + FILE *stream, int indent, int fwidth, haddr_t hdr_addr, size_t nrec); +H5_DLL void H5HF_iblock_print(const H5HF_indirect_t *iblock, hbool_t dump_internal, + FILE *stream, int indent, int fwidth); +H5_DLL herr_t H5HF_iblock_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, + FILE *stream, int indent, int fwidth, haddr_t hdr_addr, unsigned nrows); + +/* Block iteration routines */ +H5_DLL herr_t H5HF_man_iter_init(H5HF_block_iter_t *biter); +H5_DLL herr_t H5HF_man_iter_start_offset(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_block_iter_t *biter, hsize_t offset); +H5_DLL herr_t H5HF_man_iter_start_entry(H5HF_hdr_t *hdr, H5HF_block_iter_t *biter, + H5HF_indirect_t *iblock, unsigned start_entry); +H5_DLL herr_t H5HF_man_iter_set_entry(const H5HF_hdr_t *hdr, + H5HF_block_iter_t *biter, unsigned entry); +H5_DLL herr_t H5HF_man_iter_next(H5HF_hdr_t *hdr, H5HF_block_iter_t *biter, + unsigned nentries); +H5_DLL herr_t H5HF_man_iter_up(H5HF_block_iter_t *biter); +H5_DLL herr_t H5HF_man_iter_down(H5HF_block_iter_t *biter, H5HF_indirect_t *iblock); +H5_DLL herr_t H5HF_man_iter_reset(H5HF_block_iter_t *biter); +H5_DLL herr_t H5HF_man_iter_curr(H5HF_block_iter_t *biter, unsigned *row, unsigned *col, + unsigned *entry, H5HF_indirect_t **block); +H5_DLL herr_t H5HF_man_iter_offset(H5HF_hdr_t *hdr, H5HF_block_iter_t *biter, + hsize_t *offset); +H5_DLL hbool_t H5HF_man_iter_ready(H5HF_block_iter_t *biter); + +/* Free space manipulation routines */ +H5_DLL herr_t H5HF_space_start(H5HF_hdr_t *hdr, hid_t dxpl_id, hbool_t may_create); +H5_DLL herr_t H5HF_space_add(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_free_section_t *node, unsigned flags); +H5_DLL htri_t H5HF_space_find(H5HF_hdr_t *hdr, hid_t dxpl_id, hsize_t request, + H5HF_free_section_t **node); +H5_DLL herr_t H5HF_space_revert_root(const H5HF_hdr_t *hdr, hid_t dxpl_id); +H5_DLL herr_t H5HF_space_create_root(const H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_indirect_t *root_iblock); +H5_DLL herr_t H5HF_space_size(H5HF_hdr_t *hdr, hid_t dxpl_id, hsize_t *fs_size); +H5_DLL herr_t H5HF_space_remove(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_free_section_t *node); +H5_DLL herr_t H5HF_space_close(H5HF_hdr_t *hdr, hid_t dxpl_id); +H5_DLL herr_t H5HF_space_delete(H5HF_hdr_t *hdr, hid_t dxpl_id); +H5_DLL herr_t H5HF_space_sect_change_class(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_free_section_t *sect, unsigned new_class); + +/* Free space section routines */ +H5_DLL H5HF_free_section_t *H5HF_sect_single_new(hsize_t sect_off, + size_t sect_size, H5HF_indirect_t *parent, unsigned par_entry); +H5_DLL herr_t H5HF_sect_single_revive(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_free_section_t *sect); +H5_DLL herr_t H5HF_sect_single_dblock_info(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_free_section_t *sect, haddr_t *dblock_addr, size_t *dblock_size); +H5_DLL herr_t H5HF_sect_single_reduce(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_free_section_t *sect, size_t amt); +H5_DLL herr_t H5HF_sect_row_revive(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_free_section_t *sect); +H5_DLL herr_t H5HF_sect_row_reduce(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_free_section_t *sect, unsigned *entry_p); +H5_DLL H5HF_indirect_t *H5HF_sect_row_get_iblock(H5HF_free_section_t *sect); +H5_DLL herr_t H5HF_sect_indirect_add(H5HF_hdr_t *hdr, hid_t dxpl_id, + H5HF_indirect_t *iblock, unsigned start_entry, unsigned nentries); +H5_DLL herr_t H5HF_sect_single_free(H5FS_section_info_t *sect); + +/* Internal operator callbacks */ +H5_DLL herr_t H5HF_op_read(const void *obj, size_t obj_len, void *op_data); +H5_DLL herr_t H5HF_op_write(const void *obj, size_t obj_len, void *op_data); + +/* Testing routines */ +#ifdef H5HF_TESTING +H5_DLL herr_t H5HF_get_cparam_test(const H5HF_t *fh, H5HF_create_t *cparam); +H5_DLL int H5HF_cmp_cparam_test(const H5HF_create_t *cparam1, const H5HF_create_t *cparam2); +H5_DLL unsigned H5HF_get_max_root_rows(const H5HF_t *fh); +H5_DLL unsigned H5HF_get_dtable_width_test(const H5HF_t *fh); +H5_DLL unsigned H5HF_get_dtable_max_drows_test(const H5HF_t *fh); +H5_DLL unsigned H5HF_get_iblock_max_drows_test(const H5HF_t *fh, unsigned pos); +H5_DLL hsize_t H5HF_get_dblock_size_test(const H5HF_t *fh, unsigned row); +H5_DLL hsize_t H5HF_get_dblock_free_test(const H5HF_t *fh, unsigned row); +H5_DLL herr_t H5HF_get_id_off_test(const H5HF_t *fh, const void *id, hsize_t *obj_off); +H5_DLL herr_t H5HF_get_id_type_test(const void *id, unsigned char *obj_type); +H5_DLL herr_t H5HF_get_tiny_info_test(const H5HF_t *fh, size_t *max_len, + hbool_t *len_extended); +H5_DLL herr_t H5HF_get_huge_info_test(const H5HF_t *fh, hsize_t *next_id, + hbool_t *ids_direct); +#endif /* H5HF_TESTING */ + +#endif /* _H5HFpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5HFpublic.h b/Resources/windows-libs/HDF5/include/H5HFpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..78b367bb62034c82fcef9745c556f96ac5816fa2 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5HFpublic.h @@ -0,0 +1,54 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5HFpublic.h + * Feb 24 2006 + * Quincey Koziol <koziol@ncsa.uiuc.edu> + * + * Purpose: Public declarations for the fractal heap package. + * + *------------------------------------------------------------------------- + */ + +#ifndef _H5HFpublic_H +#define _H5HFpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +/*****************/ +/* Public Macros */ +/*****************/ + +/*******************/ +/* Public Typedefs */ +/*******************/ + +/**********************************/ +/* Public API Function Prototypes */ +/**********************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _H5HFpublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5HGpkg.h b/Resources/windows-libs/HDF5/include/H5HGpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..5d4234f00d5d5e99351cf4acced2537a6206533c --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5HGpkg.h @@ -0,0 +1,150 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Wednesday, July 9, 2003 + * + * Purpose: This file contains declarations which are visible + * only within the H5HG package. Source files outside the + * H5HG package should include H5HGprivate.h instead. + */ +#ifndef H5HG_PACKAGE +#error "Do not include this file outside the H5HG package!" +#endif + +#ifndef _H5HGpkg_H +#define _H5HGpkg_H + +/* Get package's private header */ +#include "H5HGprivate.h" + +/* Other private headers needed by this file */ +#include "H5ACprivate.h" /* Metadata cache */ +#include "H5FLprivate.h" /* Free lists */ + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + +/* The cache subclass */ +H5_DLLVAR const H5AC_class_t H5AC_GHEAP[1]; + +/* Declare extern the free list to manage the H5HG_t struct */ +H5FL_EXTERN(H5HG_heap_t); + +/* Declare extern the free list to manage sequences of H5HG_obj_t's */ +H5FL_SEQ_EXTERN(H5HG_obj_t); + +/* Declare extern the PQ free list to manage heap chunks */ +H5FL_BLK_EXTERN(gheap_chunk); + + +/**************************/ +/* Package Private Macros */ +/**************************/ + +/* + * Global heap collection version. + */ +#define H5HG_VERSION 1 + +/* + * All global heap collections are at least this big. This allows us to read + * most collections with a single read() since we don't have to read a few + * bytes of header to figure out the size. If the heap is larger than this + * then a second read gets the rest after we've decoded the header. + */ +#define H5HG_MINSIZE 4096 + +/* + * Pad all global heap messages to a multiple of eight bytes so we can load + * the entire collection into memory and operate on it there. Eight should + * be sufficient for machines that have alignment constraints because our + * largest data type is eight bytes. + */ +#define H5HG_ALIGNMENT 8 +#define H5HG_ALIGN(X) (H5HG_ALIGNMENT*(((X)+H5HG_ALIGNMENT-1)/ \ + H5HG_ALIGNMENT)) +#define H5HG_ISALIGNED(X) ((X)==H5HG_ALIGN(X)) + +/* + * The size of the collection header, always a multiple of the alignment so + * that the stuff that follows the header is aligned. + */ +#define H5HG_SIZEOF_HDR(f) \ + H5HG_ALIGN(4 + /*magic number */ \ + 1 + /*version number */ \ + 3 + /*reserved */ \ + H5F_SIZEOF_SIZE(f)) /*collection size */ + +/* + * The overhead associated with each object in the heap, always a multiple of + * the alignment so that the stuff that follows the header is aligned. + */ +#define H5HG_SIZEOF_OBJHDR(f) \ + H5HG_ALIGN(2 + /*object id number */ \ + 2 + /*reference count */ \ + 4 + /*reserved */ \ + H5F_SIZEOF_SIZE(f)) /*object data size */ + +/* + * The initial guess for the number of messages in a collection. We assume + * that all objects in that collection are zero length, giving the maximum + * possible number of objects in the collection. The collection itself has + * some overhead and each message has some overhead. The `+2' accounts for + * rounding and for the free space object. + */ +#define H5HG_NOBJS(f,z) (int)((((z)-H5HG_SIZEOF_HDR(f))/ \ + H5HG_SIZEOF_OBJHDR(f)+2)) + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +typedef struct H5HG_obj_t { + int nrefs; /*reference count */ + size_t size; /*total size of object */ + uint8_t *begin; /*ptr to object into heap->chunk*/ +} H5HG_obj_t; + +/* Forward declarations for fields */ +struct H5F_file_t; + +struct H5HG_heap_t { + H5AC_info_t cache_info; /* Information for H5AC cache functions, _must_ be */ + /* first field in structure */ + haddr_t addr; /*collection address */ + size_t size; /*total size of collection */ + uint8_t *chunk; /*the collection, incl. header */ + size_t nalloc; /*numb object slots allocated */ + size_t nused; /*number of slots used */ + /* If this value is >65535 then all indices */ + /* have been used at some time and the */ + /* correct new index should be searched for */ + struct H5F_file_t *shared; /* shared file */ + H5HG_obj_t *obj; /*array of object descriptions */ +}; + +/******************************/ +/* Package Private Prototypes */ +/******************************/ +H5_DLL herr_t H5HG_free(H5HG_heap_t *heap); +H5_DLL H5HG_heap_t *H5HG_protect(H5F_t *f, hid_t dxpl_id, haddr_t addr, H5AC_protect_t rw); + +#endif /* _H5HGpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5HGpublic.h b/Resources/windows-libs/HDF5/include/H5HGpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..01cd60c6af3a254c68588c7c370663f56f11d9b2 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5HGpublic.h @@ -0,0 +1,33 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke <matzke@llnl.gov> + * Friday, March 27, 1998 + */ +#ifndef _H5HGpublic_H +#define _H5HGpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Resources/windows-libs/HDF5/include/H5HLpkg.h b/Resources/windows-libs/HDF5/include/H5HLpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..bf9be2ce8495b9ef25f801a24ff482f983966af3 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5HLpkg.h @@ -0,0 +1,160 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Wednesday, July 9, 2003 + * + * Purpose: This file contains declarations which are visible + * only within the H5HL package. Source files outside the + * H5HL package should include H5HLprivate.h instead. + */ +#ifndef H5HL_PACKAGE +#error "Do not include this file outside the H5HL package!" +#endif + +#ifndef _H5HLpkg_H +#define _H5HLpkg_H + +/* Get package's private header */ +#include "H5HLprivate.h" + +/* Other private headers needed by this file */ +#include "H5FLprivate.h" /* Free lists */ + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + +/* The local heap prefix cache subclass */ +H5_DLLVAR const H5AC_class_t H5AC_LHEAP_PRFX[1]; + +/* The local heap data block cache subclass */ +H5_DLLVAR const H5AC_class_t H5AC_LHEAP_DBLK[1]; + +/* Declare extern the free list to manage the H5HL_free_t struct */ +H5FL_EXTERN(H5HL_free_t); + +/* Declare extern the PQ free list to manage the heap chunk information */ +H5FL_BLK_EXTERN(lheap_chunk); + + +/**************************/ +/* Package Private Macros */ +/**************************/ + +#define H5HL_SIZEOF_HDR(F) \ + H5HL_ALIGN(H5_SIZEOF_MAGIC + /*heap signature */ \ + 1 + /*version */ \ + 3 + /*reserved */ \ + H5F_SIZEOF_SIZE(F) + /*data size */ \ + H5F_SIZEOF_SIZE(F) + /*free list head */ \ + H5F_SIZEOF_ADDR(F)) /*data address */ + +/* Value indicating end of free list on disk */ +#define H5HL_FREE_NULL 1 + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +typedef struct H5HL_free_t { + size_t offset; /*offset of free block */ + size_t size; /*size of free block */ + struct H5HL_free_t *prev; /*previous entry in free list */ + struct H5HL_free_t *next; /*next entry in free list */ +} H5HL_free_t; + +/* Forward declarations */ +typedef struct H5HL_dblk_t H5HL_dblk_t; +typedef struct H5HL_prfx_t H5HL_prfx_t; + +struct H5HL_t { + /* General heap-management fields */ + size_t rc; /* Ref. count for prefix & data block using this struct */ + size_t prots; /* # of times the heap has been protected */ + size_t sizeof_size; /* Size of file sizes */ + size_t sizeof_addr; /* Size of file addresses */ + hbool_t single_cache_obj; /* Indicate if the heap is a single object in the cache */ + H5HL_free_t *freelist; /*the free list */ + + /* Prefix-specific fields */ + H5HL_prfx_t *prfx; /* The prefix object for the heap */ + haddr_t prfx_addr; /* address of heap prefix */ + size_t prfx_size; /* size of heap prefix */ + hsize_t free_block; /* Address of first free block */ + + /* Data block-specific fields */ + H5HL_dblk_t *dblk; /* The data block object for the heap */ + haddr_t dblk_addr; /* address of data block */ + size_t dblk_size; /* size of heap data block on disk and in mem */ + uint8_t *dblk_image; /* The data block image */ +}; + +/* Struct for heap data block */ +struct H5HL_dblk_t { + H5AC_info_t cache_info; /* Information for H5AC cache functions, _must_ be */ + /* first field in structure */ + H5HL_t *heap; /* Pointer to heap for data block */ +}; + +/* Struct for heap prefix */ +struct H5HL_prfx_t { + H5AC_info_t cache_info; /* Information for H5AC cache functions, _must_ be */ + /* first field in structure */ + H5HL_t *heap; /* Pointer to heap for prefix */ +}; + +/* Callback information for loading local heap prefix from disk */ +typedef struct H5HL_cache_prfx_ud_t { + /* Downwards */ + size_t sizeof_size; /* Size of file sizes */ + size_t sizeof_addr; /* Size of file addresses */ + haddr_t prfx_addr; /* Address of prefix */ + size_t sizeof_prfx; /* Size of heap prefix */ + + /* Upwards */ +} H5HL_cache_prfx_ud_t; + +/* Callback information for loading local heap data block from disk */ +typedef struct H5HL_cache_dblk_ud_t { + /* Downwards */ + H5HL_t *heap; /* Local heap */ + + /* Upwards */ + hbool_t loaded; /* Whether data block was loaded from file */ +} H5HL_cache_dblk_ud_t; + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +/* Heap routines */ +H5_DLL H5HL_t *H5HL_new(size_t sizeof_size, size_t sizeof_addr, size_t prfx_size); +H5_DLL herr_t H5HL_dest(H5HL_t *heap); + +/* Heap prefix routines */ +H5_DLL H5HL_prfx_t *H5HL_prfx_new(H5HL_t *heap); +H5_DLL herr_t H5HL_prfx_dest(H5HL_prfx_t *prfx); + +/* Heap data block routines */ +H5_DLL H5HL_dblk_t *H5HL_dblk_new(H5HL_t *heap); +H5_DLL herr_t H5HL_dblk_dest(H5HL_dblk_t *dblk); + +#endif /* _H5HLpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5HLpublic.h b/Resources/windows-libs/HDF5/include/H5HLpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..db00f510c926c07244f51773b13ddeb7dccf81c1 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5HLpublic.h @@ -0,0 +1,41 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5HLpublic.h + * Jul 16 1997 + * Robb Matzke <matzke@llnl.gov> + * + * Purpose: Public declarations for the H5HL (local heap) package. + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifndef _H5HLpublic_H +#define _H5HLpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Resources/windows-libs/HDF5/include/H5IMpublic.h b/Resources/windows-libs/HDF5/include/H5IMpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..6833f02d6e437e1de15d0f1cfc846039974ba8a8 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5IMpublic.h @@ -0,0 +1,87 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef _H5IMpublic_H +#define _H5IMpublic_H + + +#ifdef __cplusplus +extern "C" { +#endif + + +H5_HLDLL herr_t H5IMmake_image_8bit( hid_t loc_id, + const char *dset_name, + hsize_t width, + hsize_t height, + const unsigned char *buffer ); + +H5_HLDLL herr_t H5IMmake_image_24bit( hid_t loc_id, + const char *dset_name, + hsize_t width, + hsize_t height, + const char *interlace, + const unsigned char *buffer ); + +H5_HLDLL herr_t H5IMget_image_info( hid_t loc_id, + const char *dset_name, + hsize_t *width, + hsize_t *height, + hsize_t *planes, + char *interlace, + hssize_t *npals ); + +H5_HLDLL herr_t H5IMread_image( hid_t loc_id, + const char *dset_name, + unsigned char *buffer ); + +H5_HLDLL herr_t H5IMmake_palette( hid_t loc_id, + const char *pal_name, + const hsize_t *pal_dims, + const unsigned char *pal_data ); + +H5_HLDLL herr_t H5IMlink_palette( hid_t loc_id, + const char *image_name, + const char *pal_name ); + +H5_HLDLL herr_t H5IMunlink_palette( hid_t loc_id, + const char *image_name, + const char *pal_name ); + +H5_HLDLL herr_t H5IMget_npalettes( hid_t loc_id, + const char *image_name, + hssize_t *npals ); + +H5_HLDLL herr_t H5IMget_palette_info( hid_t loc_id, + const char *image_name, + int pal_number, + hsize_t *pal_dims ); + +H5_HLDLL herr_t H5IMget_palette( hid_t loc_id, + const char *image_name, + int pal_number, + unsigned char *pal_data ); + +H5_HLDLL herr_t H5IMis_image( hid_t loc_id, + const char *dset_name ); + +H5_HLDLL herr_t H5IMis_palette( hid_t loc_id, + const char *dset_name ); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Resources/windows-libs/HDF5/include/H5IdComponent.h b/Resources/windows-libs/HDF5/include/H5IdComponent.h new file mode 100644 index 0000000000000000000000000000000000000000..986e50a09b608e5f0bc26ffe3fdb2d477058bde7 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5IdComponent.h @@ -0,0 +1,111 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __IdComponent_H +#define __IdComponent_H + +// IdComponent represents an HDF5 object that has an identifier. + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +class DataSpace; +/*! \class IdComponent + \brief Class IdComponent provides wrappers of the C functions that + operate on an HDF5 identifier. + + In most cases, the C library handles these operations and an application + rarely needs them. +*/ +class H5_DLLCPP IdComponent { + public: + // Increment reference counter. + void incRefCount(const hid_t obj_id) const; + void incRefCount() const; + + // Decrement reference counter. + void decRefCount(const hid_t obj_id) const; + void decRefCount() const; + + // Get the reference counter to this identifier. + int getCounter(const hid_t obj_id) const; + int getCounter() const; + + // Returns an HDF5 object type, given the object id. + static H5I_type_t getHDFObjType(const hid_t obj_id); + + // Returns an HDF5 object type of this object. + H5I_type_t getHDFObjType() const; + + // Assignment operator. + IdComponent& operator=( const IdComponent& rhs ); + +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Gets the identifier of this object. + virtual hid_t getId () const = 0; +#endif // DOXYGEN_SHOULD_SKIP_THIS + + // Sets the identifier of this object to a new value. + void setId(const hid_t new_id); + + // Creates an object to hold an HDF5 identifier. + IdComponent( const hid_t h5_id ); + + // Copy constructor: makes copy of the original IdComponent object. + IdComponent( const IdComponent& original ); + +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Pure virtual function for there are various H5*close for the + // subclasses. + virtual void close() = 0; + + // Makes and returns the string "<class-name>::<func_name>"; + // <class-name> is returned by fromClass(). + H5std_string inMemFunc(const char* func_name) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass() const { return("IdComponent");} + +#endif // DOXYGEN_SHOULD_SKIP_THIS + + // Destructor + virtual ~IdComponent(); + + protected: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + + // Default constructor. + IdComponent(); + + // Gets the name of the file, in which an HDF5 object belongs. + H5std_string p_get_file_name() const; + + // Verifies that the given id is valid. + static bool p_valid_id(const hid_t obj_id); + + // Sets the identifier of this object to a new value. - this one + // doesn't increment reference count + virtual void p_setId(const hid_t new_id) = 0; + +#endif // DOXYGEN_SHOULD_SKIP_THIS + +}; // end class IdComponent + +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __IdComponent_H diff --git a/Resources/windows-libs/HDF5/include/H5Include.h b/Resources/windows-libs/HDF5/include/H5Include.h new file mode 100644 index 0000000000000000000000000000000000000000..87cb182aa19c81ec883f784086ffce86ad59baf5 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Include.h @@ -0,0 +1,30 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#include <hdf5.h> + +// Define bool type for platforms that don't support bool yet +#ifdef BOOL_NOTDEFINED +#ifdef false +#undef false +#endif +#ifdef true +#undef true +#endif +typedef int bool; +const bool false = 0; +const bool true = 1; +#endif diff --git a/Resources/windows-libs/HDF5/include/H5IntType.h b/Resources/windows-libs/HDF5/include/H5IntType.h new file mode 100644 index 0000000000000000000000000000000000000000..95fa64246cd5e7b1950bcbd44524589c107ab6c9 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5IntType.h @@ -0,0 +1,57 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5IntType_H +#define __H5IntType_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +//! Class IntType operates on HDF5 integer datatype. +class H5_DLLCPP IntType : public AtomType { + public: + // Creates a integer type using a predefined type + IntType(const PredType& pred_type); + + // Gets the integer datatype of the specified dataset + IntType(const DataSet& dataset); + + // Retrieves the sign type for an integer type + H5T_sign_t getSign() const; + + // Sets the sign proprety for an integer type. + void setSign( H5T_sign_t sign ) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("IntType"); } + + // Default constructor + IntType(); + + // Creates a integer datatype using an existing id + IntType(const hid_t existing_id); + + // Copy constructor: makes copy of IntType object + IntType(const IntType& original); + + // Noop destructor. + virtual ~IntType(); +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5IntType_H diff --git a/Resources/windows-libs/HDF5/include/H5Ipkg.h b/Resources/windows-libs/HDF5/include/H5Ipkg.h new file mode 100644 index 0000000000000000000000000000000000000000..dc8e867585b10bef5c2da1c5d1b00a70f841e3d6 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Ipkg.h @@ -0,0 +1,76 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Thursday, May 15, 2003 + * + * Purpose: This file contains declarations which are visible only within + * the H5I package. Source files outside the H5I package should + * include H5Iprivate.h instead. + */ +#ifndef H5I_PACKAGE +#error "Do not include this file outside the H5I package!" +#endif + +#ifndef _H5Ipkg_H +#define _H5Ipkg_H + +/* Get package's private header */ +#include "H5Iprivate.h" + +/* Other private headers needed by this file */ + +/**************************/ +/* Package Private Macros */ +/**************************/ + +/* + * Number of bits to use for ID Type in each atom. Increase if more types + * are needed (though this will decrease the number of available IDs per + * type). This is the only number that must be changed since all other bit + * field sizes and masks are calculated from TYPE_BITS. + */ +#define TYPE_BITS 7 +#define TYPE_MASK ((1<<TYPE_BITS)-1) + +#define H5I_MAX_NUM_TYPES TYPE_MASK + +/* + * Number of bits to use for the Atom index in each atom (assumes 8-bit + * bytes). We don't use the sign bit. + */ +#define ID_BITS ((sizeof(hid_t)*8)-(TYPE_BITS+1)) +#define ID_MASK ((1<<ID_BITS)-1) + +/* Map an atom to an ID type number */ +#define H5I_TYPE(a) ((H5I_type_t)(((hid_t)(a)>>ID_BITS) & TYPE_MASK)) + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +/* Testing functions */ +#ifdef H5I_TESTING +H5_DLL ssize_t H5I_get_name_test(hid_t id, char *name/*out*/, size_t size, + hbool_t *cached); +#endif /* H5I_TESTING */ + +#endif /*_H5Ipkg_H*/ diff --git a/Resources/windows-libs/HDF5/include/H5Ipublic.h b/Resources/windows-libs/HDF5/include/H5Ipublic.h new file mode 100644 index 0000000000000000000000000000000000000000..d6305564544b500bad7a510b717f16f1f322aad7 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Ipublic.h @@ -0,0 +1,104 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains function prototypes for each exported function in + * the H5I module. + */ +#ifndef _H5Ipublic_H +#define _H5Ipublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +/* + * Library type values. Start with `1' instead of `0' because it makes the + * tracing output look better when hid_t values are large numbers. Change the + * TYPE_BITS in H5I.c if the MAXID gets larger than 32 (an assertion will + * fail otherwise). + * + * When adding types here, add a section to the 'misc19' test in test/tmisc.c + * to verify that the H5I{inc|dec|get}_ref() routines work correctly with in. + * + */ +typedef enum H5I_type_t { + H5I_UNINIT = (-2), /*uninitialized type */ + H5I_BADID = (-1), /*invalid Type */ + H5I_FILE = 1, /*type ID for File objects */ + H5I_GROUP, /*type ID for Group objects */ + H5I_DATATYPE, /*type ID for Datatype objects */ + H5I_DATASPACE, /*type ID for Dataspace objects */ + H5I_DATASET, /*type ID for Dataset objects */ + H5I_ATTR, /*type ID for Attribute objects */ + H5I_REFERENCE, /*type ID for Reference objects */ + H5I_VFL, /*type ID for virtual file layer */ + H5I_GENPROP_CLS, /*type ID for generic property list classes */ + H5I_GENPROP_LST, /*type ID for generic property lists */ + H5I_ERROR_CLASS, /*type ID for error classes */ + H5I_ERROR_MSG, /*type ID for error messages */ + H5I_ERROR_STACK, /*type ID for error stacks */ + H5I_NTYPES /*number of library types, MUST BE LAST! */ +} H5I_type_t; + +/* Type of atoms to return to users */ +typedef int hid_t; +#define H5_SIZEOF_HID_T H5_SIZEOF_INT + +/* An invalid object ID. This is also negative for error return. */ +#define H5I_INVALID_HID (-1) + +/* + * Function for freeing objects. This function will be called with an object + * ID type number and a pointer to the object. The function should free the + * object and return non-negative to indicate that the object + * can be removed from the ID type. If the function returns negative + * (failure) then the object will remain in the ID type. + */ +typedef herr_t (*H5I_free_t)(void*); + +/* Type of the function to compare objects & keys */ +typedef int (*H5I_search_func_t)(void *obj, hid_t id, void *key); + +#ifdef __cplusplus +extern "C" { +#endif + +/* Public API functions */ + +H5_DLL hid_t H5Iregister(H5I_type_t type, const void *object); +H5_DLL void *H5Iobject_verify(hid_t id, H5I_type_t id_type); +H5_DLL void *H5Iremove_verify(hid_t id, H5I_type_t id_type); +H5_DLL H5I_type_t H5Iget_type(hid_t id); +H5_DLL hid_t H5Iget_file_id(hid_t id); +H5_DLL ssize_t H5Iget_name(hid_t id, char *name/*out*/, size_t size); +H5_DLL int H5Iinc_ref(hid_t id); +H5_DLL int H5Idec_ref(hid_t id); +H5_DLL int H5Iget_ref(hid_t id); +H5_DLL H5I_type_t H5Iregister_type(size_t hash_size, unsigned reserved, H5I_free_t free_func); +H5_DLL herr_t H5Iclear_type(H5I_type_t type, hbool_t force); +H5_DLL herr_t H5Idestroy_type(H5I_type_t type); +H5_DLL int H5Iinc_type_ref(H5I_type_t type); +H5_DLL int H5Idec_type_ref(H5I_type_t type); +H5_DLL int H5Iget_type_ref(H5I_type_t type); +H5_DLL void *H5Isearch(H5I_type_t type, H5I_search_func_t func, void *key); +H5_DLL herr_t H5Inmembers(H5I_type_t type, hsize_t *num_members); +H5_DLL htri_t H5Itype_exists(H5I_type_t type); +H5_DLL htri_t H5Iis_valid(hid_t id); + +#ifdef __cplusplus +} +#endif +#endif /* _H5Ipublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5LTparse.h b/Resources/windows-libs/HDF5/include/H5LTparse.h new file mode 100644 index 0000000000000000000000000000000000000000..2dd8057aed929c042f686e31d799e14239698dc5 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5LTparse.h @@ -0,0 +1,65 @@ +#ifndef YYERRCODE +#define YYERRCODE 256 +#endif + +#define H5T_STD_I8BE_TOKEN 257 +#define H5T_STD_I8LE_TOKEN 258 +#define H5T_STD_I16BE_TOKEN 259 +#define H5T_STD_I16LE_TOKEN 260 +#define H5T_STD_I32BE_TOKEN 261 +#define H5T_STD_I32LE_TOKEN 262 +#define H5T_STD_I64BE_TOKEN 263 +#define H5T_STD_I64LE_TOKEN 264 +#define H5T_STD_U8BE_TOKEN 265 +#define H5T_STD_U8LE_TOKEN 266 +#define H5T_STD_U16BE_TOKEN 267 +#define H5T_STD_U16LE_TOKEN 268 +#define H5T_STD_U32BE_TOKEN 269 +#define H5T_STD_U32LE_TOKEN 270 +#define H5T_STD_U64BE_TOKEN 271 +#define H5T_STD_U64LE_TOKEN 272 +#define H5T_NATIVE_CHAR_TOKEN 273 +#define H5T_NATIVE_SCHAR_TOKEN 274 +#define H5T_NATIVE_UCHAR_TOKEN 275 +#define H5T_NATIVE_SHORT_TOKEN 276 +#define H5T_NATIVE_USHORT_TOKEN 277 +#define H5T_NATIVE_INT_TOKEN 278 +#define H5T_NATIVE_UINT_TOKEN 279 +#define H5T_NATIVE_LONG_TOKEN 280 +#define H5T_NATIVE_ULONG_TOKEN 281 +#define H5T_NATIVE_LLONG_TOKEN 282 +#define H5T_NATIVE_ULLONG_TOKEN 283 +#define H5T_IEEE_F32BE_TOKEN 284 +#define H5T_IEEE_F32LE_TOKEN 285 +#define H5T_IEEE_F64BE_TOKEN 286 +#define H5T_IEEE_F64LE_TOKEN 287 +#define H5T_NATIVE_FLOAT_TOKEN 288 +#define H5T_NATIVE_DOUBLE_TOKEN 289 +#define H5T_NATIVE_LDOUBLE_TOKEN 290 +#define H5T_STRING_TOKEN 291 +#define STRSIZE_TOKEN 292 +#define STRPAD_TOKEN 293 +#define CSET_TOKEN 294 +#define CTYPE_TOKEN 295 +#define H5T_VARIABLE_TOKEN 296 +#define H5T_STR_NULLTERM_TOKEN 297 +#define H5T_STR_NULLPAD_TOKEN 298 +#define H5T_STR_SPACEPAD_TOKEN 299 +#define H5T_CSET_ASCII_TOKEN 300 +#define H5T_CSET_UTF8_TOKEN 301 +#define H5T_C_S1_TOKEN 302 +#define H5T_FORTRAN_S1_TOKEN 303 +#define H5T_OPAQUE_TOKEN 304 +#define OPQ_SIZE_TOKEN 305 +#define OPQ_TAG_TOKEN 306 +#define H5T_COMPOUND_TOKEN 307 +#define H5T_ENUM_TOKEN 308 +#define H5T_ARRAY_TOKEN 309 +#define H5T_VLEN_TOKEN 310 +#define STRING 311 +#define NUMBER 312 +typedef union { + int ival; /*for integer token*/ + char *sval; /*for name string*/ +} YYSTYPE; +extern YYSTYPE H5LTyylval; diff --git a/Resources/windows-libs/HDF5/include/H5LTpublic.h b/Resources/windows-libs/HDF5/include/H5LTpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..929c6bdde4a4ed7ea3d3379546b2c6d1187cf548 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5LTpublic.h @@ -0,0 +1,370 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef _H5LTpublic_H +#define _H5LTpublic_H + +/* Flag definitions for H5LTopen_file_image() */ +#define H5LT_FILE_IMAGE_OPEN_RW 0x0001 /* Open image for read-write */ +#define H5LT_FILE_IMAGE_DONT_COPY 0x0002 /* The HDF5 lib won't copy */ +/* user supplied image buffer. The same image is open with the core driver. */ +#define H5LT_FILE_IMAGE_DONT_RELEASE 0x0004 /* The HDF5 lib won't */ +/* deallocate user supplied image buffer. The user application is reponsible */ +/* for doing so. */ +#define H5LT_FILE_IMAGE_ALL 0x0007 + +typedef enum H5LT_lang_t { + H5LT_LANG_ERR = -1, /*this is the first*/ + H5LT_DDL = 0, /*for DDL*/ + H5LT_C = 1, /*for C*/ + H5LT_FORTRAN = 2, /*for Fortran*/ + H5LT_NO_LANG = 3 /*this is the last*/ +} H5LT_lang_t; + +#ifdef __cplusplus +extern "C" { +#endif + +/*------------------------------------------------------------------------- + * + * Make dataset functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL herr_t H5LTmake_dataset( hid_t loc_id, + const char *dset_name, + int rank, + const hsize_t *dims, + hid_t type_id, + const void *buffer ); + +H5_HLDLL herr_t H5LTmake_dataset_char( hid_t loc_id, + const char *dset_name, + int rank, + const hsize_t *dims, + const char *buffer ); + +H5_HLDLL herr_t H5LTmake_dataset_short( hid_t loc_id, + const char *dset_name, + int rank, + const hsize_t *dims, + const short *buffer ); + +H5_HLDLL herr_t H5LTmake_dataset_int( hid_t loc_id, + const char *dset_name, + int rank, + const hsize_t *dims, + const int *buffer ); + +H5_HLDLL herr_t H5LTmake_dataset_long( hid_t loc_id, + const char *dset_name, + int rank, + const hsize_t *dims, + const long *buffer ); + +H5_HLDLL herr_t H5LTmake_dataset_float( hid_t loc_id, + const char *dset_name, + int rank, + const hsize_t *dims, + const float *buffer ); + +H5_HLDLL herr_t H5LTmake_dataset_double( hid_t loc_id, + const char *dset_name, + int rank, + const hsize_t *dims, + const double *buffer ); + +H5_HLDLL herr_t H5LTmake_dataset_string( hid_t loc_id, + const char *dset_name, + const char *buf ); + + +/*------------------------------------------------------------------------- + * + * Read dataset functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL herr_t H5LTread_dataset( hid_t loc_id, + const char *dset_name, + hid_t type_id, + void *buffer ); + +H5_HLDLL herr_t H5LTread_dataset_char( hid_t loc_id, + const char *dset_name, + char *buffer ); + +H5_HLDLL herr_t H5LTread_dataset_short( hid_t loc_id, + const char *dset_name, + short *buffer ); + +H5_HLDLL herr_t H5LTread_dataset_int( hid_t loc_id, + const char *dset_name, + int *buffer ); + +H5_HLDLL herr_t H5LTread_dataset_long( hid_t loc_id, + const char *dset_name, + long *buffer ); + +H5_HLDLL herr_t H5LTread_dataset_float( hid_t loc_id, + const char *dset_name, + float *buffer ); + +H5_HLDLL herr_t H5LTread_dataset_double( hid_t loc_id, + const char *dset_name, + double *buffer ); + +H5_HLDLL herr_t H5LTread_dataset_string( hid_t loc_id, + const char *dset_name, + char *buf ); + +/*------------------------------------------------------------------------- + * + * Query dataset functions + * + *------------------------------------------------------------------------- + */ + + +H5_HLDLL herr_t H5LTget_dataset_ndims( hid_t loc_id, + const char *dset_name, + int *rank ); + +H5_HLDLL herr_t H5LTget_dataset_info( hid_t loc_id, + const char *dset_name, + hsize_t *dims, + H5T_class_t *type_class, + size_t *type_size ); + +H5_HLDLL herr_t H5LTfind_dataset( hid_t loc_id, const char *name ); + + + +/*------------------------------------------------------------------------- + * + * Set attribute functions + * + *------------------------------------------------------------------------- + */ + + +H5_HLDLL herr_t H5LTset_attribute_string( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const char *attr_data ); + +H5_HLDLL herr_t H5LTset_attribute_char( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const char *buffer, + size_t size ); + +H5_HLDLL herr_t H5LTset_attribute_uchar( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const unsigned char *buffer, + size_t size ); + +H5_HLDLL herr_t H5LTset_attribute_short( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const short *buffer, + size_t size ); + +H5_HLDLL herr_t H5LTset_attribute_ushort( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const unsigned short *buffer, + size_t size ); + +H5_HLDLL herr_t H5LTset_attribute_int( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const int *buffer, + size_t size ); + +H5_HLDLL herr_t H5LTset_attribute_uint( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const unsigned int *buffer, + size_t size ); + +H5_HLDLL herr_t H5LTset_attribute_long( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const long *buffer, + size_t size ); + +H5_HLDLL herr_t H5LTset_attribute_long_long( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const long long *buffer, + size_t size ); + +H5_HLDLL herr_t H5LTset_attribute_ulong( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const unsigned long *buffer, + size_t size ); + +H5_HLDLL herr_t H5LTset_attribute_float( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const float *buffer, + size_t size ); + +H5_HLDLL herr_t H5LTset_attribute_double( hid_t loc_id, + const char *obj_name, + const char *attr_name, + const double *buffer, + size_t size ); + +/*------------------------------------------------------------------------- + * + * Get attribute functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL herr_t H5LTget_attribute( hid_t loc_id, + const char *obj_name, + const char *attr_name, + hid_t mem_type_id, + void *data ); + +H5_HLDLL herr_t H5LTget_attribute_string( hid_t loc_id, + const char *obj_name, + const char *attr_name, + char *data ); + +H5_HLDLL herr_t H5LTget_attribute_char( hid_t loc_id, + const char *obj_name, + const char *attr_name, + char *data ); + +H5_HLDLL herr_t H5LTget_attribute_uchar( hid_t loc_id, + const char *obj_name, + const char *attr_name, + unsigned char *data ); + +H5_HLDLL herr_t H5LTget_attribute_short( hid_t loc_id, + const char *obj_name, + const char *attr_name, + short *data ); + +H5_HLDLL herr_t H5LTget_attribute_ushort( hid_t loc_id, + const char *obj_name, + const char *attr_name, + unsigned short *data ); + +H5_HLDLL herr_t H5LTget_attribute_int( hid_t loc_id, + const char *obj_name, + const char *attr_name, + int *data ); + +H5_HLDLL herr_t H5LTget_attribute_uint( hid_t loc_id, + const char *obj_name, + const char *attr_name, + unsigned int *data ); + +H5_HLDLL herr_t H5LTget_attribute_long( hid_t loc_id, + const char *obj_name, + const char *attr_name, + long *data ); + +H5_HLDLL herr_t H5LTget_attribute_long_long( hid_t loc_id, + const char *obj_name, + const char *attr_name, + long long *data ); + +H5_HLDLL herr_t H5LTget_attribute_ulong( hid_t loc_id, + const char *obj_name, + const char *attr_name, + unsigned long *data ); + +H5_HLDLL herr_t H5LTget_attribute_float( hid_t loc_id, + const char *obj_name, + const char *attr_name, + float *data ); + +H5_HLDLL herr_t H5LTget_attribute_double( hid_t loc_id, + const char *obj_name, + const char *attr_name, + double *data ); + + +/*------------------------------------------------------------------------- + * + * Query attribute functions + * + *------------------------------------------------------------------------- + */ + + +H5_HLDLL herr_t H5LTget_attribute_ndims( hid_t loc_id, + const char *obj_name, + const char *attr_name, + int *rank ); + +H5_HLDLL herr_t H5LTget_attribute_info( hid_t loc_id, + const char *obj_name, + const char *attr_name, + hsize_t *dims, + H5T_class_t *type_class, + size_t *type_size ); + + + + + +/*------------------------------------------------------------------------- + * + * General functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL hid_t H5LTtext_to_dtype(const char *text, H5LT_lang_t lang_type); +H5_HLDLL herr_t H5LTdtype_to_text(hid_t dtype, char *str, H5LT_lang_t lang_type, size_t *len); + + +/*------------------------------------------------------------------------- + * + * Utility functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL herr_t H5LTfind_attribute( hid_t loc_id, const char *name ); + +H5_HLDLL htri_t H5LTpath_valid(hid_t loc_id, const char *path, hbool_t check_object_valid); + +/*------------------------------------------------------------------------- + * + * File image operations functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL hid_t H5LTopen_file_image(void *buf_ptr, size_t buf_size, unsigned flags); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Resources/windows-libs/HDF5/include/H5Library.h b/Resources/windows-libs/HDF5/include/H5Library.h new file mode 100644 index 0000000000000000000000000000000000000000..e5365f921e6dc7f407aa7749788f17c0f365ee31 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Library.h @@ -0,0 +1,76 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5Library_H +#define __H5Library_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define NOTATEXIT (-10) // just in case the HDF5 library use more + // negative constants. Note: the solution used for the atexit/global + // destructors is not reliable, and desperately needs improvement + // It is not even working, inifiteloop message still printed when + // calling H5close +#endif // DOXYGEN_SHOULD_SKIP_THIS + +/*! \class H5Library + \brief Class H5Library operates the HDF5 library globably. + + It is not neccessary to construct an instance of H5Library to use the + methods. +*/ +class H5_DLLCPP H5Library { + public: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + static bool need_cleanup; // indicates if H5close should be called +#endif // DOXYGEN_SHOULD_SKIP_THIS + + // Initializes the HDF5 library. + static void open(); + + // Flushes all data to disk, closes files, and cleans up memory. + static void close(); + + // Instructs library not to install atexit cleanup routine + static void dontAtExit(); + + // Returns the HDF library release number. + static void getLibVersion( unsigned& majnum, unsigned& minnum, unsigned& relnum ); + + // Verifies that the arguments match the version numbers compiled + // into the library + static void checkVersion( unsigned majnum, unsigned minnum, unsigned relnum ); + + // Walks through all the garbage collection routines for the library, + // which are supposed to free any unused memory they have allocated. + static void garbageCollect(); + + // Sets limits on the different kinds of free lists. + static void setFreeListLimits(int reg_global_lim, int reg_list_lim, int + arr_global_lim, int arr_list_lim, int blk_global_lim, int blk_list_lim); + + private: + // Default constructor - no instance ever created + H5Library() {}; + +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5Library_H diff --git a/Resources/windows-libs/HDF5/include/H5Location.h b/Resources/windows-libs/HDF5/include/H5Location.h new file mode 100644 index 0000000000000000000000000000000000000000..592f68d2317d1be5d681542de062c68c691c837f --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Location.h @@ -0,0 +1,171 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5Location_H +#define __H5Location_H + +#include "H5Classes.h" // constains forward class declarations + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +class H5_DLLCPP H5Location; // forward declaration for UserData4Aiterate + +// Define the operator function pointer for H5Aiterate(). +typedef void (*attr_operator_t)( H5Location& loc/*in*/, + const H5std_string attr_name/*in*/, + void *operator_data/*in,out*/); + +class UserData4Aiterate { // user data for attribute iteration + public: + attr_operator_t op; + void* opData; + H5Location* location; +}; + +/*! \class H5Location + \brief H5Location is an abstract base class, added in version 1.8.12. + + It provides a collection of wrappers for the C functions that take a + location identifier to specify the HDF5 object. The location identifier + can be either file, group, dataset, or named datatype. +*/ +// Most of these methods were in H5Object but are now moved here because +// a location can be a file, group, dataset, or named datatype. -BMR, 2013-10-1 +class H5_DLLCPP H5Location : public IdComponent { + public: + // Creates an attribute for the specified object at this location + // PropList is currently not used, so always be default. + Attribute createAttribute( const char* name, const DataType& type, const DataSpace& space, const PropList& create_plist = PropList::DEFAULT ) const; + Attribute createAttribute( const H5std_string& name, const DataType& type, const DataSpace& space, const PropList& create_plist = PropList::DEFAULT ) const; + + // Given its name, opens the attribute that belongs to an object at + // this location. + Attribute openAttribute( const char* name ) const; + Attribute openAttribute( const H5std_string& name ) const; + + // Given its index, opens the attribute that belongs to an object at + // this location. + Attribute openAttribute( const unsigned int idx ) const; + + // Flushes all buffers associated with this location to disk. + void flush( H5F_scope_t scope ) const; + + // Gets the name of the file, specified by this location. + H5std_string getFileName() const; + + // Determines the number of attributes at this location. + int getNumAttrs() const; + +#ifndef H5_NO_DEPRECATED_SYMBOLS + // Retrieves the type of object that an object reference points to. + H5G_obj_t getObjType(void *ref, H5R_type_t ref_type = H5R_OBJECT) const; +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + + // Retrieves the type of object that an object reference points to. + H5O_type_t getRefObjType(void *ref, H5R_type_t ref_type = H5R_OBJECT) const; + // Note: getRefObjType deprecates getObjType, but getObjType's name is + // misleading, so getRefObjType is used in the new function instead. + + // Iterate user's function over the attributes at this location. + int iterateAttrs(attr_operator_t user_op, unsigned* idx = NULL, void* op_data = NULL); + + // Checks whether the named attribute exists at this location. + bool attrExists(const char* name) const; + bool attrExists(const H5std_string& name) const; + + // Renames the named attribute to a new name. + void renameAttr(const char* oldname, const char* newname) const; + void renameAttr(const H5std_string& oldname, const H5std_string& newname) const; + + // Removes the named attribute from this location. + void removeAttr(const char* name) const; + void removeAttr(const H5std_string& name) const; + + // Sets the comment for an HDF5 object specified by its name. + void setComment(const char* name, const char* comment) const; + void setComment(const H5std_string& name, const H5std_string& comment) const; + void setComment(const char* comment) const; + void setComment(const H5std_string& comment) const; + + // Retrieves comment for the HDF5 object specified by its name. + ssize_t getComment(const char* name, size_t buf_size, char* comment) const; + H5std_string getComment(const char* name, size_t buf_size=0) const; + H5std_string getComment(const H5std_string& name, size_t buf_size=0) const; + + // Removes the comment for the HDF5 object specified by its name. + void removeComment(const char* name) const; + void removeComment(const H5std_string& name) const; + + // Creates a reference to a named object or to a dataset region + // in this object. + void reference(void* ref, const char* name, + H5R_type_t ref_type = H5R_OBJECT) const; + void reference(void* ref, const H5std_string& name, + H5R_type_t ref_type = H5R_OBJECT) const; + void reference(void* ref, const char* name, const DataSpace& dataspace, + H5R_type_t ref_type = H5R_DATASET_REGION) const; + void reference(void* ref, const H5std_string& name, const DataSpace& dataspace, + H5R_type_t ref_type = H5R_DATASET_REGION) const; + + // Open a referenced object whose location is specified by either + // a file, an HDF5 object, or an attribute. + void dereference(const H5Location& loc, const void* ref, H5R_type_t ref_type = H5R_OBJECT); + void dereference(const Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT); + + // Retrieves a dataspace with the region pointed to selected. + DataSpace getRegion(void *ref, H5R_type_t ref_type = H5R_DATASET_REGION) const; + + ///\brief Returns an identifier. (pure virtual) + virtual hid_t getId() const = 0; + + protected: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Default constructor, + H5Location(); + + // Creates a copy of an existing object giving the location id. + H5Location(const hid_t loc_id); + + // Copy constructor. + H5Location(const H5Location& original); + + // Creates a reference to an HDF5 object or a dataset region. + void p_reference(void* ref, const char* name, hid_t space_id, H5R_type_t ref_type) const; + + // Dereferences a ref into an HDF5 id. + hid_t p_dereference(hid_t loc_id, const void* ref, H5R_type_t ref_type, const char* from_func); + +#ifndef H5_NO_DEPRECATED_SYMBOLS + // Retrieves the type of object that an object reference points to. + H5G_obj_t p_get_obj_type(void *ref, H5R_type_t ref_type) const; +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + + // Retrieves the type of object that an object reference points to. + H5O_type_t p_get_ref_obj_type(void *ref, H5R_type_t ref_type) const; + +#endif // DOXYGEN_SHOULD_SKIP_THIS + + // Noop destructor. + virtual ~H5Location(); + +}; /* end class H5Location */ + +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5Location_H diff --git a/Resources/windows-libs/HDF5/include/H5Lpkg.h b/Resources/windows-libs/HDF5/include/H5Lpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..2e931f527864f9d693e08ec869a68739a1cea5a3 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Lpkg.h @@ -0,0 +1,64 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: James Laird <matzke@llnl.gov> + * Friday, December 1, 2005 + * + * Purpose: This file contains declarations which are visible + * only within the H5L package. Source files outside the + * H5L package should include H5Lprivate.h instead. + */ +#ifndef H5L_PACKAGE +#error "Do not include this file outside the H5L package!" +#endif + +#ifndef _H5Lpkg_H +#define _H5Lpkg_H + +/* Get package's private header */ +#include "H5Lprivate.h" + +/* Other private headers needed by this file */ + + +/**************************/ +/* Package Private Macros */ +/**************************/ + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +H5_DLL herr_t H5L_create_ud(const H5G_loc_t *link_loc, const char *link_name, + const void * ud_data, size_t ud_data_size, H5L_type_t type, + hid_t lcpl_id, hid_t lapl_id, hid_t dxpl_id); +H5_DLL herr_t H5L_link_copy_file(H5F_t *dst_file, hid_t dxpl_id, + const H5O_link_t *_src_lnk, const H5O_loc_t *src_oloc, H5O_link_t *dst_lnk, + H5O_copy_t *cpy_info); + +#endif /* _H5Lpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Lpublic.h b/Resources/windows-libs/HDF5/include/H5Lpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..620d2e9b00cd40ee07a09c729eaf3b379ee00929 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Lpublic.h @@ -0,0 +1,202 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5Lpublic.h + * Dec 1 2005 + * James Laird + * + * Purpose: Public declarations for the H5L package (links) + * + *------------------------------------------------------------------------- + */ +#ifndef _H5Lpublic_H +#define _H5Lpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" /* Generic Functions */ +#include "H5Ipublic.h" /* IDs */ +#include "H5Tpublic.h" /* Datatypes */ + +/*****************/ +/* Public Macros */ +/*****************/ + +/* Maximum length of a link's name */ +/* (encoded in a 32-bit unsigned integer) */ +#define H5L_MAX_LINK_NAME_LEN ((uint32_t)(-1)) /* (4GB - 1) */ + +/* Macro to indicate operation occurs on same location */ +#define H5L_SAME_LOC 0 + +/* Current version of the H5L_class_t struct */ +#define H5L_LINK_CLASS_T_VERS 0 + +#ifdef __cplusplus +extern "C" { +#endif + +/*******************/ +/* Public Typedefs */ +/*******************/ + +/* Link class types. + * Values less than 64 are reserved for the HDF5 library's internal use. + * Values 64 to 255 are for "user-defined" link class types; these types are + * defined by HDF5 but their behavior can be overridden by users. + * Users who want to create new classes of links should contact the HDF5 + * development team at hdfhelp@ncsa.uiuc.edu . + * These values can never change because they appear in HDF5 files. + */ +typedef enum { + H5L_TYPE_ERROR = (-1), /* Invalid link type id */ + H5L_TYPE_HARD = 0, /* Hard link id */ + H5L_TYPE_SOFT = 1, /* Soft link id */ + H5L_TYPE_EXTERNAL = 64, /* External link id */ + H5L_TYPE_MAX = 255 /* Maximum link type id */ +} H5L_type_t; +#define H5L_TYPE_BUILTIN_MAX H5L_TYPE_SOFT /* Maximum value link value for "built-in" link types */ +#define H5L_TYPE_UD_MIN H5L_TYPE_EXTERNAL /* Link ids at or above this value are "user-defined" link types. */ + +/* Information struct for link (for H5Lget_info/H5Lget_info_by_idx) */ +typedef struct { + H5L_type_t type; /* Type of link */ + hbool_t corder_valid; /* Indicate if creation order is valid */ + int64_t corder; /* Creation order */ + H5T_cset_t cset; /* Character set of link name */ + union { + haddr_t address; /* Address hard link points to */ + size_t val_size; /* Size of a soft link or UD link value */ + } u; +} H5L_info_t; + +/* The H5L_class_t struct can be used to override the behavior of a + * "user-defined" link class. Users should populate the struct with callback + * functions defined below. + */ +/* Callback prototypes for user-defined links */ +/* Link creation callback */ +typedef herr_t (*H5L_create_func_t)(const char *link_name, hid_t loc_group, + const void *lnkdata, size_t lnkdata_size, hid_t lcpl_id); + +/* Callback for when the link is moved */ +typedef herr_t (*H5L_move_func_t)(const char *new_name, hid_t new_loc, + const void *lnkdata, size_t lnkdata_size); + +/* Callback for when the link is copied */ +typedef herr_t (*H5L_copy_func_t)(const char *new_name, hid_t new_loc, + const void *lnkdata, size_t lnkdata_size); + +/* Callback during link traversal */ +typedef herr_t (*H5L_traverse_func_t)(const char *link_name, hid_t cur_group, + const void *lnkdata, size_t lnkdata_size, hid_t lapl_id); + +/* Callback for when the link is deleted */ +typedef herr_t (*H5L_delete_func_t)(const char *link_name, hid_t file, + const void *lnkdata, size_t lnkdata_size); + +/* Callback for querying the link */ +/* Returns the size of the buffer needed */ +typedef ssize_t (*H5L_query_func_t)(const char *link_name, const void *lnkdata, + size_t lnkdata_size, void *buf /*out*/, size_t buf_size); + +/* User-defined link types */ +typedef struct { + int version; /* Version number of this struct */ + H5L_type_t id; /* Link type ID */ + const char *comment; /* Comment for debugging */ + H5L_create_func_t create_func; /* Callback during link creation */ + H5L_move_func_t move_func; /* Callback after moving link */ + H5L_copy_func_t copy_func; /* Callback after copying link */ + H5L_traverse_func_t trav_func; /* Callback during link traversal */ + H5L_delete_func_t del_func; /* Callback for link deletion */ + H5L_query_func_t query_func; /* Callback for queries */ +} H5L_class_t; + +/* Prototype for H5Literate/H5Literate_by_name() operator */ +typedef herr_t (*H5L_iterate_t)(hid_t group, const char *name, const H5L_info_t *info, + void *op_data); + +/* Callback for external link traversal */ +typedef herr_t (*H5L_elink_traverse_t)(const char *parent_file_name, + const char *parent_group_name, const char *child_file_name, + const char *child_object_name, unsigned *acc_flags, hid_t fapl_id, + void *op_data); + + +/********************/ +/* Public Variables */ +/********************/ + + +/*********************/ +/* Public Prototypes */ +/*********************/ +H5_DLL herr_t H5Lmove(hid_t src_loc, const char *src_name, hid_t dst_loc, + const char *dst_name, hid_t lcpl_id, hid_t lapl_id); +H5_DLL herr_t H5Lcopy(hid_t src_loc, const char *src_name, hid_t dst_loc, + const char *dst_name, hid_t lcpl_id, hid_t lapl_id); +H5_DLL herr_t H5Lcreate_hard(hid_t cur_loc, const char *cur_name, + hid_t dst_loc, const char *dst_name, hid_t lcpl_id, hid_t lapl_id); +H5_DLL herr_t H5Lcreate_soft(const char *link_target, hid_t link_loc_id, + const char *link_name, hid_t lcpl_id, hid_t lapl_id); +H5_DLL herr_t H5Ldelete(hid_t loc_id, const char *name, hid_t lapl_id); +H5_DLL herr_t H5Ldelete_by_idx(hid_t loc_id, const char *group_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id); +H5_DLL herr_t H5Lget_val(hid_t loc_id, const char *name, void *buf/*out*/, + size_t size, hid_t lapl_id); +H5_DLL herr_t H5Lget_val_by_idx(hid_t loc_id, const char *group_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, + void *buf/*out*/, size_t size, hid_t lapl_id); +H5_DLL htri_t H5Lexists(hid_t loc_id, const char *name, hid_t lapl_id); +H5_DLL herr_t H5Lget_info(hid_t loc_id, const char *name, + H5L_info_t *linfo /*out*/, hid_t lapl_id); +H5_DLL herr_t H5Lget_info_by_idx(hid_t loc_id, const char *group_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, + H5L_info_t *linfo /*out*/, hid_t lapl_id); +H5_DLL ssize_t H5Lget_name_by_idx(hid_t loc_id, const char *group_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, + char *name /*out*/, size_t size, hid_t lapl_id); +H5_DLL herr_t H5Literate(hid_t grp_id, H5_index_t idx_type, + H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data); +H5_DLL herr_t H5Literate_by_name(hid_t loc_id, const char *group_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, + H5L_iterate_t op, void *op_data, hid_t lapl_id); +H5_DLL herr_t H5Lvisit(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, + H5L_iterate_t op, void *op_data); +H5_DLL herr_t H5Lvisit_by_name(hid_t loc_id, const char *group_name, + H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, + void *op_data, hid_t lapl_id); + +/* UD link functions */ +H5_DLL herr_t H5Lcreate_ud(hid_t link_loc_id, const char *link_name, + H5L_type_t link_type, const void *udata, size_t udata_size, hid_t lcpl_id, + hid_t lapl_id); +H5_DLL herr_t H5Lregister(const H5L_class_t *cls); +H5_DLL herr_t H5Lunregister(H5L_type_t id); +H5_DLL htri_t H5Lis_registered(H5L_type_t id); + +/* External link functions */ +H5_DLL herr_t H5Lunpack_elink_val(const void *ext_linkval/*in*/, size_t link_size, + unsigned *flags, const char **filename/*out*/, const char **obj_path /*out*/); +H5_DLL herr_t H5Lcreate_external(const char *file_name, const char *obj_name, + hid_t link_loc_id, const char *link_name, hid_t lcpl_id, hid_t lapl_id); + +#ifdef __cplusplus +} +#endif +#endif /* _H5Lpublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5MMpublic.h b/Resources/windows-libs/HDF5/include/H5MMpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..bfcb8073bbc0755b7e9dd557bd76b35bc5d0cf24 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5MMpublic.h @@ -0,0 +1,47 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5MMproto.h + * Jul 10 1997 + * Robb Matzke <matzke@llnl.gov> + * + * Purpose: Public declarations for the H5MM (memory management) + * package. + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifndef _H5MMpublic_H +#define _H5MMpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +/* These typedefs are currently used for VL datatype allocation/freeing */ +typedef void *(*H5MM_allocate_t)(size_t size, void *alloc_info); +typedef void (*H5MM_free_t)(void *mem, void *free_info); + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif /* _H5MMpublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5MPpkg.h b/Resources/windows-libs/HDF5/include/H5MPpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..5a0b1f86e1b716d35c011774f561864dffabbb43 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5MPpkg.h @@ -0,0 +1,106 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Monday, May 2, 2005 + * + * Purpose: This file contains declarations which are visible only within + * the H5MP package. Source files outside the H5MP package should + * include H5MPprivate.h instead. + */ +#ifndef H5MP_PACKAGE +#error "Do not include this file outside the H5MP package!" +#endif + +#ifndef _H5MPpkg_H +#define _H5MPpkg_H + +/* Get package's private header */ +#include "H5MPprivate.h" /* Memory Pools */ + +/* Other private headers needed by this file */ +#include "H5FLprivate.h" /* Free Lists */ + +/**************************/ +/* Package Private Macros */ +/**************************/ + +/* Alignment macros */ +/* (Ideas from Apache APR :-) */ + +/* Default alignment necessary */ +#define H5MP_BLOCK_ALIGNMENT 8 + +/* General alignment macro */ +/* (this only works for aligning to power of 2 boundary) */ +#define H5MP_ALIGN(x, a) \ + (((x) + ((size_t)(a)) - 1) & ~(((size_t)(a)) - 1)) + +/* Default alignment */ +#define H5MP_BLOCK_ALIGN(x) H5MP_ALIGN(x, H5MP_BLOCK_ALIGNMENT) + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +/* Free block in pool */ +typedef struct H5MP_page_blk_t { + size_t size; /* Size of block (includes this H5MP_page_blk_t info) */ + unsigned is_free:1; /* Flag to indicate the block is free */ + struct H5MP_page_t *page; /* Pointer to page block is located in */ + struct H5MP_page_blk_t *prev; /* Pointer to previous block in page */ + struct H5MP_page_blk_t *next; /* Pointer to next block in page */ +} H5MP_page_blk_t; + +/* Memory pool page */ +typedef struct H5MP_page_t { + size_t free_size; /* Total amount of free space in page */ + unsigned fac_alloc:1; /* Flag to indicate the page was allocated by the pool's factory */ + H5MP_page_blk_t *free_blk; /* Pointer to first free block in page */ + struct H5MP_page_t *next; /* Pointer to next page in pool */ + struct H5MP_page_t *prev; /* Pointer to previous page in pool */ +} H5MP_page_t; + +/* Memory pool header */ +struct H5MP_pool_t { + H5FL_fac_head_t *page_fac; /* Free-list factory for pages */ + size_t page_size; /* Page size for pool */ + size_t free_size; /* Total amount of free space in pool */ + size_t max_size; /* Maximum block that will fit in a standard page */ + H5MP_page_t *first; /* Pointer to first page in pool */ + unsigned flags; /* Bit flags for pool settings */ +}; + + +/*****************************************/ +/* Package Private Variable Declarations */ +/*****************************************/ + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ +#ifdef H5MP_TESTING +H5_DLL herr_t H5MP_get_pool_free_size (const H5MP_pool_t *mp, size_t *free_size); +H5_DLL htri_t H5MP_pool_is_free_size_correct(const H5MP_pool_t *mp); +H5_DLL herr_t H5MP_get_pool_first_page(const H5MP_pool_t *mp, H5MP_page_t **page); +H5_DLL herr_t H5MP_get_page_free_size(const H5MP_page_t *mp, size_t *page); +H5_DLL herr_t H5MP_get_page_next_page(const H5MP_page_t *page, H5MP_page_t **next_page); +#endif /* H5MP_TESTING */ + +#endif /* _H5MPpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Object.h b/Resources/windows-libs/HDF5/include/H5Object.h new file mode 100644 index 0000000000000000000000000000000000000000..5576d13fc2ffc08ee9efca897c295f73034ab50d --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Object.h @@ -0,0 +1,76 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5Object_H +#define __H5Object_H + +#include "H5Location.h" +#include "H5Classes.h" // constains forward class declarations + +// H5Object is a baseclass. It has these subclasses: +// Group, DataSet, and DataType. +// DataType, in turn, has several specific datatypes as subclasses. +// Modification: +// Sept 18, 2012: Added class H5Location in between IdComponent and +// H5Object. An H5File now inherits from H5Location. All HDF5 +// wrappers in H5Object are moved up to H5Location. H5Object +// is left mostly empty for future wrappers that are only for +// group, dataset, and named datatype. Note that the reason for +// adding H5Location instead of simply moving H5File to be under +// H5Object is H5File is not an HDF5 object, and renaming H5Object +// to H5Location will risk breaking user applications. +// -BMR +// Apr 2, 2014: Added wrapper getObjName for H5Iget_name +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/*! \class H5Object + \brief Class H5Object is a bridge between H5Location and DataSet, DataType, + and Group. + + All the wrappers in H5Object were moved to H5Location. +*/ +class H5_DLLCPP H5Object : public H5Location { + public: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Copy constructor: makes copy of an H5Object object. + H5Object(const H5Object& original); + + // Gets the name of this HDF5 object, i.e., Group, DataSet, or + // DataType. + ssize_t getObjName(char *obj_name, size_t buf_size = 0) const; + ssize_t getObjName(H5std_string& obj_name, size_t len = 0) const; + H5std_string getObjName() const; + + // Noop destructor. + virtual ~H5Object(); + + protected: + // Default constructor + H5Object(); + + // Creates a copy of an existing object giving the object id + H5Object( const hid_t object_id ); + +#endif // DOXYGEN_SHOULD_SKIP_THIS + +}; /* end class H5Object */ + +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5Object_H diff --git a/Resources/windows-libs/HDF5/include/H5Opkg.h b/Resources/windows-libs/HDF5/include/H5Opkg.h new file mode 100644 index 0000000000000000000000000000000000000000..ff525376ce472f41f0171854fb0cd11862006cd2 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Opkg.h @@ -0,0 +1,626 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef H5O_PACKAGE +#error "Do not include this file outside the H5O package!" +#endif + +#ifndef _H5Opkg_H +#define _H5Opkg_H + +/* Get package's private header */ +#include "H5Oprivate.h" /* Object headers */ + +/* Other private headers needed by this file */ +#include "H5ACprivate.h" /* Metadata cache */ +#include "H5FLprivate.h" /* Free Lists */ + +/* Object header macros */ +#define H5O_NMESGS 8 /*initial number of messages */ +#define H5O_NCHUNKS 2 /*initial number of chunks */ +#define H5O_MIN_SIZE 22 /* Min. obj header data size (must be big enough for a message prefix and a continuation message) */ +#define H5O_MSG_TYPES 24 /* # of types of messages */ +#define H5O_MAX_CRT_ORDER_IDX 65535 /* Max. creation order index value */ + +/* Versions of object header structure */ + +/* Initial version of the object header format */ +#define H5O_VERSION_1 1 + +/* Revised version - leaves out reserved bytes and alignment padding, and adds + * magic number as prefix and checksum as suffix for all chunks. + */ +#define H5O_VERSION_2 2 + +/* The latest version of the format. Look through the 'flush' + * and 'size' callback for places to change when updating this. */ +#define H5O_VERSION_LATEST H5O_VERSION_2 + +/* + * Align messages on 8-byte boundaries because we would like to copy the + * object header chunks directly into memory and operate on them there, even + * on 64-bit architectures. This allows us to reduce the number of disk I/O + * requests with a minimum amount of mem-to-mem copies. + * + * Note: We no longer attempt to do this. - QAK, 10/16/06 + */ +#define H5O_ALIGN_OLD(X) (8 * (((X) + 7) / 8)) +#define H5O_ALIGN_VERS(V, X) \ + (((V) == H5O_VERSION_1) ? \ + H5O_ALIGN_OLD(X) \ + : \ + (X) \ + ) +#define H5O_ALIGN_OH(O, X) \ + H5O_ALIGN_VERS((O)->version, X) +#define H5O_ALIGN_F(F, X) \ + H5O_ALIGN_VERS((H5F_USE_LATEST_FORMAT(F) ? H5O_VERSION_LATEST : H5O_VERSION_1), X) + +/* Size of checksum (on disk) */ +#define H5O_SIZEOF_CHKSUM 4 + +/* ========= Object Creation properties ============ */ +/* Default values for some of the object creation properties */ +/* NOTE: The H5O_CRT_ATTR_MAX_COMPACT_DEF & H5O_CRT_ATTR_MIN_DENSE_DEF values + * are "built into" the file format, make certain existing files with + * default attribute phase change storage are handled correctly if they + * are changed. + */ +#define H5O_CRT_ATTR_MAX_COMPACT_DEF 8 +#define H5O_CRT_ATTR_MIN_DENSE_DEF 6 +#define H5O_CRT_OHDR_FLAGS_DEF H5O_HDR_STORE_TIMES + +/* Object header status flag definitions */ +#define H5O_HDR_CHUNK0_1 0x00 /* Use 1-byte value for chunk #0 size */ +#define H5O_HDR_CHUNK0_2 0x01 /* Use 2-byte value for chunk #0 size */ +#define H5O_HDR_CHUNK0_4 0x02 /* Use 4-byte value for chunk #0 size */ +#define H5O_HDR_CHUNK0_8 0x03 /* Use 8-byte value for chunk #0 size */ + +/* + * Size of object header prefix. + */ +#define H5O_SIZEOF_HDR(O) \ + (((O)->version == H5O_VERSION_1) \ + ? \ + H5O_ALIGN_OLD(1 + /*version number */ \ + 1 + /*reserved */ \ + 2 + /*number of messages */ \ + 4 + /*reference count */ \ + 4) /*chunk data size */ \ + : \ + (H5_SIZEOF_MAGIC + /*magic number */ \ + 1 + /*version number */ \ + 1 + /*flags */ \ + (((O)->flags & H5O_HDR_STORE_TIMES) ? ( \ + 4 + /*access time */ \ + 4 + /*modification time */ \ + 4 + /*change time */ \ + 4 /*birth time */ \ + ) : 0) + \ + (((O)->flags & H5O_HDR_ATTR_STORE_PHASE_CHANGE) ? ( \ + 2 + /*max compact attributes */ \ + 2 /*min dense attributes */ \ + ) : 0) + \ + (1 << ((O)->flags & H5O_HDR_CHUNK0_SIZE)) + /*chunk 0 data size */ \ + H5O_SIZEOF_CHKSUM) /*checksum size */ \ + ) + +/* + * Size of object header message prefix + */ +#define H5O_SIZEOF_MSGHDR_VERS(V,C) \ + (((V) == H5O_VERSION_1) \ + ? \ + H5O_ALIGN_OLD(2 + /*message type */ \ + 2 + /*sizeof message data */ \ + 1 + /*flags */ \ + 3) /*reserved */ \ + : \ + (1 + /*message type */ \ + 2 + /*sizeof message data */ \ + 1 + /*flags */ \ + ((C) ? ( \ + 2 /*creation index */ \ + ) : 0)) \ + ) +#define H5O_SIZEOF_MSGHDR_OH(O) \ + H5O_SIZEOF_MSGHDR_VERS((O)->version, (O)->flags & H5O_HDR_ATTR_CRT_ORDER_TRACKED) +#define H5O_SIZEOF_MSGHDR_F(F, C) \ + H5O_SIZEOF_MSGHDR_VERS((H5F_USE_LATEST_FORMAT(F) || H5F_STORE_MSG_CRT_IDX(F)) ? H5O_VERSION_LATEST : H5O_VERSION_1, (C)) + +/* + * Size of chunk "header" for each chunk + */ +#define H5O_SIZEOF_CHKHDR_VERS(V) \ + (((V) == H5O_VERSION_1) \ + ? \ + 0 + /*no magic # */ \ + 0 /*no checksum */ \ + : \ + H5_SIZEOF_MAGIC + /*magic # */ \ + H5O_SIZEOF_CHKSUM /*checksum */ \ + ) +#define H5O_SIZEOF_CHKHDR_OH(O) \ + H5O_SIZEOF_CHKHDR_VERS((O)->version) + +/* + * Size of checksum for each chunk + */ +#define H5O_SIZEOF_CHKSUM_VERS(V) \ + (((V) == H5O_VERSION_1) \ + ? \ + 0 /*no checksum */ \ + : \ + H5O_SIZEOF_CHKSUM /*checksum */ \ + ) +#define H5O_SIZEOF_CHKSUM_OH(O) \ + H5O_SIZEOF_CHKSUM_VERS((O)->version) + +/* Input/output flags for decode functions */ +#define H5O_DECODEIO_NOCHANGE 0x01u /* IN: do not modify values */ +#define H5O_DECODEIO_DIRTY 0x02u /* OUT: message has been changed */ + +/* Macro to incremend ndecode_dirtied (only if we are debugging) */ +#ifndef NDEBUG +#define INCR_NDECODE_DIRTIED(OH) (OH)->ndecode_dirtied++; +#else /* NDEBUG */ +#define INCR_NDECODE_DIRTIED(OH) ; +#endif /* NDEBUG */ + +/* Load native information for a message, if it's not already present */ +/* (Only works for messages with decode callback) */ +#define H5O_LOAD_NATIVE(F, DXPL, IOF, OH, MSG, ERR) \ + if(NULL == (MSG)->native) { \ + const H5O_msg_class_t *msg_type = (MSG)->type; \ + unsigned ioflags = (IOF); \ + \ + /* Decode the message */ \ + HDassert(msg_type->decode); \ + if(NULL == ((MSG)->native = (msg_type->decode)((F), (DXPL), (OH), (MSG)->flags, &ioflags, (MSG)->raw))) \ + HGOTO_ERROR(H5E_OHDR, H5E_CANTDECODE, ERR, "unable to decode message") \ + \ + /* Mark the message dirty if it was changed by decoding */ \ + if((ioflags & H5O_DECODEIO_DIRTY) && (H5F_get_intent((F)) & H5F_ACC_RDWR)) { \ + (MSG)->dirty = TRUE; \ + /* Increment the count of messages dirtied by decoding, but */ \ + /* only ifndef NDEBUG */ \ + INCR_NDECODE_DIRTIED(OH) \ + } \ + \ + /* Set the message's "shared info", if it's shareable */ \ + if((MSG)->flags & H5O_MSG_FLAG_SHAREABLE) { \ + H5O_UPDATE_SHARED((H5O_shared_t *)(MSG)->native, H5O_SHARE_TYPE_HERE, (F), msg_type->id, (MSG)->crt_idx, (OH)->chunk[0].addr) \ + } /* end if */ \ + \ + /* Set the message's "creation index", if it has one */ \ + if(msg_type->set_crt_index) { \ + /* Set the creation index for the message */ \ + if((msg_type->set_crt_index)((MSG)->native, (MSG)->crt_idx) < 0) \ + HGOTO_ERROR(H5E_OHDR, H5E_CANTSET, ERR, "unable to set creation index") \ + } /* end if */ \ + } /* end if */ + +/* Flags for a message class's "sharability" */ +#define H5O_SHARE_IS_SHARABLE 0x01 +#define H5O_SHARE_IN_OHDR 0x02 + + +/* The "message class" type */ +struct H5O_msg_class_t { + unsigned id; /*message type ID on disk */ + const char *name; /*for debugging */ + size_t native_size; /*size of native message */ + unsigned share_flags; /* Message sharing settings */ + void *(*decode)(H5F_t *, hid_t, H5O_t *, unsigned, unsigned *, const uint8_t *); + herr_t (*encode)(H5F_t *, hbool_t, uint8_t *, const void *); + void *(*copy)(const void *, void *); /*copy native value */ + size_t (*raw_size)(const H5F_t *, hbool_t, const void *);/*sizeof encoded message */ + herr_t (*reset)(void *); /*free nested data structs */ + herr_t (*free)(void *); /*free main data struct */ + herr_t (*del)(H5F_t *, hid_t, H5O_t *, void *); /* Delete space in file referenced by this message */ + herr_t (*link)(H5F_t *, hid_t, H5O_t *, void *); /* Increment any links in file reference by this message */ + herr_t (*set_share)(void*, const H5O_shared_t*); /* Set shared information */ + htri_t (*can_share)(const void *); /* Is message allowed to be shared? */ + herr_t (*pre_copy_file)(H5F_t *, const void *, hbool_t *, const H5O_copy_t *, void *); /*"pre copy" action when copying native value to file */ + void *(*copy_file)(H5F_t *, void *, H5F_t *, hbool_t *, unsigned *, H5O_copy_t *, void *, hid_t); /*copy native value to file */ + herr_t (*post_copy_file)(const H5O_loc_t *, const void *, H5O_loc_t *, void *, unsigned *, hid_t, H5O_copy_t *); /*"post copy" action when copying native value to file */ + herr_t (*get_crt_index)(const void *, H5O_msg_crt_idx_t *); /* Get message's creation index */ + herr_t (*set_crt_index)(void *, H5O_msg_crt_idx_t); /* Set message's creation index */ + herr_t (*debug)(H5F_t*, hid_t, const void*, FILE*, int, int); +}; + +struct H5O_mesg_t { + const H5O_msg_class_t *type; /*type of message */ + hbool_t dirty; /*raw out of date wrt native */ + hbool_t locked; /*message is locked into chunk */ + uint8_t flags; /*message flags */ + H5O_msg_crt_idx_t crt_idx; /*message creation index */ + unsigned chunkno; /*chunk number for this mesg */ + void *native; /*native format message */ + uint8_t *raw; /*ptr to raw data */ + size_t raw_size; /*size with alignment */ +}; + +typedef struct H5O_chunk_t { + haddr_t addr; /*chunk file address */ + size_t size; /*chunk size */ + size_t gap; /*space at end of chunk too small for null message */ + uint8_t *image; /*image of file */ +} H5O_chunk_t; + +struct H5O_t { + H5AC_info_t cache_info; /* Information for metadata cache functions, _must_ be */ + /* first field in structure */ + + /* File-specific information (not stored) */ + size_t sizeof_size; /* Size of file sizes */ + size_t sizeof_addr; /* Size of file addresses */ + + /* Debugging information (not stored) */ +#ifdef H5O_ENABLE_BAD_MESG_COUNT + hbool_t store_bad_mesg_count; /* Flag to indicate that a bad message count should be stored */ + /* (This is to simulate a bug in earlier + * versions of the library) + */ +#endif /* H5O_ENABLE_BAD_MESG_COUNT */ +#ifndef NDEBUG + size_t ndecode_dirtied; /* Number of messages dirtied by decoding */ +#endif /* NDEBUG */ + + /* Chunk management information (not stored) */ + size_t rc; /* Reference count of [continuation] chunks using this structure */ + size_t chunk0_size; /* Size of serialized first chunk */ + hbool_t mesgs_modified; /* Whether any messages were modified when the object header was deserialized */ + hbool_t prefix_modified; /* Whether prefix was modified when the object header was deserialized */ + + /* Object information (stored) */ + hbool_t has_refcount_msg; /* Whether the object has a ref. count message */ + unsigned nlink; /*link count */ + uint8_t version; /*version number */ + uint8_t flags; /*flags */ + + /* Time information (stored, for versions > 1 & H5O_HDR_STORE_TIMES flag set) */ + time_t atime; /*access time */ + time_t mtime; /*modification time */ + time_t ctime; /*change time */ + time_t btime; /*birth time */ + + /* Attribute information (stored, for versions > 1) */ + unsigned max_compact; /* Maximum # of compact attributes */ + unsigned min_dense; /* Minimum # of "dense" attributes */ + + /* Message management (stored, encoded in chunks) */ + size_t nmesgs; /*number of messages */ + size_t alloc_nmesgs; /*number of message slots */ + H5O_mesg_t *mesg; /*array of messages */ + size_t link_msgs_seen; /* # of link messages seen when loading header */ + size_t attr_msgs_seen; /* # of attribute messages seen when loading header */ + + /* Chunk management (not stored) */ + size_t nchunks; /*number of chunks */ + size_t alloc_nchunks; /*chunks allocated */ + H5O_chunk_t *chunk; /*array of chunks */ +}; + +/* Class for types of objects in file */ +typedef struct H5O_obj_class_t { + H5O_type_t type; /*object type on disk */ + const char *name; /*for debugging */ + void *(*get_copy_file_udata)(void); /*retrieve user data for 'copy file' operation */ + void (*free_copy_file_udata)(void *); /*free user data for 'copy file' operation */ + htri_t (*isa)(H5O_t *); /*if a header matches an object class */ + hid_t (*open)(const H5G_loc_t *, hid_t, hid_t, hbool_t ); /*open an object of this class */ + void *(*create)(H5F_t *, void *, H5G_loc_t *, hid_t ); /*create an object of this class */ + H5O_loc_t *(*get_oloc)(hid_t ); /*get the object header location for an object */ + herr_t (*bh_info)(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5_ih_info_t *bh_info); /*get the index & heap info for an object */ + herr_t (*flush)(H5G_loc_t *loc, hid_t dxpl_id); /*flush an opened object of this class */ +} H5O_obj_class_t; + +/* Node in skip list to map addresses from one file to another during object header copy */ +typedef struct H5O_addr_map_t { + H5_obj_t src_obj_pos; /* Location of source object */ + haddr_t dst_addr; /* Address of object in destination file */ + hbool_t is_locked; /* Indicate that the destination object is locked currently */ + hsize_t inc_ref_count; /* Number of deferred increments to reference count */ + const H5O_obj_class_t *obj_class; /* Object class */ + void *udata; /* Object class copy file udata */ +} H5O_addr_map_t; + +/* Stack of continuation messages to interpret */ +typedef struct H5O_cont_msgs_t { + size_t nmsgs; /* Number of continuation messages found so far */ + size_t alloc_nmsgs; /* Continuation messages allocated */ + H5O_cont_t *msgs; /* Array of continuation messages */ +} H5O_cont_msgs_t; + +/* Common callback information for loading object header prefix from disk */ +typedef struct H5O_common_cache_ud_t { + H5F_t *f; /* Pointer to file for object header/chunk */ + hid_t dxpl_id; /* DXPL for operation */ + unsigned file_intent; /* Read/write intent for file */ + unsigned merged_null_msgs; /* Number of null messages merged together */ + hbool_t mesgs_modified; /* Whether any messages were modified when the object header was deserialized */ + H5O_cont_msgs_t *cont_msg_info; /* Pointer to continuation messages to work on */ + haddr_t addr; /* Address of the prefix or chunk */ +} H5O_common_cache_ud_t; + +/* Callback information for loading object header prefix from disk */ +typedef struct H5O_cache_ud_t { + hbool_t made_attempt; /* Whether the deserialize routine was already attempted */ + unsigned v1_pfx_nmesgs; /* Number of messages from v1 prefix header */ + H5O_common_cache_ud_t common; /* Common object header cache callback info */ +} H5O_cache_ud_t; + +/* Structure representing each chunk in the cache */ +typedef struct H5O_chunk_proxy_t { + H5AC_info_t cache_info; /* Information for metadata cache functions, _must_ be */ + /* first field in structure */ + + H5O_t *oh; /* Object header for this chunk */ + unsigned chunkno; /* Chunk number for this chunk */ +} H5O_chunk_proxy_t; + +/* Callback information for loading object header chunk from disk */ +typedef struct H5O_chk_cache_ud_t { + hbool_t decoding; /* Whether the object header is being decoded */ + H5O_t *oh; /* Object header for this chunk */ + unsigned chunkno; /* Index of chunk being brought in (for re-loads) */ + size_t size; /* Size of chunk in the file */ + H5O_common_cache_ud_t common; /* Common object header cache callback info */ +} H5O_chk_cache_ud_t; + + +/* H5O object header inherits cache-like properties from H5AC */ +H5_DLLVAR const H5AC_class_t H5AC_OHDR[1]; + +/* H5O object header chunk inherits cache-like properties from H5AC */ +H5_DLLVAR const H5AC_class_t H5AC_OHDR_CHK[1]; + +/* Header message ID to class mapping */ +H5_DLLVAR const H5O_msg_class_t *const H5O_msg_class_g[H5O_MSG_TYPES]; + +/* Declare external the free list for H5O_t's */ +H5FL_EXTERN(H5O_t); + +/* Declare external the free list for H5O_mesg_t sequences */ +H5FL_SEQ_EXTERN(H5O_mesg_t); + +/* Declare external the free list for H5O_chunk_t sequences */ +H5FL_SEQ_EXTERN(H5O_chunk_t); + +/* Declare external the free list for chunk_image blocks */ +H5FL_BLK_EXTERN(chunk_image); + +/* + * Object header messages + */ + +/* Null Message. (0x0000) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_NULL[1]; + +/* Simple Dataspace Message. (0x0001) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_SDSPACE[1]; + +/* Link Information Message. (0x0002) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_LINFO[1]; + +/* Datatype Message. (0x0003) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_DTYPE[1]; + +/* Old Fill Value Message. (0x0004) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_FILL[1]; + +/* New Fill Value Message. (0x0005) */ +/* + * The new fill value message is fill value plus + * space allocation time and fill value writing time and whether fill + * value is defined. + */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_FILL_NEW[1]; + +/* Link Message. (0x0006) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_LINK[1]; + +/* External File List Message. (0x0007) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_EFL[1]; + +/* Data Layout Message. (0x0008) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_LAYOUT[1]; + +#ifdef H5O_ENABLE_BOGUS +/* "Bogus" Message. (0x0009) */ +/* + * Used for debugging - should never be found in valid HDF5 file. + */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_BOGUS[1]; +#endif /* H5O_ENABLE_BOGUS */ + +/* Group Information Message. (0x000a) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_GINFO[1]; + +/* Filter pipeline message. (0x000b) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_PLINE[1]; + +/* Attribute Message. (0x000c) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_ATTR[1]; + +/* Object name message. (0x000d) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_NAME[1]; + +/* Modification Time Message. (0x000e) */ +/* + * The message is just a `time_t'. + * (See also the "new" modification time message) + */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_MTIME[1]; + +/* Shared Message information message (0x000f) + * A message for the superblock extension, holding information about + * the file-wide shared message "SOHM" table + */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_SHMESG[1]; + +/* Object Header Continuation Message. (0x0010) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_CONT[1]; + +/* Symbol Table Message. (0x0011) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_STAB[1]; + +/* New Modification Time Message. (0x0012) */ +/* + * The message is just a `time_t'. + */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_MTIME_NEW[1]; + +/* v1 B-tree 'K' value message (0x0013) + * A message for the superblock extension, holding information about + * the file-wide v1 B-tree 'K' values. + */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_BTREEK[1]; + +/* Driver info message (0x0014) + * A message for the superblock extension, holding information about + * the file driver settings + */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_DRVINFO[1]; + +/* Attribute Information Message. (0x0015) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_AINFO[1]; + +/* Reference Count Message. (0x0016) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_REFCOUNT[1]; + +/* Placeholder for unknown message. (0x0017) */ +H5_DLLVAR const H5O_msg_class_t H5O_MSG_UNKNOWN[1]; + + +/* + * Object header "object" types + */ + +/* Group Object. (H5O_TYPE_GROUP - 0) */ +H5_DLLVAR const H5O_obj_class_t H5O_OBJ_GROUP[1]; + +/* Dataset Object. (H5O_TYPE_DATASET - 1) */ +H5_DLLVAR const H5O_obj_class_t H5O_OBJ_DATASET[1]; + +/* Datatype Object. (H5O_TYPE_NAMED_DATATYPE - 2) */ +H5_DLLVAR const H5O_obj_class_t H5O_OBJ_DATATYPE[1]; + + +/* Package-local function prototypes */ +H5_DLL herr_t H5O_msg_flush(H5F_t *f, H5O_t *oh, H5O_mesg_t *mesg); +H5_DLL herr_t H5O_flush_msgs(H5F_t *f, H5O_t *oh); +H5_DLL hid_t H5O_open_by_loc(const H5G_loc_t *obj_loc, hid_t lapl_id, hid_t dxpl_id, hbool_t app_ref); +H5_DLL herr_t H5O_delete_mesg(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, H5O_mesg_t *mesg); +H5_DLL const H5O_obj_class_t * H5O_obj_class(const H5O_loc_t *loc, hid_t dxpl_id); +H5_DLL int H5O_link_oh(H5F_t *f, int adjust, hid_t dxpl_id, H5O_t *oh, hbool_t *deleted); +H5_DLL herr_t H5O_inc_rc(H5O_t *oh); +H5_DLL herr_t H5O_dec_rc(H5O_t *oh); +H5_DLL herr_t H5O_free(H5O_t *oh); + +/* Object header message routines */ +H5_DLL herr_t H5O_msg_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh, + const H5O_msg_class_t *type, unsigned *mesg_flags, void *mesg, + size_t *mesg_idx); +H5_DLL herr_t H5O_msg_append_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, + const H5O_msg_class_t *type, unsigned mesg_flags, unsigned update_flags, + void *mesg); +H5_DLL herr_t H5O_msg_write_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, + const H5O_msg_class_t *type, unsigned mesg_flags, unsigned update_flags, + void *mesg); +H5_DLL void *H5O_msg_free_real(const H5O_msg_class_t *type, void *mesg); +H5_DLL herr_t H5O_msg_free_mesg(H5O_mesg_t *mesg); +H5_DLL unsigned H5O_msg_count_real(const H5O_t *oh, const H5O_msg_class_t *type); +H5_DLL herr_t H5O_msg_remove_real(H5F_t *f, H5O_t *oh, const H5O_msg_class_t *type, + int sequence, H5O_operator_t op, void *op_data, hbool_t adj_link, hid_t dxpl_id); +H5_DLL void *H5O_msg_copy_file(const H5O_msg_class_t *type, H5F_t *file_src, + void *mesg_src, H5F_t *file_dst, hbool_t *recompute_size, + unsigned *mesg_flags, H5O_copy_t *cpy_info, void *udata, hid_t dxpl_id); +H5_DLL herr_t H5O_msg_iterate_real(H5F_t *f, H5O_t *oh, const H5O_msg_class_t *type, + const H5O_mesg_operator_t *op, void *op_data, hid_t dxpl_id); + +/* Object header chunk routines */ +H5_DLL herr_t H5O_chunk_add(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned idx); +H5_DLL H5O_chunk_proxy_t *H5O_chunk_protect(H5F_t *f, hid_t dxpl_id, H5O_t *oh, + unsigned idx); +H5_DLL herr_t H5O_chunk_unprotect(H5F_t *f, hid_t dxpl_id, + H5O_chunk_proxy_t *chk_proxy, hbool_t chk_dirtied); +H5_DLL herr_t H5O_chunk_update_idx(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned idx); +H5_DLL herr_t H5O_chunk_resize(H5O_t *oh, H5O_chunk_proxy_t *chk_proxy); +H5_DLL herr_t H5O_chunk_delete(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned idx); + +/* Collect storage info for btree and heap */ +H5_DLL herr_t H5O_attr_bh_info(H5F_t *f, hid_t dxpl_id, H5O_t *oh, + H5_ih_info_t *bh_info); + +/* Object header allocation routines */ +H5_DLL herr_t H5O_alloc_msgs(H5O_t *oh, size_t min_alloc); +H5_DLL herr_t H5O_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh, + const H5O_msg_class_t *type, const void *mesg, size_t *mesg_idx); +H5_DLL herr_t H5O_condense_header(H5F_t *f, H5O_t *oh, hid_t dxpl_id); +H5_DLL herr_t H5O_release_mesg(H5F_t *f, hid_t dxpl_id, H5O_t *oh, + H5O_mesg_t *mesg, hbool_t adj_link); + +/* Shared object operators */ +H5_DLL void * H5O_shared_decode(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, + unsigned *ioflags, const uint8_t *buf, const H5O_msg_class_t *type); +H5_DLL herr_t H5O_shared_encode(const H5F_t *f, uint8_t *buf/*out*/, const H5O_shared_t *sh_mesg); +H5_DLL size_t H5O_shared_size(const H5F_t *f, const H5O_shared_t *sh_mesg); +H5_DLL herr_t H5O_shared_delete(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, + const H5O_msg_class_t *mesg_type, H5O_shared_t *sh_mesg); +H5_DLL herr_t H5O_shared_link(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, + const H5O_msg_class_t *mesg_type, H5O_shared_t *sh_mesg); +H5_DLL herr_t H5O_shared_copy_file(H5F_t *file_src, H5F_t *file_dst, + const H5O_msg_class_t *mesg_type, const void *_native_src, void *_native_dst, + hbool_t *recompute_size, unsigned *mesg_flags, H5O_copy_t *cpy_info, + void *udata, hid_t dxpl_id); +H5_DLL herr_t H5O_shared_post_copy_file (H5F_t *f, + const H5O_msg_class_t *mesg_type, const H5O_shared_t *shared_src, + H5O_shared_t *shared_dst, unsigned *mesg_flags, hid_t dxpl_id, + H5O_copy_t *cpy_info); +H5_DLL herr_t H5O_shared_debug(const H5O_shared_t *mesg, FILE *stream, + int indent, int fwidth); + +/* Attribute message operators */ +H5_DLL herr_t H5O_attr_reset(void *_mesg); +H5_DLL herr_t H5O_attr_delete(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, void *_mesg); +H5_DLL herr_t H5O_attr_link(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, void *_mesg); +H5_DLL herr_t H5O_attr_count_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, + hsize_t *nattrs); + + +/* These functions operate on object locations */ +H5_DLL H5O_loc_t *H5O_get_loc(hid_t id); + +/* Testing functions */ +#ifdef H5O_TESTING +H5_DLL htri_t H5O_is_attr_empty_test(hid_t oid); +H5_DLL htri_t H5O_is_attr_dense_test(hid_t oid); +H5_DLL herr_t H5O_num_attrs_test(hid_t oid, hsize_t *nattrs); +H5_DLL herr_t H5O_attr_dense_info_test(hid_t oid, hsize_t *name_count, hsize_t *corder_count); +H5_DLL herr_t H5O_check_msg_marked_test(hid_t oid, hbool_t flag_val); +H5_DLL herr_t H5O_expunge_chunks_test(const H5O_loc_t *oloc, hid_t dxpl_id); +H5_DLL herr_t H5O_get_rc(const H5O_loc_t *oloc, hid_t dxpl_id, unsigned *rc); +#endif /* H5O_TESTING */ + +/* Object header debugging routines */ +#ifdef H5O_DEBUG +H5_DLL herr_t H5O_assert(const H5O_t *oh); +#endif /* H5O_DEBUG */ +H5_DLL herr_t H5O_debug_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, haddr_t addr, FILE *stream, int indent, int fwidth); + +#endif /* _H5Opkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Opublic.h b/Resources/windows-libs/HDF5/include/H5Opublic.h new file mode 100644 index 0000000000000000000000000000000000000000..32945e845ae81d3b7dae8fee424c250b1980ce7c --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Opublic.h @@ -0,0 +1,212 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5Opublic.h + * Aug 5 1997 + * Robb Matzke <matzke@llnl.gov> + * + * Purpose: Public declarations for the H5O (object header) + * package. + * + *------------------------------------------------------------------------- + */ +#ifndef _H5Opublic_H +#define _H5Opublic_H + +/* Public headers needed by this file */ +#include "H5public.h" /* Generic Functions */ +#include "H5Ipublic.h" /* IDs */ +#include "H5Lpublic.h" /* Links */ + +/*****************/ +/* Public Macros */ +/*****************/ + +/* Flags for object copy (H5Ocopy) */ +#define H5O_COPY_SHALLOW_HIERARCHY_FLAG (0x0001u) /* Copy only immediate members */ +#define H5O_COPY_EXPAND_SOFT_LINK_FLAG (0x0002u) /* Expand soft links into new objects */ +#define H5O_COPY_EXPAND_EXT_LINK_FLAG (0x0004u) /* Expand external links into new objects */ +#define H5O_COPY_EXPAND_REFERENCE_FLAG (0x0008u) /* Copy objects that are pointed by references */ +#define H5O_COPY_WITHOUT_ATTR_FLAG (0x0010u) /* Copy object without copying attributes */ +#define H5O_COPY_PRESERVE_NULL_FLAG (0x0020u) /* Copy NULL messages (empty space) */ +#define H5O_COPY_MERGE_COMMITTED_DTYPE_FLAG (0x0040u) /* Merge committed datatypes in dest file */ +#define H5O_COPY_ALL (0x007Fu) /* All object copying flags (for internal checking) */ + +/* Flags for shared message indexes. + * Pass these flags in using the mesg_type_flags parameter in + * H5P_set_shared_mesg_index. + * (Developers: These flags correspond to object header message type IDs, + * but we need to assign each kind of message to a different bit so that + * one index can hold multiple types.) + */ +#define H5O_SHMESG_NONE_FLAG 0x0000 /* No shared messages */ +#define H5O_SHMESG_SDSPACE_FLAG ((unsigned)1 << 0x0001) /* Simple Dataspace Message. */ +#define H5O_SHMESG_DTYPE_FLAG ((unsigned)1 << 0x0003) /* Datatype Message. */ +#define H5O_SHMESG_FILL_FLAG ((unsigned)1 << 0x0005) /* Fill Value Message. */ +#define H5O_SHMESG_PLINE_FLAG ((unsigned)1 << 0x000b) /* Filter pipeline message. */ +#define H5O_SHMESG_ATTR_FLAG ((unsigned)1 << 0x000c) /* Attribute Message. */ +#define H5O_SHMESG_ALL_FLAG (H5O_SHMESG_SDSPACE_FLAG | H5O_SHMESG_DTYPE_FLAG | H5O_SHMESG_FILL_FLAG | H5O_SHMESG_PLINE_FLAG | H5O_SHMESG_ATTR_FLAG) + +/* Object header status flag definitions */ +#define H5O_HDR_CHUNK0_SIZE 0x03 /* 2-bit field indicating # of bytes to store the size of chunk 0's data */ +#define H5O_HDR_ATTR_CRT_ORDER_TRACKED 0x04 /* Attribute creation order is tracked */ +#define H5O_HDR_ATTR_CRT_ORDER_INDEXED 0x08 /* Attribute creation order has index */ +#define H5O_HDR_ATTR_STORE_PHASE_CHANGE 0x10 /* Non-default attribute storage phase change values stored */ +#define H5O_HDR_STORE_TIMES 0x20 /* Store access, modification, change & birth times for object */ +#define H5O_HDR_ALL_FLAGS (H5O_HDR_CHUNK0_SIZE | H5O_HDR_ATTR_CRT_ORDER_TRACKED | H5O_HDR_ATTR_CRT_ORDER_INDEXED | H5O_HDR_ATTR_STORE_PHASE_CHANGE | H5O_HDR_STORE_TIMES) + +/* Maximum shared message values. Number of indexes is 8 to allow room to add + * new types of messages. + */ +#define H5O_SHMESG_MAX_NINDEXES 8 +#define H5O_SHMESG_MAX_LIST_SIZE 5000 + +/*******************/ +/* Public Typedefs */ +/*******************/ + +/* Types of objects in file */ +typedef enum H5O_type_t { + H5O_TYPE_UNKNOWN = -1, /* Unknown object type */ + H5O_TYPE_GROUP, /* Object is a group */ + H5O_TYPE_DATASET, /* Object is a dataset */ + H5O_TYPE_NAMED_DATATYPE, /* Object is a named data type */ + H5O_TYPE_NTYPES /* Number of different object types (must be last!) */ +} H5O_type_t; + +/* Information struct for object header metadata (for H5Oget_info/H5Oget_info_by_name/H5Oget_info_by_idx) */ +typedef struct H5O_hdr_info_t { + unsigned version; /* Version number of header format in file */ + unsigned nmesgs; /* Number of object header messages */ + unsigned nchunks; /* Number of object header chunks */ + unsigned flags; /* Object header status flags */ + struct { + hsize_t total; /* Total space for storing object header in file */ + hsize_t meta; /* Space within header for object header metadata information */ + hsize_t mesg; /* Space within header for actual message information */ + hsize_t free; /* Free space within object header */ + } space; + struct { + uint64_t present; /* Flags to indicate presence of message type in header */ + uint64_t shared; /* Flags to indicate message type is shared in header */ + } mesg; +} H5O_hdr_info_t; + +/* Information struct for object (for H5Oget_info/H5Oget_info_by_name/H5Oget_info_by_idx) */ +typedef struct H5O_info_t { + unsigned long fileno; /* File number that object is located in */ + haddr_t addr; /* Object address in file */ + H5O_type_t type; /* Basic object type (group, dataset, etc.) */ + unsigned rc; /* Reference count of object */ + time_t atime; /* Access time */ + time_t mtime; /* Modification time */ + time_t ctime; /* Change time */ + time_t btime; /* Birth time */ + hsize_t num_attrs; /* # of attributes attached to object */ + H5O_hdr_info_t hdr; /* Object header information */ + /* Extra metadata storage for obj & attributes */ + struct { + H5_ih_info_t obj; /* v1/v2 B-tree & local/fractal heap for groups, B-tree for chunked datasets */ + H5_ih_info_t attr; /* v2 B-tree & heap for attributes */ + } meta_size; +} H5O_info_t; + +/* Typedef for message creation indexes */ +typedef uint32_t H5O_msg_crt_idx_t; + +/* Prototype for H5Ovisit/H5Ovisit_by_name() operator */ +typedef herr_t (*H5O_iterate_t)(hid_t obj, const char *name, const H5O_info_t *info, + void *op_data); + +typedef enum H5O_mcdt_search_ret_t { + H5O_MCDT_SEARCH_ERROR = -1, /* Abort H5Ocopy */ + H5O_MCDT_SEARCH_CONT, /* Continue the global search of all committed datatypes in the destination file */ + H5O_MCDT_SEARCH_STOP /* Stop the search, but continue copying. The committed datatype will be copied but not merged. */ +} H5O_mcdt_search_ret_t; + +/* Callback to invoke when completing the search for a matching committed datatype from the committed dtype list */ +typedef H5O_mcdt_search_ret_t (*H5O_mcdt_search_cb_t)(void *op_data); + +/********************/ +/* Public Variables */ +/********************/ + + +#ifdef __cplusplus +extern "C" { +#endif + +/*********************/ +/* Public Prototypes */ +/*********************/ +H5_DLL hid_t H5Oopen(hid_t loc_id, const char *name, hid_t lapl_id); +H5_DLL hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr); +H5_DLL hid_t H5Oopen_by_idx(hid_t loc_id, const char *group_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id); +H5_DLL htri_t H5Oexists_by_name(hid_t loc_id, const char *name, hid_t lapl_id); +H5_DLL herr_t H5Oget_info(hid_t loc_id, H5O_info_t *oinfo); +H5_DLL herr_t H5Oget_info_by_name(hid_t loc_id, const char *name, H5O_info_t *oinfo, + hid_t lapl_id); +H5_DLL herr_t H5Oget_info_by_idx(hid_t loc_id, const char *group_name, + H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, + hid_t lapl_id); +H5_DLL herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, const char *new_name, + hid_t lcpl_id, hid_t lapl_id); +H5_DLL herr_t H5Oincr_refcount(hid_t object_id); +H5_DLL herr_t H5Odecr_refcount(hid_t object_id); +H5_DLL herr_t H5Ocopy(hid_t src_loc_id, const char *src_name, hid_t dst_loc_id, + const char *dst_name, hid_t ocpypl_id, hid_t lcpl_id); +H5_DLL herr_t H5Oset_comment(hid_t obj_id, const char *comment); +H5_DLL herr_t H5Oset_comment_by_name(hid_t loc_id, const char *name, + const char *comment, hid_t lapl_id); +H5_DLL ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize); +H5_DLL ssize_t H5Oget_comment_by_name(hid_t loc_id, const char *name, + char *comment, size_t bufsize, hid_t lapl_id); +H5_DLL herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order, + H5O_iterate_t op, void *op_data); +H5_DLL herr_t H5Ovisit_by_name(hid_t loc_id, const char *obj_name, + H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op, + void *op_data, hid_t lapl_id); +H5_DLL herr_t H5Oclose(hid_t object_id); + +/* Symbols defined for compatibility with previous versions of the HDF5 API. + * + * Use of these symbols is deprecated. + */ +#ifndef H5_NO_DEPRECATED_SYMBOLS + +/* Macros */ + +/* Typedefs */ + +/* A struct that's part of the H5G_stat_t routine (deprecated) */ +typedef struct H5O_stat_t { + hsize_t size; /* Total size of object header in file */ + hsize_t free; /* Free space within object header */ + unsigned nmesgs; /* Number of object header messages */ + unsigned nchunks; /* Number of object header chunks */ +} H5O_stat_t; + +/* Function prototypes */ + +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +#ifdef __cplusplus +} +#endif +#endif /* _H5Opublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Oshared.h b/Resources/windows-libs/HDF5/include/H5Oshared.h new file mode 100644 index 0000000000000000000000000000000000000000..3ec570902013b28f167f2b6d4f5ef0b699e20416 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Oshared.h @@ -0,0 +1,491 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@hdfgroup.org> + * Friday, January 19, 2007 + * + * Purpose: This file contains inline definitions for "generic" routines + * supporting a "shared message interface" (ala Java) for object + * header messages that can be shared. This interface is + * dependent on a bunch of macros being defined which define + * the name of the interface and "real" methods which need to + * be implemented for each message class that supports the + * shared message interface. + */ + +#ifndef H5Oshared_H +#define H5Oshared_H + + +/*------------------------------------------------------------------------- + * Function: H5O_SHARED_DECODE + * + * Purpose: Decode an object header message that may be shared. + * + * Note: The actual name of this routine can be different in each source + * file that this header file is included in, and must be defined + * prior to including this header file. + * + * Return: Success: Pointer to the new message in native form + * Failure: NULL + * + * Programmer: Quincey Koziol + * Friday, January 19, 2007 + * + *------------------------------------------------------------------------- + */ +static H5_inline void * +H5O_SHARED_DECODE(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, unsigned mesg_flags, + unsigned *ioflags, const uint8_t *p) +{ + void *ret_value; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT + +#ifndef H5O_SHARED_TYPE +#error "Need to define H5O_SHARED_TYPE macro!" +#endif /* H5O_SHARED_TYPE */ +#ifndef H5O_SHARED_DECODE +#error "Need to define H5O_SHARED_DECODE macro!" +#endif /* H5O_SHARED_DECODE */ +#ifndef H5O_SHARED_DECODE_REAL +#error "Need to define H5O_SHARED_DECODE_REAL macro!" +#endif /* H5O_SHARED_DECODE_REAL */ + + /* Check for shared message */ + if(mesg_flags & H5O_MSG_FLAG_SHARED) { + /* Retrieve native message info indirectly through shared message */ + if(NULL == (ret_value = H5O_shared_decode(f, dxpl_id, open_oh, ioflags, p, H5O_SHARED_TYPE))) + HGOTO_ERROR(H5E_OHDR, H5E_CANTDECODE, NULL, "unable to decode shared message") + + /* We currently do not support automatically fixing shared messages */ +#ifdef H5_STRICT_FORMAT_CHECKS + if(*ioflags & H5O_DECODEIO_DIRTY) + HGOTO_ERROR(H5E_OHDR, H5E_UNSUPPORTED, NULL, "unable to mark shared message dirty") +#else /* H5_STRICT_FORMAT_CHECKS */ + *ioflags &= ~H5O_DECODEIO_DIRTY; +#endif /* H5_STRICT_FORMAT_CHECKS */ + } /* end if */ + else { + /* Decode native message directly */ + if(NULL == (ret_value = H5O_SHARED_DECODE_REAL(f, dxpl_id, open_oh, mesg_flags, ioflags, p))) + HGOTO_ERROR(H5E_OHDR, H5E_CANTDECODE, NULL, "unable to decode native message") + } /* end else */ + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5O_SHARED_DECODE() */ + + +/*------------------------------------------------------------------------- + * Function: H5O_SHARED_ENCODE + * + * Purpose: Encode an object header message that may be shared. + * + * Note: The actual name of this routine can be different in each source + * file that this header file is included in, and must be defined + * prior to including this header file. + * + * Return: Success: Non-negative + * Failure: Negative + * + * Programmer: Quincey Koziol + * Friday, January 19, 2007 + * + *------------------------------------------------------------------------- + */ +static H5_inline herr_t +H5O_SHARED_ENCODE(H5F_t *f, hbool_t disable_shared, uint8_t *p, const void *_mesg) +{ + const H5O_shared_t *sh_mesg = (const H5O_shared_t *)_mesg; /* Pointer to shared message portion of actual message */ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT + +#ifndef H5O_SHARED_TYPE +#error "Need to define H5O_SHARED_TYPE macro!" +#endif /* H5O_SHARED_TYPE */ +#ifndef H5O_SHARED_ENCODE +#error "Need to define H5O_SHARED_ENCODE macro!" +#endif /* H5O_SHARED_ENCODE */ +#ifndef H5O_SHARED_ENCODE_REAL +#error "Need to define H5O_SHARED_ENCODE_REAL macro!" +#endif /* H5O_SHARED_ENCODE_REAL */ + + /* Sanity check */ + HDassert(sh_mesg->type == H5O_SHARE_TYPE_UNSHARED || sh_mesg->msg_type_id == H5O_SHARED_TYPE->id); + + /* Check for message stored elsewhere */ + if(H5O_IS_STORED_SHARED(sh_mesg->type) && !disable_shared) { + /* Encode shared message into buffer */ + if(H5O_shared_encode(f, p, sh_mesg) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTENCODE, FAIL, "unable to encode shared message") + } /* end if */ + else { + /* Encode native message directly */ + if(H5O_SHARED_ENCODE_REAL(f, p, _mesg) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTENCODE, FAIL, "unable to encode native message") + } /* end else */ + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5O_SHARED_ENCODE() */ + + +/*------------------------------------------------------------------------- + * Function: H5O_SHARED_SIZE + * + * Purpose: Returns the length of an encoded message. + * + * Note: The actual name of this routine can be different in each source + * file that this header file is included in, and must be defined + * prior to including this header file. + * + * Return: Success: Length + * Failure: 0 + * + * Programmer: Quincey Koziol + * Friday, January 19, 2007 + * + *------------------------------------------------------------------------- + */ +static H5_inline size_t +H5O_SHARED_SIZE(const H5F_t *f, hbool_t disable_shared, const void *_mesg) +{ + const H5O_shared_t *sh_mesg = (const H5O_shared_t *)_mesg; /* Pointer to shared message portion of actual message */ + size_t ret_value; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT + +#ifndef H5O_SHARED_TYPE +#error "Need to define H5O_SHARED_TYPE macro!" +#endif /* H5O_SHARED_TYPE */ +#ifndef H5O_SHARED_SIZE +#error "Need to define H5O_SHARED_SIZE macro!" +#endif /* H5O_SHARED_SIZE */ +#ifndef H5O_SHARED_SIZE_REAL +#error "Need to define H5O_SHARED_SIZE_REAL macro!" +#endif /* H5O_SHARED_SIZE_REAL */ + + /* Check for message stored elsewhere */ + if(H5O_IS_STORED_SHARED(sh_mesg->type) && !disable_shared) { + /* Retrieve encoded size of shared message */ + if(0 == (ret_value = H5O_shared_size(f, sh_mesg))) + HGOTO_ERROR(H5E_OHDR, H5E_CANTGET, 0, "unable to retrieve encoded size of shared message") + } /* end if */ + else { + /* Retrieve size of native message directly */ + if(0 == (ret_value = H5O_SHARED_SIZE_REAL(f, _mesg))) + HGOTO_ERROR(H5E_OHDR, H5E_CANTGET, 0, "unable to retrieve encoded size of native message") + } /* end else */ + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5O_SHARED_SIZE() */ + + +/*------------------------------------------------------------------------- + * Function: H5O_SHARED_DELETE + * + * Purpose: Decrement reference count on any objects referenced by + * message + * + * Note: The actual name of this routine can be different in each source + * file that this header file is included in, and must be defined + * prior to including this header file. + * + * Return: Success: Non-negative + * Failure: Negative + * + * Programmer: Quincey Koziol + * Friday, January 19, 2007 + * + *------------------------------------------------------------------------- + */ +static H5_inline herr_t +H5O_SHARED_DELETE(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, void *_mesg) +{ + H5O_shared_t *sh_mesg = (H5O_shared_t *)_mesg; /* Pointer to shared message portion of actual message */ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT + +#ifndef H5O_SHARED_TYPE +#error "Need to define H5O_SHARED_TYPE macro!" +#endif /* H5O_SHARED_TYPE */ +#ifndef H5O_SHARED_DELETE +#error "Need to define H5O_SHARED_DELETE macro!" +#endif /* H5O_SHARED_DELETE */ + + /* Check for message tracked elsewhere */ + if(H5O_IS_TRACKED_SHARED(sh_mesg->type)) { + /* Decrement the reference count on the shared message/object */ + if(H5O_shared_delete(f, dxpl_id, open_oh, H5O_SHARED_TYPE, sh_mesg) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTDEC, FAIL, "unable to decrement ref count for shared message") + } /* end if */ +#ifdef H5O_SHARED_DELETE_REAL + else { + /* Decrement the reference count on the native message directly */ + if(H5O_SHARED_DELETE_REAL(f, dxpl_id, open_oh, _mesg) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTDEC, FAIL, "unable to decrement ref count for native message") + } /* end else */ +#endif /* H5O_SHARED_DELETE_REAL */ + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5O_SHARED_DELETE() */ + + +/*------------------------------------------------------------------------- + * Function: H5O_SHARED_LINK + * + * Purpose: Increment reference count on any objects referenced by + * message + * + * Note: The actual name of this routine can be different in each source + * file that this header file is included in, and must be defined + * prior to including this header file. + * + * Return: Success: Non-negative + * Failure: Negative + * + * Programmer: Quincey Koziol + * Friday, January 19, 2007 + * + *------------------------------------------------------------------------- + */ +static H5_inline herr_t +H5O_SHARED_LINK(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, void *_mesg) +{ + H5O_shared_t *sh_mesg = (H5O_shared_t *)_mesg; /* Pointer to shared message portion of actual message */ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT + +#ifndef H5O_SHARED_TYPE +#error "Need to define H5O_SHARED_TYPE macro!" +#endif /* H5O_SHARED_TYPE */ +#ifndef H5O_SHARED_LINK +#error "Need to define H5O_SHARED_LINK macro!" +#endif /* H5O_SHARED_LINK */ + + /* Check for message tracked elsewhere */ + if(H5O_IS_TRACKED_SHARED(sh_mesg->type)) { + /* Increment the reference count on the shared message/object */ + if(H5O_shared_link(f, dxpl_id, open_oh, H5O_SHARED_TYPE, sh_mesg) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTINC, FAIL, "unable to increment ref count for shared message") + } /* end if */ +#ifdef H5O_SHARED_LINK_REAL + else { + /* Increment the reference count on the native message directly */ + if(H5O_SHARED_LINK_REAL(f, dxpl_id, open_oh, _mesg) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTINC, FAIL, "unable to increment ref count for native message") + } /* end else */ +#endif /* H5O_SHARED_LINK_REAL */ + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5O_SHARED_LINK() */ + + +/*------------------------------------------------------------------------- + * Function: H5O_SHARED_COPY_FILE + * + * Purpose: Copies a message from _SRC to _DEST in file + * + * Note: The actual name of this routine can be different in each source + * file that this header file is included in, and must be defined + * prior to including this header file. + * + * Return: Success: Non-negative + * Failure: Negative + * + * Programmer: Quincey Koziol + * Friday, January 19, 2007 + * + *------------------------------------------------------------------------- + */ +static H5_inline void * +H5O_SHARED_COPY_FILE(H5F_t *file_src, void *_native_src, H5F_t *file_dst, + hbool_t *recompute_size, unsigned *mesg_flags, H5O_copy_t *cpy_info, + void *udata, hid_t dxpl_id) +{ + void *dst_mesg = NULL; /* Destination message */ + void *ret_value; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT + +#ifndef H5O_SHARED_TYPE +#error "Need to define H5O_SHARED_TYPE macro!" +#endif /* H5O_SHARED_TYPE */ +#ifndef H5O_SHARED_COPY_FILE +#error "Need to define H5O_SHARED_COPY_FILE macro!" +#endif /* H5O_SHARED_COPY_FILE */ + +#ifdef H5O_SHARED_COPY_FILE_REAL + /* Call native message's copy file callback to copy the message */ + if(NULL == (dst_mesg = H5O_SHARED_COPY_FILE_REAL(file_src, H5O_SHARED_TYPE, _native_src, file_dst, recompute_size, cpy_info, udata, dxpl_id))) + HGOTO_ERROR(H5E_OHDR, H5E_CANTCOPY, NULL, "unable to copy native message to another file") +#else /* H5O_SHARED_COPY_FILE_REAL */ + /* No copy file callback defined, just copy the message itself */ + if(NULL == (dst_mesg = (H5O_SHARED_TYPE->copy)(_native_src, NULL))) + HGOTO_ERROR(H5E_OHDR, H5E_CANTCOPY, NULL, "unable to copy native message") +#endif /* H5O_SHARED_COPY_FILE_REAL */ + + /* Reset shared message info for new message */ + HDmemset(dst_mesg, 0, sizeof(H5O_shared_t)); + + /* Handle sharing destination message */ + if(H5O_shared_copy_file(file_src, file_dst, H5O_SHARED_TYPE, _native_src, + dst_mesg, recompute_size, mesg_flags, cpy_info, udata, dxpl_id) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, NULL, "unable to determine if message should be shared") + + /* Set return value */ + ret_value = dst_mesg; + +done: + if(!ret_value) + if(dst_mesg) + H5O_msg_free(H5O_SHARED_TYPE->id, dst_mesg); + + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5O_SHARED_COPY_FILE() */ + + +/*------------------------------------------------------------------------- + * Function: H5O_SHARED_POST_COPY_FILE + * + * Purpose: Copies a message from _SRC to _DEST in file + * + * Note: The actual name of this routine can be different in each source + * file that this header file is included in, and must be defined + * prior to including this header file. + * + * Return: Success: Non-negative + * Failure: Negative + * + * Programmer: Peter Cao + * May 25, 2007 + * + *------------------------------------------------------------------------- + */ +static H5_inline herr_t +H5O_SHARED_POST_COPY_FILE(const H5O_loc_t *oloc_src, const void *mesg_src, + H5O_loc_t *oloc_dst, void *mesg_dst, unsigned *mesg_flags, hid_t dxpl_id, + H5O_copy_t *cpy_info) +{ + const H5O_shared_t *shared_src = (const H5O_shared_t *)mesg_src; /* Alias to shared info in native source */ + H5O_shared_t *shared_dst = (H5O_shared_t *)mesg_dst; /* Alias to shared info in native destination */ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT + + HDassert(oloc_src->file); + HDassert(oloc_dst->file); + HDassert(mesg_src); + HDassert(mesg_dst); + HDassert(cpy_info); + +#ifndef H5O_SHARED_TYPE +#error "Need to define H5O_SHARED_TYPE macro!" +#endif /* H5O_SHARED_TYPE */ +#ifndef H5O_SHARED_POST_COPY_FILE +#error "Need to define H5O_SHARED_POST_COPY_FILE macro!" +#endif /* H5O_SHARED_POST_COPY_FILE */ + +#ifdef H5O_SHARED_POST_COPY_FILE_REAL + /* Call native message's post copy file callback to copy the message */ + if(H5O_SHARED_POST_COPY_FILE_REAL(oloc_src, mesg_src, oloc_dst, mesg_dst, dxpl_id, cpy_info) <0 ) + HGOTO_ERROR(H5E_OHDR, H5E_CANTCOPY, FAIL, "unable to copy native message to another file") +#endif /* H5O_SHARED_POST_COPY_FILE_REAL */ + + /* Update shared message after the post copy - will short circuit in + * production if the DEFER pass determined it will not be shared; debug mode + * verifies that it is indeed the case */ + if(H5O_shared_post_copy_file(oloc_dst->file, H5O_SHARED_TYPE, + shared_src, shared_dst, mesg_flags, dxpl_id, cpy_info) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL, "unable to fix shared message in post copy") + +#ifdef H5O_SHARED_POST_COPY_FILE_UPD + /* Call native message's post copy file update callback to update the + * message */ + if(H5O_SHARED_POST_COPY_FILE_UPD(oloc_src, mesg_src, oloc_dst, mesg_dst, dxpl_id, cpy_info) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTCOPY, FAIL, "unable to update native message") +#endif /* H5O_SHARED_POST_COPY_FILE_UPD */ + + /* Make sure that if the the source or destination is committed, both are + * committed */ + HDassert((shared_src->type == H5O_SHARE_TYPE_COMMITTED) + == (shared_dst->type == H5O_SHARE_TYPE_COMMITTED)); + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5O_SHARED_POST_COPY_FILE() */ + + +/*------------------------------------------------------------------------- + * Function: H5O_SHARED_DEBUG + * + * Purpose: Prints debugging info for a potentially shared message. + * + * Note: The actual name of this routine can be different in each source + * file that this header file is included in, and must be defined + * prior to including this header file. + * + * Return: Success: Non-negative + * Failure: Negative + * + * Programmer: Quincey Koziol + * Saturday, February 3, 2007 + * + *------------------------------------------------------------------------- + */ +static H5_inline herr_t +H5O_SHARED_DEBUG(H5F_t *f, hid_t dxpl_id, const void *_mesg, FILE *stream, + int indent, int fwidth) +{ + const H5O_shared_t *sh_mesg = (const H5O_shared_t *)_mesg; /* Pointer to shared message portion of actual message */ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT + +#ifndef H5O_SHARED_TYPE +#error "Need to define H5O_SHARED_TYPE macro!" +#endif /* H5O_SHARED_TYPE */ +#ifndef H5O_SHARED_DEBUG +#error "Need to define H5O_SHARED_DEBUG macro!" +#endif /* H5O_SHARED_DEBUG */ +#ifndef H5O_SHARED_DEBUG_REAL +#error "Need to define H5O_SHARED_DEBUG_REAL macro!" +#endif /* H5O_SHARED_DEBUG_REAL */ + + /* Check for message stored elsewhere */ + if(H5O_IS_STORED_SHARED(sh_mesg->type)) { + /* Print shared message information */ + if(H5O_shared_debug(sh_mesg, stream, indent, fwidth) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL, "unable to display shared message info") + } /* end if */ + + /* Call native message's debug callback */ + if(H5O_SHARED_DEBUG_REAL(f, dxpl_id, _mesg, stream, indent, fwidth) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL, "unable to display native message info") + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5O_SHARED_DEBUG() */ + +#endif /* H5Oshared_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5PLextern.h b/Resources/windows-libs/HDF5/include/H5PLextern.h new file mode 100644 index 0000000000000000000000000000000000000000..f94101d818a1cda5e73635651f6c5c98f5ccaff8 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5PLextern.h @@ -0,0 +1,87 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic document set and is * + * linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have access * + * to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Raymond Lu <songyulu@hdfgroup.org> + * 13 February 2013 + */ +#ifndef _H5PLextern_H +#define _H5PLextern_H + +/* Include HDF5 header */ +#include "hdf5.h" + +#ifndef H5_VMS + +/*******************/ +/* Public Typedefs */ +/*******************/ + +/* Plugin type */ +typedef enum H5PL_type_t { + H5PL_TYPE_ERROR = -1, /*error */ + H5PL_TYPE_FILTER = 0, /*filter */ + H5PL_TYPE_NONE = 1 /*this must be last! */ +} H5PL_type_t; + + +#ifdef H5_BUILT_AS_DYNAMIC_LIB + + #if defined (hdf5_EXPORTS) + /* hdf5 library imports from plugin */ + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5PLUGIN_DLL __declspec(dllimport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5PLUGIN_DLL __attribute__ ((visibility("default"))) + #endif + #else + /* plugins always export */ + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5PLUGIN_DLL __declspec(dllexport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5PLUGIN_DLL __attribute__ ((visibility("default"))) + #endif + #endif + +#elif defined(H5_BUILT_AS_STATIC_LIB) + #define H5PLUGIN_DLL +#else + + #if defined(H5_HAVE_WIN32_API) + #if defined(_HDF5DLL_) + #pragma warning(disable: 4273) /* Disable the dll linkage warnings */ + #define H5PLUGIN_DLL __declspec(dllimport) + #elif defined(_HDF5USEDLL_) + #define H5PLUGIN_DLL __declspec(dllexport) + #endif /* _HDF5DLL_ */ + #else /*H5_HAVE_WIN32_API*/ + #define H5PLUGIN_DLL + #endif /*H5_HAVE_WIN32_API*/ + +#endif /* H5_BUILT_AS_xxx_LIB */ + +#ifdef __cplusplus +extern "C" { +#endif + +H5PLUGIN_DLL H5PL_type_t H5PLget_plugin_type(void); +H5PLUGIN_DLL const void *H5PLget_plugin_info(void); + +#ifdef __cplusplus +} +#endif +#endif /*H5_VMS*/ + +#endif /* _H5PLextern_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5PTpublic.h b/Resources/windows-libs/HDF5/include/H5PTpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..f919010591917cb356bf08c99381368bc848d444 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5PTpublic.h @@ -0,0 +1,127 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef _H5PTpublic_H +#define _H5PTpublic_H + + +#ifdef __cplusplus +extern "C" { +#endif + +/*------------------------------------------------------------------------- + * + * Create/Open/Close functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL hid_t H5PTcreate_fl ( hid_t loc_id, + const char *dset_name, + hid_t dtype_id, + hsize_t chunk_size, + int compression ); + +#ifdef VLPT_REMOVED +H5_HLDLL hid_t H5PTcreate_vl ( hid_t loc_id, + const char *dset_name, + hsize_t chunk_size ); +#endif /* VLPT_REMOVED */ + +H5_HLDLL hid_t H5PTopen( hid_t loc_id, + const char *dset_name ); + +H5_HLDLL herr_t H5PTclose( hid_t table_id ); + + +/*------------------------------------------------------------------------- + * + * Write functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL herr_t H5PTappend( hid_t table_id, + size_t nrecords, + const void * data ); + +/*------------------------------------------------------------------------- + * + * Read functions + * + *------------------------------------------------------------------------- + */ + + +H5_HLDLL herr_t H5PTget_next( hid_t table_id, + size_t nrecords, + void * data ); + +H5_HLDLL herr_t H5PTread_packets( hid_t table_id, + hsize_t start, + size_t nrecords, + void *data ); + +/*------------------------------------------------------------------------- + * + * Inquiry functions + * + *------------------------------------------------------------------------- + */ + + +H5_HLDLL herr_t H5PTget_num_packets( hid_t table_id, + hsize_t *nrecords ); + +H5_HLDLL herr_t H5PTis_valid( hid_t table_id ); + +#ifdef VLPT_REMOVED +H5_HLDLL herr_t H5PTis_varlen( hid_t table_id ); +#endif /* VLPT_REMOVED */ + +/*------------------------------------------------------------------------- + * + * Packet Table "current index" functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL herr_t H5PTcreate_index( hid_t table_id ); + +H5_HLDLL herr_t H5PTset_index( hid_t table_id, + hsize_t pt_index ); + +H5_HLDLL herr_t H5PTget_index( hid_t table_id, + hsize_t *pt_index ); + +/*------------------------------------------------------------------------- + * + * Memory Management functions + * + *------------------------------------------------------------------------- + */ + +#ifdef VLPT_REMOVED +H5_HLDLL herr_t H5PTfree_vlen_readbuff( hid_t table_id, + size_t bufflen, + void * buff ); +#endif /* VLPT_REMOVED */ + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Resources/windows-libs/HDF5/include/H5PacketTable.h b/Resources/windows-libs/HDF5/include/H5PacketTable.h new file mode 100644 index 0000000000000000000000000000000000000000..5f9a21339f4bdf6b1211c139d37b45dcc215ab75 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5PacketTable.h @@ -0,0 +1,244 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* Packet Table wrapper classes + * + * Wraps the H5PT Packet Table C functions in C++ objects + * + * Nat Furrer and James Laird + * February 2004 + */ + +#ifndef H5PTWRAP_H +#define H5PTWRAP_H + +/* Public HDF5 header */ +#include "hdf5.h" + +#include "H5PTpublic.h" +#include "H5api_adpt.h" + +class H5_HLCPPDLL PacketTable +{ +public: + /* Null constructor + * Sets table_id to "invalid" + */ + PacketTable() {table_id = H5I_BADID;} + + /* "Open" Constructor + * Opens an existing packet table, which can contain either fixed-length or + * variable-length packets. + */ + PacketTable(hid_t fileID, char* name); + + /* Destructor + * Cleans up the packet table + */ + ~PacketTable(); + + /* IsValid + * Returns true if this packet table is valid, false otherwise. + * Use this after the constructor to ensure HDF did not have + * any trouble making or opening the packet table. + */ + bool IsValid(); + +#ifdef VLPT_REMOVED + /* IsVariableLength + * Return 1 if this packet table is a Variable Length packet table, + * return 0 if it is Fixed Length. Returns -1 if the table is + * invalid (not open). + */ + int IsVariableLength(); +#endif /* VLPT_REMOVED */ + + /* ResetIndex + * Sets the "current packet" index to point to the first packet in the + * packet table + */ + void ResetIndex(); + + /* SetIndex + * Sets the current packet to point to the packet specified by index. + * Returns 0 on success, negative on failure (if index is out of bounds) + */ + int SetIndex(hsize_t index); + + /* GetIndex + * Returns the position of the current packet. + * On failure, returns 0 and error is set to negative. + */ + hsize_t GetIndex(int& error); + + /* GetPacketCount + * Returns the number of packets in the packet table. Error + * is set to 0 on success. On failure, returns 0 and + * error is set to negative. + */ + hsize_t GetPacketCount(int& error); + + hsize_t GetPacketCount() + { + int ignoreError; + return GetPacketCount(ignoreError); + } + +protected: + hid_t table_id; +}; + +class H5_HLCPPDLL FL_PacketTable : virtual public PacketTable +{ +public: + /* Constructor + * Creates a packet table in which to store fixed length packets. + * Takes the ID of the file the packet table will be created in, the name of + * the packet table, the ID of the datatype of the set, the size + * of a memory chunk used in chunking, and the desired compression level + * (0-9, or -1 for no compression). + */ + FL_PacketTable(hid_t fileID, char* name, hid_t dtypeID, hsize_t chunkSize, int compression = -1); + + /* "Open" Constructor + * Opens an existing fixed-length packet table. + * Fails if the packet table specified is variable-length. + */ + FL_PacketTable(hid_t fileID, char* name); + + /* AppendPacket + * Adds a single packet to the packet table. Takes a pointer + * to the location of the data in memory. + * Returns 0 on success, negative on failure + */ + int AppendPacket(void * data); + + /* AppendPackets (multiple packets) + * Adds multiple packets to the packet table. Takes the number of packets + * to be added and a pointer to their location in memory. + * Returns 0 on success, -1 on failure. + */ + int AppendPackets(size_t numPackets, void * data); + + /* GetPacket (indexed) + * Gets a single packet from the packet table. Takes the index + * of the packet (with 0 being the first packet) and a pointer + * to memory where the data should be stored. + * Returns 0 on success, negative on failure + */ + int GetPacket(hsize_t index, void * data); + + /* GetPackets (multiple packets) + * Gets multiple packets at once, all packets between + * startIndex and endIndex inclusive. Also takes a pointer to + * the memory where these packets should be stored. + * Returns 0 on success, negative on failure. + */ + int GetPackets(hsize_t startIndex, hsize_t endIndex, void * data); + + /* GetNextPacket (single packet) + * Gets the next packet in the packet table. Takes a pointer to + * memory where the packet should be stored. + * Returns 0 on success, negative on failure. Index + * is not advanced to the next packet on failure. + */ + int GetNextPacket(void * data); + + /* GetNextPackets (multiple packets) + * Gets the next numPackets packets in the packet table. Takes a + * pointer to memory where these packets should be stored. + * Returns 0 on success, negative on failure. Index + * is not advanced on failure. + */ + int GetNextPackets(size_t numPackets, void * data); +}; + +#ifdef VLPT_REMOVED +class H5_HLCPPDLL VL_PacketTable : virtual public PacketTable +{ +public: + /* Constructor + * Creates a packet table in which to store variable length packets. + * Takes the ID of the file the packet table will be created in, the name of + * the packet table, and the size of a memory chunk used in chunking. + */ + VL_PacketTable(hid_t fileID, char* name, hsize_t chunkSize); + + /* "Open" Constructor + * Opens an existing variable-length packet table. + * Fails if the packet table specified is fixed-length. + */ + VL_PacketTable(hid_t fileID, char* name); + + /* AppendPacket + * Adds a single packet of any length to the packet table. + * Takes a pointer to the location of the data in memory and the length of the data + * in bytes. + * Returns 0 on success, negative on failure. + */ + int AppendPacket(void * data, size_t length); + + /* AppendPackets (multiple packets) + * Adds multiple variable-length packets to the packet table. Takes the + * number of packets to be added and a pointer to an array of + * hvl_t structs in memory. + * Returns 0 on success, negative on failure. + */ + int AppendPackets(size_t numPackets, hvl_t * data); + + /* GetPacket (indexed) + * Gets a single variable-length packet from the packet table. Takes + * the index of the packet (with 0 being the first packet) and a pointer + * to a hvl_t struct in which to store the packet's size and location. + * Returns 0 on success, negative on failure. + */ + int GetPacket(hsize_t index, hvl_t * data); + + /* GetPackets (multiple packets) + * Gets multiple variable-length packets at once, all packets between + * startIndex and endIndex inclusive. Takes a pointer to an array + * of hvl_t structs in memory in which to store pointers to the packets. + * Returns 0 on success, negative on failure. + */ + int GetPackets(hsize_t startIndex, hsize_t endIndex, hvl_t * data); + + /* GetNextPacket (single packet) + * Gets the next packet in the packet table. Takes a pointer to + * an hvl_t struct where the packet should be stored. + * Returns 0 on success, negative on failure. Index + * is not advanced to the next packet on failure. + */ + int GetNextPacket(hvl_t * data); + + /* GetNextPackets (multiple packets) + * Gets the next numPackets packets in the packet table. Takes a + * pointer to an array of hvl_t structs where pointers to the packets + * should be stored. + * Returns 0 on success, negative on failure. Index + * is not advanced on failure. + */ + int GetNextPackets(size_t numPackets, hvl_t * data); + + /* FreeReadbuff + * Frees the buffers created when variable-length packets are read. + * Takes the number of hvl_t structs to be freed and a pointer to their + * location in memory. + * Returns 0 on success, negative on error. + */ + int FreeReadbuff(size_t numStructs, hvl_t * buffer); +}; +#endif /* VLPT_REMOVED */ + +#endif /* H5PTWRAP_H */ diff --git a/Resources/windows-libs/HDF5/include/H5Ppkg.h b/Resources/windows-libs/HDF5/include/H5Ppkg.h new file mode 100644 index 0000000000000000000000000000000000000000..293420ecb5bcf616446b205b78f200f3173a73d0 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Ppkg.h @@ -0,0 +1,209 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Friday, November 16, 2001 + * + * Purpose: This file contains declarations which are visible only within + * the H5P package. Source files outside the H5P package should + * include H5Pprivate.h instead. + */ +#ifndef H5P_PACKAGE +#error "Do not include this file outside the H5P package!" +#endif + +#ifndef _H5Ppkg_H +#define _H5Ppkg_H + +/* Get package's private header */ +#include "H5Pprivate.h" + +/* Other private headers needed by this file */ +#include "H5SLprivate.h" /* Skip lists */ + +/**************************/ +/* Package Private Macros */ +/**************************/ + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + +/* Define enum for type of object that property is within */ +typedef enum { + H5P_PROP_WITHIN_UNKNOWN=0, /* Property container is unknown */ + H5P_PROP_WITHIN_LIST, /* Property is within a list */ + H5P_PROP_WITHIN_CLASS /* Property is within a class */ +} H5P_prop_within_t; + +/* Define enum for modifications to class */ +typedef enum { + H5P_MOD_ERR=(-1), /* Indicate an error */ + H5P_MOD_INC_CLS, /* Increment the dependant class count*/ + H5P_MOD_DEC_CLS, /* Decrement the dependant class count*/ + H5P_MOD_INC_LST, /* Increment the dependant list count*/ + H5P_MOD_DEC_LST, /* Decrement the dependant list count*/ + H5P_MOD_INC_REF, /* Increment the ID reference count*/ + H5P_MOD_DEC_REF, /* Decrement the ID reference count*/ + H5P_MOD_MAX /* Upper limit on class modifications */ +} H5P_class_mod_t; + +/* Define structure to hold property information */ +typedef struct H5P_genprop_t { + /* Values for this property */ + char *name; /* Name of property */ + size_t size; /* Size of property value */ + void *value; /* Pointer to property value */ + H5P_prop_within_t type; /* Type of object the property is within */ + hbool_t shared_name; /* Whether the name is shared or not */ + + /* Callback function pointers & info */ + H5P_prp_create_func_t create; /* Function to call when a property is created */ + H5P_prp_set_func_t set; /* Function to call when a property value is set */ + H5P_prp_get_func_t get; /* Function to call when a property value is retrieved */ + H5P_prp_delete_func_t del; /* Function to call when a property is deleted */ + H5P_prp_copy_func_t copy; /* Function to call when a property is copied */ + H5P_prp_compare_func_t cmp; /* Function to call when a property is compared */ + H5P_prp_close_func_t close; /* Function to call when a property is closed */ +} H5P_genprop_t; + +/* Define structure to hold class information */ +struct H5P_genclass_t { + struct H5P_genclass_t *parent; /* Pointer to parent class */ + char *name; /* Name of property list class */ + H5P_plist_type_t type; /* Type of property */ + size_t nprops; /* Number of properties in class */ + unsigned plists; /* Number of property lists that have been created since the last modification to the class */ + unsigned classes; /* Number of classes that have been derived since the last modification to the class */ + unsigned ref_count; /* Number of oustanding ID's open on this class object */ + hbool_t deleted; /* Whether this class has been deleted and is waiting for dependent classes & proplists to close */ + unsigned revision; /* Revision number of a particular class (global) */ + H5SL_t *props; /* Skip list containing properties */ + + /* Callback function pointers & info */ + H5P_cls_create_func_t create_func; /* Function to call when a property list is created */ + void *create_data; /* Pointer to user data to pass along to create callback */ + H5P_cls_copy_func_t copy_func; /* Function to call when a property list is copied */ + void *copy_data; /* Pointer to user data to pass along to copy callback */ + H5P_cls_close_func_t close_func; /* Function to call when a property list is closed */ + void *close_data; /* Pointer to user data to pass along to close callback */ +}; + +/* Define structure to hold property list information */ +struct H5P_genplist_t { + H5P_genclass_t *pclass; /* Pointer to class info */ + hid_t plist_id; /* Copy of the property list ID (for use in close callback) */ + size_t nprops; /* Number of properties in class */ + hbool_t class_init; /* Whether the class initialization callback finished successfully */ + H5SL_t *del; /* Skip list containing names of deleted properties */ + H5SL_t *props; /* Skip list containing properties */ +}; + +/* Function pointer for library classes with properties to register */ +typedef herr_t (*H5P_init_class_op_t)(H5P_genclass_t *pclass); +typedef herr_t (*H5P_reg_prop_func_t)(H5P_genclass_t *pclass); + +/* + * Each library property list class has a variable of this type that contains + * class variables and methods used to initialize the class. + */ +typedef struct H5P_libclass_t { + const char *name; /* Class name */ + H5P_plist_type_t type; /* Class type */ + + hid_t const * const par_class_id; /* Pointer to global parent class property list class ID */ + hid_t * const class_id; /* Pointer to global property list class ID */ + hid_t * const def_plist_id; /* Pointer to global default property list ID */ + H5P_reg_prop_func_t reg_prop_func; /* Register class's properties */ + + /* Class callback function pointers & info */ + H5P_cls_create_func_t create_func; /* Function to call when a property list is created */ + void *create_data; /* Pointer to user data to pass along to create callback */ + H5P_cls_copy_func_t copy_func; /* Function to call when a property list is copied */ + void *copy_data; /* Pointer to user data to pass along to copy callback */ + H5P_cls_close_func_t close_func; /* Function to call when a property list is closed */ + void *close_data; /* Pointer to user data to pass along to close callback */ +} H5P_libclass_t; + +/* Property list/class iterator callback function pointer */ +typedef int (*H5P_iterate_int_t)(H5P_genprop_t *prop, void *udata); + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +/* Private functions, not part of the publicly documented API */ +H5_DLL herr_t H5P__term_pub_interface(void); +H5_DLL herr_t H5P__term_deprec_interface(void); +H5_DLL H5P_genclass_t *H5P_create_class(H5P_genclass_t *par_class, + const char *name, H5P_plist_type_t type, + H5P_cls_create_func_t cls_create, void *create_data, + H5P_cls_copy_func_t cls_copy, void *copy_data, + H5P_cls_close_func_t cls_close, void *close_data); +H5_DLL H5P_genclass_t *H5P_copy_pclass(H5P_genclass_t *pclass); +H5_DLL herr_t H5P_register_real(H5P_genclass_t *pclass, const char *name, size_t size, + const void *def_value, H5P_prp_create_func_t prp_create, H5P_prp_set_func_t prp_set, + H5P_prp_get_func_t prp_get, H5P_prp_delete_func_t prp_delete, + H5P_prp_copy_func_t prp_copy, H5P_prp_compare_func_t prp_cmp, + H5P_prp_close_func_t prp_close); +H5_DLL herr_t H5P_register(H5P_genclass_t **pclass, const char *name, size_t size, + const void *def_value, H5P_prp_create_func_t prp_create, H5P_prp_set_func_t prp_set, + H5P_prp_get_func_t prp_get, H5P_prp_delete_func_t prp_delete, + H5P_prp_copy_func_t prp_copy, H5P_prp_compare_func_t prp_cmp, + H5P_prp_close_func_t prp_close); +H5_DLL herr_t H5P_add_prop(H5SL_t *props, H5P_genprop_t *prop); +H5_DLL herr_t H5P_access_class(H5P_genclass_t *pclass, H5P_class_mod_t mod); +H5_DLL htri_t H5P_exist_pclass(H5P_genclass_t *pclass, const char *name); +H5_DLL herr_t H5P_get_size_plist(const H5P_genplist_t *plist, const char *name, + size_t *size); +H5_DLL herr_t H5P_get_size_pclass(H5P_genclass_t *pclass, const char *name, + size_t *size); +H5_DLL H5P_genclass_t *H5P_get_class(const H5P_genplist_t *plist); +H5_DLL herr_t H5P_get_nprops_plist(const H5P_genplist_t *plist, size_t *nprops); +H5_DLL int H5P_cmp_class(const H5P_genclass_t *pclass1, const H5P_genclass_t *pclass2); +H5_DLL herr_t H5P_cmp_plist(const H5P_genplist_t *plist1, const H5P_genplist_t *plist2, + int *cmp_ret); +H5_DLL int H5P_iterate_plist(const H5P_genplist_t *plist, hbool_t iter_all_prop, + int *idx, H5P_iterate_int_t iter_func, void *iter_data); +H5_DLL int H5P_iterate_pclass(const H5P_genclass_t *pclass, int *idx, + H5P_iterate_int_t iter_func, void *iter_data); +H5_DLL herr_t H5P_copy_prop_plist(hid_t dst_id, hid_t src_id, const char *name); +H5_DLL herr_t H5P_copy_prop_pclass(hid_t dst_id, hid_t src_id, const char *name); +H5_DLL herr_t H5P_unregister(H5P_genclass_t *pclass, const char *name); +H5_DLL char *H5P_get_class_path(H5P_genclass_t *pclass); +H5_DLL H5P_genclass_t *H5P_open_class_path(const char *path); +H5_DLL H5P_genclass_t *H5P_get_class_parent(const H5P_genclass_t *pclass); +H5_DLL herr_t H5P_close_class(void *_pclass); +H5_DLL herr_t H5P_get_filter(const H5Z_filter_info_t *filter, + unsigned int *flags, size_t *cd_nelmts, unsigned cd_values[], + size_t namelen, char name[], unsigned *filter_config); +H5_DLL H5P_genprop_t *H5P__find_prop_plist(const H5P_genplist_t *plist, const char *name); + +/* Testing functions */ +#ifdef H5P_TESTING +H5_DLL char *H5P_get_class_path_test(hid_t pclass_id); +H5_DLL hid_t H5P_open_class_path_test(const char *path); +H5_DLL herr_t H5P_reset_external_file_test(hid_t dcpl_id); +#endif /* H5P_TESTING */ + +#endif /* _H5Ppkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Ppublic.h b/Resources/windows-libs/HDF5/include/H5Ppublic.h new file mode 100644 index 0000000000000000000000000000000000000000..1d8ced44c023d4c8b5ee6ddc1aa5af9e91b03667 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Ppublic.h @@ -0,0 +1,495 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains function prototypes for each exported function in the + * H5P module. + */ +#ifndef _H5Ppublic_H +#define _H5Ppublic_H + +/* System headers needed by this file */ + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5ACpublic.h" +#include "H5Dpublic.h" +#include "H5Fpublic.h" +#include "H5FDpublic.h" +#include "H5Ipublic.h" +#include "H5Lpublic.h" +#include "H5Opublic.h" +#include "H5MMpublic.h" +#include "H5Tpublic.h" +#include "H5Zpublic.h" + + +/*****************/ +/* Public Macros */ +/*****************/ + +/* When this header is included from a private HDF5 header, don't make calls to H5open() */ +#undef H5OPEN +#ifndef _H5private_H +#define H5OPEN H5open(), +#else /* _H5private_H */ +#define H5OPEN +#endif /* _H5private_H */ + +/* + * The library's property list classes + */ + +#define H5P_ROOT (H5OPEN H5P_CLS_ROOT_g) +#define H5P_OBJECT_CREATE (H5OPEN H5P_CLS_OBJECT_CREATE_g) +#define H5P_FILE_CREATE (H5OPEN H5P_CLS_FILE_CREATE_g) +#define H5P_FILE_ACCESS (H5OPEN H5P_CLS_FILE_ACCESS_g) +#define H5P_DATASET_CREATE (H5OPEN H5P_CLS_DATASET_CREATE_g) +#define H5P_DATASET_ACCESS (H5OPEN H5P_CLS_DATASET_ACCESS_g) +#define H5P_DATASET_XFER (H5OPEN H5P_CLS_DATASET_XFER_g) +#define H5P_FILE_MOUNT (H5OPEN H5P_CLS_FILE_MOUNT_g) +#define H5P_GROUP_CREATE (H5OPEN H5P_CLS_GROUP_CREATE_g) +#define H5P_GROUP_ACCESS (H5OPEN H5P_CLS_GROUP_ACCESS_g) +#define H5P_DATATYPE_CREATE (H5OPEN H5P_CLS_DATATYPE_CREATE_g) +#define H5P_DATATYPE_ACCESS (H5OPEN H5P_CLS_DATATYPE_ACCESS_g) +#define H5P_STRING_CREATE (H5OPEN H5P_CLS_STRING_CREATE_g) +#define H5P_ATTRIBUTE_CREATE (H5OPEN H5P_CLS_ATTRIBUTE_CREATE_g) +#define H5P_OBJECT_COPY (H5OPEN H5P_CLS_OBJECT_COPY_g) +#define H5P_LINK_CREATE (H5OPEN H5P_CLS_LINK_CREATE_g) +#define H5P_LINK_ACCESS (H5OPEN H5P_CLS_LINK_ACCESS_g) + +/* + * The library's default property lists + */ +#define H5P_FILE_CREATE_DEFAULT (H5OPEN H5P_LST_FILE_CREATE_g) +#define H5P_FILE_ACCESS_DEFAULT (H5OPEN H5P_LST_FILE_ACCESS_g) +#define H5P_DATASET_CREATE_DEFAULT (H5OPEN H5P_LST_DATASET_CREATE_g) +#define H5P_DATASET_ACCESS_DEFAULT (H5OPEN H5P_LST_DATASET_ACCESS_g) +#define H5P_DATASET_XFER_DEFAULT (H5OPEN H5P_LST_DATASET_XFER_g) +#define H5P_FILE_MOUNT_DEFAULT (H5OPEN H5P_LST_FILE_MOUNT_g) +#define H5P_GROUP_CREATE_DEFAULT (H5OPEN H5P_LST_GROUP_CREATE_g) +#define H5P_GROUP_ACCESS_DEFAULT (H5OPEN H5P_LST_GROUP_ACCESS_g) +#define H5P_DATATYPE_CREATE_DEFAULT (H5OPEN H5P_LST_DATATYPE_CREATE_g) +#define H5P_DATATYPE_ACCESS_DEFAULT (H5OPEN H5P_LST_DATATYPE_ACCESS_g) +#define H5P_ATTRIBUTE_CREATE_DEFAULT (H5OPEN H5P_LST_ATTRIBUTE_CREATE_g) +#define H5P_OBJECT_COPY_DEFAULT (H5OPEN H5P_LST_OBJECT_COPY_g) +#define H5P_LINK_CREATE_DEFAULT (H5OPEN H5P_LST_LINK_CREATE_g) +#define H5P_LINK_ACCESS_DEFAULT (H5OPEN H5P_LST_LINK_ACCESS_g) + +/* Common creation order flags (for links in groups and attributes on objects) */ +#define H5P_CRT_ORDER_TRACKED 0x0001 +#define H5P_CRT_ORDER_INDEXED 0x0002 + +#ifdef __cplusplus +extern "C" { +#endif + +/*******************/ +/* Public Typedefs */ +/*******************/ + + +/* Define property list class callback function pointer types */ +typedef herr_t (*H5P_cls_create_func_t)(hid_t prop_id, void *create_data); +typedef herr_t (*H5P_cls_copy_func_t)(hid_t new_prop_id, hid_t old_prop_id, + void *copy_data); +typedef herr_t (*H5P_cls_close_func_t)(hid_t prop_id, void *close_data); + +/* Define property list callback function pointer types */ +typedef herr_t (*H5P_prp_cb1_t)(const char *name, size_t size, void *value); +typedef herr_t (*H5P_prp_cb2_t)(hid_t prop_id, const char *name, size_t size, void *value); +typedef H5P_prp_cb1_t H5P_prp_create_func_t; +typedef H5P_prp_cb2_t H5P_prp_set_func_t; +typedef H5P_prp_cb2_t H5P_prp_get_func_t; +typedef H5P_prp_cb2_t H5P_prp_delete_func_t; +typedef H5P_prp_cb1_t H5P_prp_copy_func_t; +typedef int (*H5P_prp_compare_func_t)(const void *value1, const void *value2, size_t size); +typedef H5P_prp_cb1_t H5P_prp_close_func_t; + +/* Define property list iteration function type */ +typedef herr_t (*H5P_iterate_t)(hid_t id, const char *name, void *iter_data); + +/* Actual IO mode property */ +typedef enum H5D_mpio_actual_chunk_opt_mode_t { + /* The default value, H5D_MPIO_NO_CHUNK_OPTIMIZATION, is used for all I/O + * operations that do not use chunk optimizations, including non-collective + * I/O and contiguous collective I/O. + */ + H5D_MPIO_NO_CHUNK_OPTIMIZATION = 0, + H5D_MPIO_LINK_CHUNK, + H5D_MPIO_MULTI_CHUNK +} H5D_mpio_actual_chunk_opt_mode_t; + +typedef enum H5D_mpio_actual_io_mode_t { + /* The following four values are conveniently defined as a bit field so that + * we can switch from the default to indpendent or collective and then to + * mixed without having to check the original value. + * + * NO_COLLECTIVE means that either collective I/O wasn't requested or that + * no I/O took place. + * + * CHUNK_INDEPENDENT means that collective I/O was requested, but the + * chunk optimization scheme chose independent I/O for each chunk. + */ + H5D_MPIO_NO_COLLECTIVE = 0x0, + H5D_MPIO_CHUNK_INDEPENDENT = 0x1, + H5D_MPIO_CHUNK_COLLECTIVE = 0x2, + H5D_MPIO_CHUNK_MIXED = 0x1 | 0x2, + + /* The contiguous case is separate from the bit field. */ + H5D_MPIO_CONTIGUOUS_COLLECTIVE = 0x4 +} H5D_mpio_actual_io_mode_t; + +/* Broken collective IO property */ +typedef enum H5D_mpio_no_collective_cause_t { + H5D_MPIO_COLLECTIVE = 0x00, + H5D_MPIO_SET_INDEPENDENT = 0x01, + H5D_MPIO_DATATYPE_CONVERSION = 0x02, + H5D_MPIO_DATA_TRANSFORMS = 0x04, + H5D_MPIO_MPI_OPT_TYPES_ENV_VAR_DISABLED = 0x08, + H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES = 0x10, + H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET = 0x20, + H5D_MPIO_FILTERS = 0x40 +} H5D_mpio_no_collective_cause_t; + +/********************/ +/* Public Variables */ +/********************/ + +/* Property list class IDs */ +/* (Internal to library, do not use! Use macros above) */ +H5_DLLVAR hid_t H5P_CLS_ROOT_g; +H5_DLLVAR hid_t H5P_CLS_OBJECT_CREATE_g; +H5_DLLVAR hid_t H5P_CLS_FILE_CREATE_g; +H5_DLLVAR hid_t H5P_CLS_FILE_ACCESS_g; +H5_DLLVAR hid_t H5P_CLS_DATASET_CREATE_g; +H5_DLLVAR hid_t H5P_CLS_DATASET_ACCESS_g; +H5_DLLVAR hid_t H5P_CLS_DATASET_XFER_g; +H5_DLLVAR hid_t H5P_CLS_FILE_MOUNT_g; +H5_DLLVAR hid_t H5P_CLS_GROUP_CREATE_g; +H5_DLLVAR hid_t H5P_CLS_GROUP_ACCESS_g; +H5_DLLVAR hid_t H5P_CLS_DATATYPE_CREATE_g; +H5_DLLVAR hid_t H5P_CLS_DATATYPE_ACCESS_g; +H5_DLLVAR hid_t H5P_CLS_STRING_CREATE_g; +H5_DLLVAR hid_t H5P_CLS_ATTRIBUTE_CREATE_g; +H5_DLLVAR hid_t H5P_CLS_OBJECT_COPY_g; +H5_DLLVAR hid_t H5P_CLS_LINK_CREATE_g; +H5_DLLVAR hid_t H5P_CLS_LINK_ACCESS_g; + +/* Default roperty list IDs */ +/* (Internal to library, do not use! Use macros above) */ +H5_DLLVAR hid_t H5P_LST_FILE_CREATE_g; +H5_DLLVAR hid_t H5P_LST_FILE_ACCESS_g; +H5_DLLVAR hid_t H5P_LST_DATASET_CREATE_g; +H5_DLLVAR hid_t H5P_LST_DATASET_ACCESS_g; +H5_DLLVAR hid_t H5P_LST_DATASET_XFER_g; +H5_DLLVAR hid_t H5P_LST_FILE_MOUNT_g; +H5_DLLVAR hid_t H5P_LST_GROUP_CREATE_g; +H5_DLLVAR hid_t H5P_LST_GROUP_ACCESS_g; +H5_DLLVAR hid_t H5P_LST_DATATYPE_CREATE_g; +H5_DLLVAR hid_t H5P_LST_DATATYPE_ACCESS_g; +H5_DLLVAR hid_t H5P_LST_ATTRIBUTE_CREATE_g; +H5_DLLVAR hid_t H5P_LST_OBJECT_COPY_g; +H5_DLLVAR hid_t H5P_LST_LINK_CREATE_g; +H5_DLLVAR hid_t H5P_LST_LINK_ACCESS_g; + +/*********************/ +/* Public Prototypes */ +/*********************/ + +/* Generic property list routines */ +H5_DLL hid_t H5Pcreate_class(hid_t parent, const char *name, + H5P_cls_create_func_t cls_create, void *create_data, + H5P_cls_copy_func_t cls_copy, void *copy_data, + H5P_cls_close_func_t cls_close, void *close_data); +H5_DLL char *H5Pget_class_name(hid_t pclass_id); +H5_DLL hid_t H5Pcreate(hid_t cls_id); +H5_DLL herr_t H5Pregister2(hid_t cls_id, const char *name, size_t size, + void *def_value, H5P_prp_create_func_t prp_create, + H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get, + H5P_prp_delete_func_t prp_del, H5P_prp_copy_func_t prp_copy, + H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close); +H5_DLL herr_t H5Pinsert2(hid_t plist_id, const char *name, size_t size, + void *value, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get, + H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy, + H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close); +H5_DLL herr_t H5Pset(hid_t plist_id, const char *name, void *value); +H5_DLL htri_t H5Pexist(hid_t plist_id, const char *name); +H5_DLL herr_t H5Pget_size(hid_t id, const char *name, size_t *size); +H5_DLL herr_t H5Pget_nprops(hid_t id, size_t *nprops); +H5_DLL hid_t H5Pget_class(hid_t plist_id); +H5_DLL hid_t H5Pget_class_parent(hid_t pclass_id); +H5_DLL herr_t H5Pget(hid_t plist_id, const char *name, void * value); +H5_DLL htri_t H5Pequal(hid_t id1, hid_t id2); +H5_DLL htri_t H5Pisa_class(hid_t plist_id, hid_t pclass_id); +H5_DLL int H5Piterate(hid_t id, int *idx, H5P_iterate_t iter_func, + void *iter_data); +H5_DLL herr_t H5Pcopy_prop(hid_t dst_id, hid_t src_id, const char *name); +H5_DLL herr_t H5Premove(hid_t plist_id, const char *name); +H5_DLL herr_t H5Punregister(hid_t pclass_id, const char *name); +H5_DLL herr_t H5Pclose_class(hid_t plist_id); +H5_DLL herr_t H5Pclose(hid_t plist_id); +H5_DLL hid_t H5Pcopy(hid_t plist_id); + +/* Object creation property list (OCPL) routines */ +H5_DLL herr_t H5Pset_attr_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense); +H5_DLL herr_t H5Pget_attr_phase_change(hid_t plist_id, unsigned *max_compact, unsigned *min_dense); +H5_DLL herr_t H5Pset_attr_creation_order(hid_t plist_id, unsigned crt_order_flags); +H5_DLL herr_t H5Pget_attr_creation_order(hid_t plist_id, unsigned *crt_order_flags); +H5_DLL herr_t H5Pset_obj_track_times(hid_t plist_id, hbool_t track_times); +H5_DLL herr_t H5Pget_obj_track_times(hid_t plist_id, hbool_t *track_times); +H5_DLL herr_t H5Pmodify_filter(hid_t plist_id, H5Z_filter_t filter, + unsigned int flags, size_t cd_nelmts, + const unsigned int cd_values[/*cd_nelmts*/]); +H5_DLL herr_t H5Pset_filter(hid_t plist_id, H5Z_filter_t filter, + unsigned int flags, size_t cd_nelmts, + const unsigned int c_values[]); +H5_DLL int H5Pget_nfilters(hid_t plist_id); +H5_DLL H5Z_filter_t H5Pget_filter2(hid_t plist_id, unsigned filter, + unsigned int *flags/*out*/, + size_t *cd_nelmts/*out*/, + unsigned cd_values[]/*out*/, + size_t namelen, char name[], + unsigned *filter_config /*out*/); +H5_DLL herr_t H5Pget_filter_by_id2(hid_t plist_id, H5Z_filter_t id, + unsigned int *flags/*out*/, size_t *cd_nelmts/*out*/, + unsigned cd_values[]/*out*/, size_t namelen, char name[]/*out*/, + unsigned *filter_config/*out*/); +H5_DLL htri_t H5Pall_filters_avail(hid_t plist_id); +H5_DLL herr_t H5Premove_filter(hid_t plist_id, H5Z_filter_t filter); +H5_DLL herr_t H5Pset_deflate(hid_t plist_id, unsigned aggression); +H5_DLL herr_t H5Pset_fletcher32(hid_t plist_id); + +/* File creation property list (FCPL) routines */ +H5_DLL herr_t H5Pget_version(hid_t plist_id, unsigned *boot/*out*/, + unsigned *freelist/*out*/, unsigned *stab/*out*/, + unsigned *shhdr/*out*/); +H5_DLL herr_t H5Pset_userblock(hid_t plist_id, hsize_t size); +H5_DLL herr_t H5Pget_userblock(hid_t plist_id, hsize_t *size); +H5_DLL herr_t H5Pset_sizes(hid_t plist_id, size_t sizeof_addr, + size_t sizeof_size); +H5_DLL herr_t H5Pget_sizes(hid_t plist_id, size_t *sizeof_addr/*out*/, + size_t *sizeof_size/*out*/); +H5_DLL herr_t H5Pset_sym_k(hid_t plist_id, unsigned ik, unsigned lk); +H5_DLL herr_t H5Pget_sym_k(hid_t plist_id, unsigned *ik/*out*/, unsigned *lk/*out*/); +H5_DLL herr_t H5Pset_istore_k(hid_t plist_id, unsigned ik); +H5_DLL herr_t H5Pget_istore_k(hid_t plist_id, unsigned *ik/*out*/); +H5_DLL herr_t H5Pset_shared_mesg_nindexes(hid_t plist_id, unsigned nindexes); +H5_DLL herr_t H5Pget_shared_mesg_nindexes(hid_t plist_id, unsigned *nindexes); +H5_DLL herr_t H5Pset_shared_mesg_index(hid_t plist_id, unsigned index_num, unsigned mesg_type_flags, unsigned min_mesg_size); +H5_DLL herr_t H5Pget_shared_mesg_index(hid_t plist_id, unsigned index_num, unsigned *mesg_type_flags, unsigned *min_mesg_size); +H5_DLL herr_t H5Pset_shared_mesg_phase_change(hid_t plist_id, unsigned max_list, unsigned min_btree); +H5_DLL herr_t H5Pget_shared_mesg_phase_change(hid_t plist_id, unsigned *max_list, unsigned *min_btree); + +/* File access property list (FAPL) routines */ +H5_DLL herr_t H5Pset_alignment(hid_t fapl_id, hsize_t threshold, + hsize_t alignment); +H5_DLL herr_t H5Pget_alignment(hid_t fapl_id, hsize_t *threshold/*out*/, + hsize_t *alignment/*out*/); +H5_DLL herr_t H5Pset_driver(hid_t plist_id, hid_t driver_id, + const void *driver_info); +H5_DLL hid_t H5Pget_driver(hid_t plist_id); +H5_DLL void *H5Pget_driver_info(hid_t plist_id); +H5_DLL herr_t H5Pset_family_offset(hid_t fapl_id, hsize_t offset); +H5_DLL herr_t H5Pget_family_offset(hid_t fapl_id, hsize_t *offset); +H5_DLL herr_t H5Pset_multi_type(hid_t fapl_id, H5FD_mem_t type); +H5_DLL herr_t H5Pget_multi_type(hid_t fapl_id, H5FD_mem_t *type); +H5_DLL herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, + size_t rdcc_nslots, size_t rdcc_nbytes, + double rdcc_w0); +H5_DLL herr_t H5Pget_cache(hid_t plist_id, + int *mdc_nelmts, /* out */ + size_t *rdcc_nslots/*out*/, + size_t *rdcc_nbytes/*out*/, double *rdcc_w0); +H5_DLL herr_t H5Pset_mdc_config(hid_t plist_id, + H5AC_cache_config_t * config_ptr); +H5_DLL herr_t H5Pget_mdc_config(hid_t plist_id, + H5AC_cache_config_t * config_ptr); /* out */ +H5_DLL herr_t H5Pset_gc_references(hid_t fapl_id, unsigned gc_ref); +H5_DLL herr_t H5Pget_gc_references(hid_t fapl_id, unsigned *gc_ref/*out*/); +H5_DLL herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t degree); +H5_DLL herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *degree); +H5_DLL herr_t H5Pset_meta_block_size(hid_t fapl_id, hsize_t size); +H5_DLL herr_t H5Pget_meta_block_size(hid_t fapl_id, hsize_t *size/*out*/); +H5_DLL herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size); +H5_DLL herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size/*out*/); +H5_DLL herr_t H5Pset_small_data_block_size(hid_t fapl_id, hsize_t size); +H5_DLL herr_t H5Pget_small_data_block_size(hid_t fapl_id, hsize_t *size/*out*/); +H5_DLL herr_t H5Pset_libver_bounds(hid_t plist_id, H5F_libver_t low, + H5F_libver_t high); +H5_DLL herr_t H5Pget_libver_bounds(hid_t plist_id, H5F_libver_t *low, + H5F_libver_t *high); +H5_DLL herr_t H5Pset_elink_file_cache_size(hid_t plist_id, unsigned efc_size); +H5_DLL herr_t H5Pget_elink_file_cache_size(hid_t plist_id, unsigned *efc_size); +H5_DLL herr_t H5Pset_file_image(hid_t fapl_id, void *buf_ptr, size_t buf_len); +H5_DLL herr_t H5Pget_file_image(hid_t fapl_id, void **buf_ptr_ptr, size_t *buf_len_ptr); +H5_DLL herr_t H5Pset_file_image_callbacks(hid_t fapl_id, + H5FD_file_image_callbacks_t *callbacks_ptr); +H5_DLL herr_t H5Pget_file_image_callbacks(hid_t fapl_id, + H5FD_file_image_callbacks_t *callbacks_ptr); + +H5_DLL herr_t H5Pset_core_write_tracking(hid_t fapl_id, hbool_t is_enabled, size_t page_size); +H5_DLL herr_t H5Pget_core_write_tracking(hid_t fapl_id, hbool_t *is_enabled, size_t *page_size); + +/* Dataset creation property list (DCPL) routines */ +H5_DLL herr_t H5Pset_layout(hid_t plist_id, H5D_layout_t layout); +H5_DLL H5D_layout_t H5Pget_layout(hid_t plist_id); +H5_DLL herr_t H5Pset_chunk(hid_t plist_id, int ndims, const hsize_t dim[/*ndims*/]); +H5_DLL int H5Pget_chunk(hid_t plist_id, int max_ndims, hsize_t dim[]/*out*/); +H5_DLL herr_t H5Pset_external(hid_t plist_id, const char *name, off_t offset, + hsize_t size); +H5_DLL int H5Pget_external_count(hid_t plist_id); +H5_DLL herr_t H5Pget_external(hid_t plist_id, unsigned idx, size_t name_size, + char *name/*out*/, off_t *offset/*out*/, + hsize_t *size/*out*/); +H5_DLL herr_t H5Pset_szip(hid_t plist_id, unsigned options_mask, unsigned pixels_per_block); +H5_DLL herr_t H5Pset_shuffle(hid_t plist_id); +H5_DLL herr_t H5Pset_nbit(hid_t plist_id); +H5_DLL herr_t H5Pset_scaleoffset(hid_t plist_id, H5Z_SO_scale_type_t scale_type, int scale_factor); +H5_DLL herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id, + const void *value); +H5_DLL herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id, + void *value/*out*/); +H5_DLL herr_t H5Pfill_value_defined(hid_t plist, H5D_fill_value_t *status); +H5_DLL herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t + alloc_time); +H5_DLL herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t + *alloc_time/*out*/); +H5_DLL herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time); +H5_DLL herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t + *fill_time/*out*/); + +/* Dataset access property list (DAPL) routines */ +H5_DLL herr_t H5Pset_chunk_cache(hid_t dapl_id, size_t rdcc_nslots, + size_t rdcc_nbytes, double rdcc_w0); +H5_DLL herr_t H5Pget_chunk_cache(hid_t dapl_id, + size_t *rdcc_nslots/*out*/, + size_t *rdcc_nbytes/*out*/, + double *rdcc_w0/*out*/); + +/* Dataset xfer property list (DXPL) routines */ +H5_DLL herr_t H5Pset_data_transform(hid_t plist_id, const char* expression); +H5_DLL ssize_t H5Pget_data_transform(hid_t plist_id, char* expression /*out*/, size_t size); +H5_DLL herr_t H5Pset_buffer(hid_t plist_id, size_t size, void *tconv, + void *bkg); +H5_DLL size_t H5Pget_buffer(hid_t plist_id, void **tconv/*out*/, + void **bkg/*out*/); +H5_DLL herr_t H5Pset_preserve(hid_t plist_id, hbool_t status); +H5_DLL int H5Pget_preserve(hid_t plist_id); +H5_DLL herr_t H5Pset_edc_check(hid_t plist_id, H5Z_EDC_t check); +H5_DLL H5Z_EDC_t H5Pget_edc_check(hid_t plist_id); +H5_DLL herr_t H5Pset_filter_callback(hid_t plist_id, H5Z_filter_func_t func, + void* op_data); +H5_DLL herr_t H5Pset_btree_ratios(hid_t plist_id, double left, double middle, + double right); +H5_DLL herr_t H5Pget_btree_ratios(hid_t plist_id, double *left/*out*/, + double *middle/*out*/, + double *right/*out*/); +H5_DLL herr_t H5Pset_vlen_mem_manager(hid_t plist_id, + H5MM_allocate_t alloc_func, + void *alloc_info, H5MM_free_t free_func, + void *free_info); +H5_DLL herr_t H5Pget_vlen_mem_manager(hid_t plist_id, + H5MM_allocate_t *alloc_func, + void **alloc_info, + H5MM_free_t *free_func, + void **free_info); +H5_DLL herr_t H5Pset_hyper_vector_size(hid_t fapl_id, size_t size); +H5_DLL herr_t H5Pget_hyper_vector_size(hid_t fapl_id, size_t *size/*out*/); +H5_DLL herr_t H5Pset_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t op, void* operate_data); +H5_DLL herr_t H5Pget_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t *op, void** operate_data); +#ifdef H5_HAVE_PARALLEL +H5_DLL herr_t H5Pget_mpio_actual_chunk_opt_mode(hid_t plist_id, H5D_mpio_actual_chunk_opt_mode_t *actual_chunk_opt_mode); +H5_DLL herr_t H5Pget_mpio_actual_io_mode(hid_t plist_id, H5D_mpio_actual_io_mode_t *actual_io_mode); +H5_DLL herr_t H5Pget_mpio_no_collective_cause(hid_t plist_id, uint32_t *local_no_collective_cause, uint32_t *global_no_collective_cause); +#endif /* H5_HAVE_PARALLEL */ + +/* Link creation property list (LCPL) routines */ +H5_DLL herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd); +H5_DLL herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd /*out*/); + +/* Group creation property list (GCPL) routines */ +H5_DLL herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint); +H5_DLL herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint /*out*/); +H5_DLL herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense); +H5_DLL herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact /*out*/, unsigned *min_dense /*out*/); +H5_DLL herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len); +H5_DLL herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries /* out */, unsigned *est_name_len /* out */); +H5_DLL herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags); +H5_DLL herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags /* out */); + +/* String creation property list (STRCPL) routines */ +H5_DLL herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding); +H5_DLL herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding /*out*/); + +/* Link access property list (LAPL) routines */ +H5_DLL herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks); +H5_DLL herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks); +H5_DLL herr_t H5Pset_elink_prefix(hid_t plist_id, const char *prefix); +H5_DLL ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size); +H5_DLL hid_t H5Pget_elink_fapl(hid_t lapl_id); +H5_DLL herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id); +H5_DLL herr_t H5Pset_elink_acc_flags(hid_t lapl_id, unsigned flags); +H5_DLL herr_t H5Pget_elink_acc_flags(hid_t lapl_id, unsigned *flags); +H5_DLL herr_t H5Pset_elink_cb(hid_t lapl_id, H5L_elink_traverse_t func, void *op_data); +H5_DLL herr_t H5Pget_elink_cb(hid_t lapl_id, H5L_elink_traverse_t *func, void **op_data); + +/* Object copy property list (OCPYPL) routines */ +H5_DLL herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd); +H5_DLL herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd /*out*/); +H5_DLL herr_t H5Padd_merge_committed_dtype_path(hid_t plist_id, const char *path); +H5_DLL herr_t H5Pfree_merge_committed_dtype_paths(hid_t plist_id); +H5_DLL herr_t H5Pset_mcdt_search_cb(hid_t plist_id, H5O_mcdt_search_cb_t func, void *op_data); +H5_DLL herr_t H5Pget_mcdt_search_cb(hid_t plist_id, H5O_mcdt_search_cb_t *func, void **op_data); + +/* Symbols defined for compatibility with previous versions of the HDF5 API. + * + * Use of these symbols is deprecated. + */ +#ifndef H5_NO_DEPRECATED_SYMBOLS + +/* Macros */ + +/* We renamed the "root" of the property list class hierarchy */ +#define H5P_NO_CLASS H5P_ROOT + + +/* Typedefs */ + + +/* Function prototypes */ +H5_DLL herr_t H5Pregister1(hid_t cls_id, const char *name, size_t size, + void *def_value, H5P_prp_create_func_t prp_create, + H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get, + H5P_prp_delete_func_t prp_del, H5P_prp_copy_func_t prp_copy, + H5P_prp_close_func_t prp_close); +H5_DLL herr_t H5Pinsert1(hid_t plist_id, const char *name, size_t size, + void *value, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get, + H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy, + H5P_prp_close_func_t prp_close); +H5_DLL H5Z_filter_t H5Pget_filter1(hid_t plist_id, unsigned filter, + unsigned int *flags/*out*/, size_t *cd_nelmts/*out*/, + unsigned cd_values[]/*out*/, size_t namelen, char name[]); +H5_DLL herr_t H5Pget_filter_by_id1(hid_t plist_id, H5Z_filter_t id, + unsigned int *flags/*out*/, size_t *cd_nelmts/*out*/, + unsigned cd_values[]/*out*/, size_t namelen, char name[]/*out*/); + +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +#ifdef __cplusplus +} +#endif +#endif /* _H5Ppublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5PredType.h b/Resources/windows-libs/HDF5/include/H5PredType.h new file mode 100644 index 0000000000000000000000000000000000000000..c929a7043b5e772242e2aedad62e190376377309 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5PredType.h @@ -0,0 +1,266 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5PredType_H +#define __H5PredType_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +/* This constant is defined for a workaround to eliminate memory leaks due to + the library being re-initiated when PredType destructors are invoked. A + PredType instant with H5CPP_EXITED as the value of its "id" is constructed + before the other PredType objects are created. At exit, when this special + PredType object is to be destructed, no HDF5 library function will be called + and the library will be terminated. -BMR, Mar 30, 2012 */ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define H5CPP_EXITED -3 // -3 is less likely to be used elsewhere +#endif // DOXYGEN_SHOULD_SKIP_THIS + +/*! \class PredType + \brief Class PredType holds the definition of all the HDF5 predefined + datatypes. + + These types can only be made copy of, not created by H5Tcreate or + closed by H5Tclose. They are treated as constants. +*/ +class H5_DLLCPP PredType : public AtomType { + public: + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("PredType"); } + + // Makes a copy of the predefined type and stores the new + // id in the left hand side object. + PredType& operator=( const PredType& rhs ); + + // Copy constructor - makes copy of the original object + PredType( const PredType& original ); + + // Noop destructor + virtual ~PredType(); + + // Declaration of predefined types; their definition is in H5PredType.cpp + static const PredType STD_I8BE; + static const PredType STD_I8LE; + static const PredType STD_I16BE; + static const PredType STD_I16LE; + static const PredType STD_I32BE; + static const PredType STD_I32LE; + static const PredType STD_I64BE; + static const PredType STD_I64LE; + static const PredType STD_U8BE; + static const PredType STD_U8LE; + static const PredType STD_U16BE; + static const PredType STD_U16LE; + static const PredType STD_U32BE; + static const PredType STD_U32LE; + static const PredType STD_U64BE; + static const PredType STD_U64LE; + static const PredType STD_B8BE; + static const PredType STD_B8LE; + static const PredType STD_B16BE; + static const PredType STD_B16LE; + static const PredType STD_B32BE; + static const PredType STD_B32LE; + static const PredType STD_B64BE; + static const PredType STD_B64LE; + static const PredType STD_REF_OBJ; + static const PredType STD_REF_DSETREG; + + static const PredType C_S1; + static const PredType FORTRAN_S1; + + static const PredType IEEE_F32BE; + static const PredType IEEE_F32LE; + static const PredType IEEE_F64BE; + static const PredType IEEE_F64LE; + + static const PredType UNIX_D32BE; + static const PredType UNIX_D32LE; + static const PredType UNIX_D64BE; + static const PredType UNIX_D64LE; + + static const PredType INTEL_I8; + static const PredType INTEL_I16; + static const PredType INTEL_I32; + static const PredType INTEL_I64; + static const PredType INTEL_U8; + static const PredType INTEL_U16; + static const PredType INTEL_U32; + static const PredType INTEL_U64; + static const PredType INTEL_B8; + static const PredType INTEL_B16; + static const PredType INTEL_B32; + static const PredType INTEL_B64; + static const PredType INTEL_F32; + static const PredType INTEL_F64; + + static const PredType ALPHA_I8; + static const PredType ALPHA_I16; + static const PredType ALPHA_I32; + static const PredType ALPHA_I64; + static const PredType ALPHA_U8; + static const PredType ALPHA_U16; + static const PredType ALPHA_U32; + static const PredType ALPHA_U64; + static const PredType ALPHA_B8; + static const PredType ALPHA_B16; + static const PredType ALPHA_B32; + static const PredType ALPHA_B64; + static const PredType ALPHA_F32; + static const PredType ALPHA_F64; + + static const PredType MIPS_I8; + static const PredType MIPS_I16; + static const PredType MIPS_I32; + static const PredType MIPS_I64; + static const PredType MIPS_U8; + static const PredType MIPS_U16; + static const PredType MIPS_U32; + static const PredType MIPS_U64; + static const PredType MIPS_B8; + static const PredType MIPS_B16; + static const PredType MIPS_B32; + static const PredType MIPS_B64; + static const PredType MIPS_F32; + static const PredType MIPS_F64; + + static const PredType NATIVE_CHAR; + static const PredType NATIVE_SCHAR; + static const PredType NATIVE_UCHAR; + static const PredType NATIVE_SHORT; + static const PredType NATIVE_USHORT; + static const PredType NATIVE_INT; + static const PredType NATIVE_UINT; + static const PredType NATIVE_LONG; + static const PredType NATIVE_ULONG; + static const PredType NATIVE_LLONG; + static const PredType NATIVE_ULLONG; + static const PredType NATIVE_FLOAT; + static const PredType NATIVE_DOUBLE; + static const PredType NATIVE_LDOUBLE; + static const PredType NATIVE_B8; + static const PredType NATIVE_B16; + static const PredType NATIVE_B32; + static const PredType NATIVE_B64; + static const PredType NATIVE_OPAQUE; + static const PredType NATIVE_HSIZE; + static const PredType NATIVE_HSSIZE; + static const PredType NATIVE_HERR; + static const PredType NATIVE_HBOOL; + + static const PredType NATIVE_INT8; + static const PredType NATIVE_UINT8; + static const PredType NATIVE_INT16; + static const PredType NATIVE_UINT16; + static const PredType NATIVE_INT32; + static const PredType NATIVE_UINT32; + static const PredType NATIVE_INT64; + static const PredType NATIVE_UINT64; + +// LEAST types +#if H5_SIZEOF_INT_LEAST8_T != 0 + static const PredType NATIVE_INT_LEAST8; +#endif /* H5_SIZEOF_INT_LEAST8_T */ +#if H5_SIZEOF_UINT_LEAST8_T != 0 + static const PredType NATIVE_UINT_LEAST8; +#endif /* H5_SIZEOF_UINT_LEAST8_T */ + +#if H5_SIZEOF_INT_LEAST16_T != 0 + static const PredType NATIVE_INT_LEAST16; +#endif /* H5_SIZEOF_INT_LEAST16_T */ +#if H5_SIZEOF_UINT_LEAST16_T != 0 + static const PredType NATIVE_UINT_LEAST16; +#endif /* H5_SIZEOF_UINT_LEAST16_T */ + +#if H5_SIZEOF_INT_LEAST32_T != 0 + static const PredType NATIVE_INT_LEAST32; +#endif /* H5_SIZEOF_INT_LEAST32_T */ +#if H5_SIZEOF_UINT_LEAST32_T != 0 + static const PredType NATIVE_UINT_LEAST32; +#endif /* H5_SIZEOF_UINT_LEAST32_T */ + +#if H5_SIZEOF_INT_LEAST64_T != 0 + static const PredType NATIVE_INT_LEAST64; +#endif /* H5_SIZEOF_INT_LEAST64_T */ +#if H5_SIZEOF_UINT_LEAST64_T != 0 + static const PredType NATIVE_UINT_LEAST64; +#endif /* H5_SIZEOF_UINT_LEAST64_T */ + +// FAST types +#if H5_SIZEOF_INT_FAST8_T != 0 + static const PredType NATIVE_INT_FAST8; +#endif /* H5_SIZEOF_INT_FAST8_T */ +#if H5_SIZEOF_UINT_FAST8_T != 0 + static const PredType NATIVE_UINT_FAST8; +#endif /* H5_SIZEOF_UINT_FAST8_T */ + +#if H5_SIZEOF_INT_FAST16_T != 0 + static const PredType NATIVE_INT_FAST16; +#endif /* H5_SIZEOF_INT_FAST16_T */ +#if H5_SIZEOF_UINT_FAST16_T != 0 + static const PredType NATIVE_UINT_FAST16; +#endif /* H5_SIZEOF_UINT_FAST16_T */ + +#if H5_SIZEOF_INT_FAST32_T != 0 + static const PredType NATIVE_INT_FAST32; +#endif /* H5_SIZEOF_INT_FAST32_T */ +#if H5_SIZEOF_UINT_FAST32_T != 0 + static const PredType NATIVE_UINT_FAST32; +#endif /* H5_SIZEOF_UINT_FAST32_T */ + +#if H5_SIZEOF_INT_FAST64_T != 0 + static const PredType NATIVE_INT_FAST64; +#endif /* H5_SIZEOF_INT_FAST64_T */ +#if H5_SIZEOF_UINT_FAST64_T != 0 + static const PredType NATIVE_UINT_FAST64; +#endif /* H5_SIZEOF_UINT_FAST64_T */ + + /*! \brief This dummy function do not inherit from DataType - it will + throw a DataTypeIException if invoked. + */ + void commit(H5Location& loc, const H5std_string& name ); + /*! \brief This dummy function do not inherit from DataType - it will + throw a DataTypeIException if invoked. + */ + void commit(H5Location& loc, const char* name ); + /*! \brief This dummy function do not inherit from DataType - it will + throw a DataTypeIException if invoked. + */ + bool committed(); + +#ifndef DOXYGEN_SHOULD_SKIP_THIS + private: + // Added this to work around the atexit/global destructor problem. + // It'll help to terminate the library after other PredType instances + // are closed. -BMR, Mar 30, 2012 + static const PredType AtExit; + + protected: + // Default constructor + PredType(); + + // Creates a pre-defined type using an HDF5 pre-defined constant + PredType( const hid_t predtype_id ); // used by the library only + +#endif // DOXYGEN_SHOULD_SKIP_THIS + +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5PredType_H diff --git a/Resources/windows-libs/HDF5/include/H5PropList.h b/Resources/windows-libs/HDF5/include/H5PropList.h new file mode 100644 index 0000000000000000000000000000000000000000..f26201dc4b67ecaa8202c7e2472b03fd33091c62 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5PropList.h @@ -0,0 +1,125 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5PropList_H +#define __H5PropList_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +//! Class PropList provides operations for generic property lists. +class H5_DLLCPP PropList : public IdComponent { + public: + // Default property list + static const PropList DEFAULT; + + // Creates a property list of a given type or creates a copy of an + // existing property list giving the property list id. + PropList(const hid_t plist_id); + + // Make a copy of the given property list using assignment statement + PropList& operator=( const PropList& rhs ); + + // Compares this property list or class against the given list or class. + bool operator==(const PropList& rhs) const; + + // Close this property list. + virtual void close(); + + // Close a property list class. + void closeClass() const; + + // Makes a copy of the given property list. + void copy( const PropList& like_plist ); + + // Copies a property from this property list or class to another + void copyProp( PropList& dest, const char* name) const; + void copyProp( PropList& dest, const H5std_string& name) const; + + // Copies a property from one property list or property class to another + void copyProp( PropList& dest, PropList& src, const char* name) const; + void copyProp( PropList& dest, PropList& src, const H5std_string& name) const; + + // Gets the class of this property list, i.e. H5P_FILE_CREATE, + // H5P_FILE_ACCESS, ... + hid_t getClass() const; + + // Return the name of a generic property list class. + H5std_string getClassName() const; + + // Returns the parent class of a generic property class. + PropList getClassParent() const; + + // Returns the number of properties in this property list or class. + size_t getNumProps() const; + + // Query the value of a property in a property list. + void getProperty(const char* name, void* value) const; + void getProperty(const H5std_string& name, void* value) const; + H5std_string getProperty(const char* name) const; + H5std_string getProperty(const H5std_string& name) const; + + // Set a property's value in a property list. + void setProperty(const char* name, void* value) const; + void setProperty(const char* name, const char* charptr) const; + void setProperty(const char* name, H5std_string& strg) const; + void setProperty(const H5std_string& name, void* value) const; + void setProperty(const H5std_string& name, H5std_string& strg) const; + + // Query the size of a property in a property list or class. + size_t getPropSize(const char *name) const; + size_t getPropSize(const H5std_string& name) const; + + // Determines whether a property list is a certain class. + bool isAClass(const PropList& prop_class) const; + + /// Query the existance of a property in a property object. + bool propExist(const char* name) const; + bool propExist(const H5std_string& name) const; + + // Removes a property from a property list. + void removeProp(const char *name) const; + void removeProp(const H5std_string& name) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("PropList"); } + + // Default constructor: creates a stub PropList object. + PropList(); + + // Copy constructor: creates a copy of a PropList object. + PropList(const PropList& original); + + // Gets the property list id. + virtual hid_t getId() const; + + // Destructor: properly terminates access to this property list. + virtual ~PropList(); + + protected: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + hid_t id; // HDF5 property list id + + // Sets the property list id. + virtual void p_setId(const hid_t new_id); +#endif // DOXYGEN_SHOULD_SKIP_THIS +}; + +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5PropList_H diff --git a/Resources/windows-libs/HDF5/include/H5Rpkg.h b/Resources/windows-libs/HDF5/include/H5Rpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..2ff1c2c1a9883fd8d0eb4b85922ec8ef0c2b423b --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Rpkg.h @@ -0,0 +1,64 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@hdfgroup.org> + * Thursday, September 13, 2007 + * + * Purpose: This file contains declarations which are visible + * only within the H5R package. Source files outside the + * H5R package should include H5Rprivate.h instead. + */ +#ifndef H5R_PACKAGE +#error "Do not include this file outside the H5R package!" +#endif + +#ifndef _H5Rpkg_H +#define _H5Rpkg_H + +/* Get package's private header */ +#include "H5Rprivate.h" + +/* Other private headers needed by this file */ +#include "H5Fprivate.h" /* File access */ + +/**************************/ +/* Package Private Macros */ +/**************************/ + + +/****************************/ +/* Package Private Typedefs */ +/****************************/ + + +/*****************************/ +/* Package Private Variables */ +/*****************************/ + + +/******************************/ +/* Package Private Prototypes */ +/******************************/ + +/* General functions */ +H5_DLL herr_t H5R_init(void); +H5_DLL herr_t H5R__term_deprec_interface(void); +H5_DLL herr_t H5R_get_obj_type(H5F_t *file, hid_t dxpl_id, H5R_type_t ref_type, + const void *_ref, H5O_type_t *obj_type); + + +#endif /* _H5Rpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Rpublic.h b/Resources/windows-libs/HDF5/include/H5Rpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..04d319bebbbe7a5d5cc644d081c95d867063a886 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Rpublic.h @@ -0,0 +1,92 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5S module. + */ +#ifndef _H5Rpublic_H +#define _H5Rpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Gpublic.h" +#include "H5Ipublic.h" + +/* + * Reference types allowed. + */ +typedef enum { + H5R_BADTYPE = (-1), /*invalid Reference Type */ + H5R_OBJECT, /*Object reference */ + H5R_DATASET_REGION, /*Dataset Region Reference */ + H5R_MAXTYPE /*highest type (Invalid as true type) */ +} H5R_type_t; + +/* Note! Be careful with the sizes of the references because they should really + * depend on the run-time values in the file. Unfortunately, the arrays need + * to be defined at compile-time, so we have to go with the worst case sizes for + * them. -QAK + */ +#define H5R_OBJ_REF_BUF_SIZE sizeof(haddr_t) +/* Object reference structure for user's code */ +typedef haddr_t hobj_ref_t; /* Needs to be large enough to store largest haddr_t in a worst case machine (ie. 8 bytes currently) */ + +#define H5R_DSET_REG_REF_BUF_SIZE (sizeof(haddr_t)+4) +/* 4 is used instead of sizeof(int) to permit portability between + the Crays and other machines (the heap ID is always encoded as an int32 anyway) +*/ +/* Dataset Region reference structure for user's code */ +typedef unsigned char hdset_reg_ref_t[H5R_DSET_REG_REF_BUF_SIZE];/* Buffer to store heap ID and index */ +/* Needs to be large enough to store largest haddr_t in a worst case machine (ie. 8 bytes currently) plus an int */ + +/* Publicly visible data structures */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Functions in H5R.c */ +H5_DLL herr_t H5Rcreate(void *ref, hid_t loc_id, const char *name, + H5R_type_t ref_type, hid_t space_id); +H5_DLL hid_t H5Rdereference(hid_t dataset, H5R_type_t ref_type, const void *ref); +H5_DLL hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, const void *ref); +H5_DLL herr_t H5Rget_obj_type2(hid_t id, H5R_type_t ref_type, const void *_ref, + H5O_type_t *obj_type); +H5_DLL ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, const void *ref, + char *name/*out*/, size_t size); + +/* Symbols defined for compatibility with previous versions of the HDF5 API. + * + * Use of these symbols is deprecated. + */ +#ifndef H5_NO_DEPRECATED_SYMBOLS + +/* Macros */ + + +/* Typedefs */ + + +/* Function prototypes */ +H5_DLL H5G_obj_t H5Rget_obj_type1(hid_t id, H5R_type_t ref_type, const void *_ref); + +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +#ifdef __cplusplus +} +#endif + +#endif /* _H5Rpublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5SMpkg.h b/Resources/windows-libs/HDF5/include/H5SMpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..68dc484bf18ec44d024aa22ccb41c89d4f877c6f --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5SMpkg.h @@ -0,0 +1,292 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: James Laird <jlaird@ncsa.uiuc.edu> + * Thursday, March 30, 2006 + * + * Purpose: This file contains declarations which are visible only within + * the H5SM shared object header messages package. Source files + * outside the H5SM package should include H5SMprivate.h instead. + */ +#ifndef H5SM_PACKAGE +#error "Do not include this file outside the H5SM package!" +#endif + +#ifndef _H5SMpkg_H +#define _H5SMpkg_H + +/* Get package's private header */ +#include "H5SMprivate.h" /* Shared Object Header Messages */ + +/* Other private headers needed by this file */ +#include "H5ACprivate.h" /* Metadata Cache */ +#include "H5B2private.h" /* B-trees */ +#include "H5HFprivate.h" /* Fractal heaps */ + + +/****************************/ +/* Package Macros */ +/****************************/ + +/* Size of checksum information (on disk) */ +#define H5SM_SIZEOF_CHECKSUM 4 + +#define H5SM_HEAP_LOC_SIZE ( \ + (unsigned)4 /* Reference count */ \ + + sizeof(H5O_fheap_id_t) /* size of heap ID on disk */ \ + ) + +#define H5SM_OH_LOC_SIZE(f) ( \ + (unsigned)1 /* reserved (possible flags?) */ \ + + (unsigned)1 /* message type ID */ \ + + (unsigned)2 /* creation index of message in OH */ \ + + H5F_SIZEOF_ADDR(f) /* address of OH */ \ + ) + +#define H5SM_SOHM_ENTRY_SIZE(f) ( \ + (unsigned)1 /* Message location */ \ + + (unsigned)4 /* Hash value */ \ + + MAX(H5SM_HEAP_LOC_SIZE, H5SM_OH_LOC_SIZE(f)) /* Entry */ \ + ) + +#define H5SM_INDEX_HEADER_SIZE(f) ( \ + (unsigned)1 /* Whether index is a list or B-tree */ \ + + (unsigned)1 /* Version of index format */ \ + + (unsigned)2 /* Type of messages stored in the index */ \ + + (unsigned)4 /* Minimum size of messages to share */ \ + + (unsigned)(3 * 2) /* B-tree cutoff, list cutoff, # of shared messages */ \ + + H5F_SIZEOF_ADDR(f) /* Location of list or B-tree */ \ + + H5F_SIZEOF_ADDR(f) /* Address of heap */ \ + ) + +/* Format overhead for all SOHM tree metadata in the file */ +#define H5SM_METADATA_PREFIX_SIZE ( \ + H5_SIZEOF_MAGIC /* Signature */ \ + + H5SM_SIZEOF_CHECKSUM /* Checksum */ \ + ) + +#define H5SM_TABLE_SIZE(f) ( \ + /* General metadata fields */ \ + H5SM_METADATA_PREFIX_SIZE \ + \ + /* Indices */ \ + + (H5F_SOHM_NINDEXES(f) * H5SM_INDEX_HEADER_SIZE(f)) \ + ) + +#define H5SM_LIST_SIZE(f, num_mesg) ( \ + /* General metadata fields */ \ + H5SM_METADATA_PREFIX_SIZE \ + \ + /* Message entries */ \ + + (H5SM_SOHM_ENTRY_SIZE(f) * num_mesg) \ + ) + +#define H5SM_B2_NODE_SIZE 512 +#define H5SM_B2_SPLIT_PERCENT 100 +#define H5SM_B2_MERGE_PERCENT 40 + +#define H5SM_LIST_VERSION 0 /* Verion of Shared Object Header Message List Indexes */ + +/****************************/ +/* Package Typedefs */ +/****************************/ + +/* There are a number of Shared Object Header Message-specific structs here. + * + * The H5SM_master_table_t is pointed to by the file superblock. Since a file + * can have more than one SOHM index, this table collects all the indexes into + * one place. It holds an array of H5SM_index_header_t structs. + * + * An H5SM_index_header_t is actually the for a given index. It holds + * the number of messages in the index, the types of messages in the index, + * etc. It also records whether the index is a list or a b-tree, and has + * the address of the list or b-tree. + * + * If the index is a list, the address in the index header should be given + * to the cache, which can load it into a H5SM_list_t struct. This is mostly + * just a header for the cache information; it contains a pointer back to + * the index header and an unsorted array of messages. + * + * These messages are H5SM_sohm_t structs. They hold the actual SOHM's + * address, hash value, and refcount. + * + * If the index is a b-tree, the H5SM_index_header_t struct holds the address + * of the b-tree instead of the address of a H5SM_list_t. The B-tree's nodes + * are still 'H5SM_sohm_t's. + * + * H5SM_mesg_key_t structs are used to search lists and B-trees for a certain + * message. They correspond to a message that hasn't yet been written to + * disk. + */ + +/* Where a message is stored */ +typedef enum { + H5SM_NO_LOC = -1, + H5SM_IN_HEAP = 0, /* Message is stored in the heap */ + H5SM_IN_OH /* Message is stored in an object header */ +} H5SM_storage_loc_t; + +/* Typedef for a record's location if it's stored in the heap */ +typedef struct { + hsize_t ref_count; /* Number of times this message is used in the file */ + H5O_fheap_id_t fheap_id; /* ID of the OHM in the fractal heap */ +} H5SM_heap_loc_t; + +/* Typedef for a SOHM index node */ +typedef struct { + H5SM_storage_loc_t location; /* Type of message location */ + uint32_t hash; /* Hash value for encoded OHM */ + unsigned msg_type_id; /* Message's type ID */ + union { + H5O_mesg_loc_t mesg_loc; /* Location of message in object header */ + H5SM_heap_loc_t heap_loc; /* Heap ID for message in SOHM heap */ + } u; +} H5SM_sohm_t; + +/* Types of message indices */ +typedef enum { + H5SM_BADTYPE = -1, + H5SM_LIST, /* Index is an unsorted list */ + H5SM_BTREE /* Index is a sorted B-tree */ +} H5SM_index_type_t; + +/* Typedef for a SOHM index header */ +typedef struct { +/* Stored */ + unsigned mesg_types; /* Bit flag vector of message types */ + size_t min_mesg_size; /* number of messages being tracked */ + size_t list_max; /* >= this many messages, index with a B-tree */ + size_t btree_min; /* <= this many messages, index with a list again */ + size_t num_messages; /* number of messages being tracked */ + H5SM_index_type_t index_type; /* Is the index a list or a B-tree? */ + haddr_t index_addr; /* Address of the actual index (list or B-tree) */ + haddr_t heap_addr; /* Address of the fheap used to store shared messages */ + +/* Not stored */ + size_t list_size; /* Size of list index on disk */ +} H5SM_index_header_t; + +/* Typedef for a SOHM list */ +typedef struct { + /* Information for H5AC cache functions, _must_ be first field in structure */ + H5AC_info_t cache_info; + + H5SM_index_header_t *header; /* Pointer to the corresponding index header */ + H5SM_sohm_t *messages; /* Actual list, stored as an array */ +} H5SM_list_t; + +/* Typedef for shared object header message master table */ +struct H5SM_master_table_t { + /* Information for H5AC cache functions, _must_ be first field in structure */ + H5AC_info_t cache_info; + + size_t table_size; /* Size of table on disk */ + unsigned num_indexes; /* Number of indexes */ + H5SM_index_header_t *indexes; /* Array of num_indexes indexes */ +}; + +/* Typedef for searching an index (list or B-tree) */ +typedef struct { + H5F_t *file; /* File in which sharing is happening */ + hid_t dxpl_id; /* DXPL for sharing messages in heap */ + H5HF_t *fheap; /* The heap for this message type, open. */ + void *encoding; /* The message encoded, or NULL */ + size_t encoding_size; /* Size of the encoding, or 0 */ + H5SM_sohm_t message; /* The message to find/insert. + * If the message doesn't yet have a + * heap ID, the heap ID will be 0. */ +} H5SM_mesg_key_t; + +/* + * Data exchange structure to pass through the fractal heap layer for the + * H5HF_op function when computing a hash value for a message. + */ +typedef struct { + /* downward (internal) */ + unsigned type_id; /* Message type */ + + /* upward */ + uint32_t hash; /* Hash value */ +} H5SM_fh_ud_gh_t; + +/* Typedef to increment a reference count in the B-tree */ +typedef struct { + H5SM_mesg_key_t *key; /* IN: key for message being incremented */ + H5O_fheap_id_t fheap_id; /* OUT: fheap ID of record */ + hid_t dxpl_id; +} H5SM_incr_ref_opdata; + +/* v2 B-tree client callback context */ +typedef struct H5SM_bt2_ctx_t { + uint8_t sizeof_addr; /* Size of file addresses */ +} H5SM_bt2_ctx_t; + +/* Callback info for loading a shared message table index into the cache */ +typedef struct H5SM_table_cache_ud_t { + H5F_t *f; /* File that shared message index stored as a table is in */ +} H5SM_table_cache_ud_t; + +/* Callback info for loading a shared message list index into the cache */ +typedef struct H5SM_list_cache_ud_t { + H5F_t *f; /* File that shared message index stored as a table is in */ + H5SM_index_header_t *header; /* Index header for this list */ +} H5SM_list_cache_ud_t; + + +/****************************/ +/* Package Variables */ +/****************************/ + +/* Declare free lists to manage H5SM structs */ +H5FL_EXTERN(H5SM_master_table_t); +H5FL_ARR_EXTERN(H5SM_index_header_t); +H5FL_EXTERN(H5SM_list_t); +H5FL_ARR_EXTERN(H5SM_sohm_t); + +H5_DLLVAR const H5AC_class_t H5AC_SOHM_TABLE[1]; +H5_DLLVAR const H5AC_class_t H5AC_SOHM_LIST[1]; +H5_DLLVAR const H5B2_class_t H5SM_INDEX[1]; + +/****************************/ +/* Package Prototypes */ +/****************************/ + +/* General routines */ +H5_DLL ssize_t H5SM_get_index(const H5SM_master_table_t *table, unsigned type_id); + +/* Encode and decode routines, used for B-tree and cache encoding/decoding */ +H5_DLL herr_t H5SM_message_compare(const void *rec1, const void *rec2); +H5_DLL herr_t H5SM_message_encode(uint8_t *raw, const void *native, void *ctx); +H5_DLL herr_t H5SM_message_decode(const uint8_t *raw, void *native, void *ctx); + +/* H5B2_remove_t callback to add messages to a list index */ +H5_DLL herr_t H5SM_bt2_convert_to_list_op(const void * record, void *op_data); + +/* Fractal heap 'op' callback to compute hash value for message "in place" */ +H5_DLL herr_t H5SM_get_hash_fh_cb(const void *obj, size_t obj_len, void *_udata); + +/* Routines to release data structures */ +herr_t H5SM_table_free(H5SM_master_table_t *table); +herr_t H5SM_list_free(H5SM_list_t *list); + +/* Testing functions */ +#ifdef H5SM_TESTING +H5_DLL herr_t H5SM_get_mesg_count_test(H5F_t *f, hid_t dxpl_id, unsigned type_id, + size_t *mesg_count); +#endif /* H5SM_TESTING */ + +#endif /* _H5SMpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Spkg.h b/Resources/windows-libs/HDF5/include/H5Spkg.h new file mode 100644 index 0000000000000000000000000000000000000000..0a9df6971fc217fbe85b7697d96a6b249ada61b1 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Spkg.h @@ -0,0 +1,260 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu> + * Thursday, September 28, 2000 + * + * Purpose: This file contains declarations which are visible only within + * the H5S package. Source files outside the H5S package should + * include H5Sprivate.h instead. + */ +#ifndef H5S_PACKAGE +#error "Do not include this file outside the H5S package!" +#endif + +#ifndef _H5Spkg_H +#define _H5Spkg_H + +#include "H5Sprivate.h" + +/* Flags to indicate special dataspace features are active */ +#define H5S_VALID_MAX 0x01 +#define H5S_VALID_PERM 0x02 + + +/* Initial version of the dataspace information */ +#define H5O_SDSPACE_VERSION_1 1 + +/* This version adds support for "null" dataspaces, encodes the type of the + * dataspace in the message and eliminated the rest of the "reserved" + * bytes. + */ +#define H5O_SDSPACE_VERSION_2 2 + +/* The latest version of the format. Look through the 'encode' + * and 'size' callbacks for places to change when updating this. */ +#define H5O_SDSPACE_VERSION_LATEST H5O_SDSPACE_VERSION_2 + + +/* + * Dataspace extent information + */ +/* Extent container */ +struct H5S_extent_t { + H5O_shared_t sh_loc; /* Shared message info (must be first) */ + + H5S_class_t type; /* Type of extent */ + unsigned version; /* Version of object header message to encode this object with */ + hsize_t nelem; /* Number of elements in extent */ + + unsigned rank; /* Number of dimensions */ + hsize_t *size; /* Current size of the dimensions */ + hsize_t *max; /* Maximum size of the dimensions */ +}; + +/* + * Dataspace selection information + */ +/* Node in point selection list (typedef'd in H5Sprivate.h) */ +struct H5S_pnt_node_t { + hsize_t *pnt; /* Pointer to a selected point */ + struct H5S_pnt_node_t *next; /* pointer to next point in list */ +}; + +/* Information about point selection list */ +typedef struct { + H5S_pnt_node_t *head; /* Pointer to head of point list */ +} H5S_pnt_list_t; + +/* Information about new-style hyperslab spans */ + +/* Information a particular hyperslab span */ +struct H5S_hyper_span_t { + hsize_t low, high; /* Low & high bounds of span */ + hsize_t nelem; /* Number of elements in span (only needed during I/O) */ + hsize_t pstride; /* Pseudo-stride from start of previous span (only used during I/O) */ + struct H5S_hyper_span_info_t *down; /* Pointer to list of spans in next dimension down */ + struct H5S_hyper_span_t *next; /* Pointer to next span in list */ +}; + +/* Information about a list of hyperslab spans */ +struct H5S_hyper_span_info_t { + unsigned count; /* Ref. count of number of spans which share this span */ + struct H5S_hyper_span_info_t *scratch; /* Scratch pointer + * (used during copies, as mark + * during precomputes for I/O & + * to point to the last span in a + * list during single element adds) + */ + struct H5S_hyper_span_t *head; /* Pointer to list of spans in next dimension down */ +}; + +/* Information about new-style hyperslab selection */ +typedef struct { + hbool_t diminfo_valid; /* Whether the dataset has valid diminfo */ + H5S_hyper_dim_t opt_diminfo[H5S_MAX_RANK]; /* per-dim selection info */ + H5S_hyper_dim_t app_diminfo[H5S_MAX_RANK]; /* per-dim selection info */ + /* 'opt_diminfo' points to a [potentially] optimized version of the user's + * hyperslab information. 'app_diminfo' points to the actual parameters + * that the application used for setting the hyperslab selection. These + * are only used for re-gurgitating the original values used to set the + * hyperslab to the application when it queries the hyperslab selection + * information. */ + H5S_hyper_span_info_t *span_lst; /* List of hyperslab span information */ +} H5S_hyper_sel_t; + +/* Selection information methods */ +/* Method to copy a selection */ +typedef herr_t (*H5S_sel_copy_func_t)(H5S_t *dst, const H5S_t *src, hbool_t share_selection); +/* Method to retrieve a list of offset/length sequences for selection */ +typedef herr_t (*H5S_sel_get_seq_list_func_t)(const H5S_t *space, unsigned flags, + H5S_sel_iter_t *iter, size_t maxseq, size_t maxbytes, + size_t *nseq, size_t *nbytes, hsize_t *off, size_t *len); +/* Method to release current selection */ +typedef herr_t (*H5S_sel_release_func_t)(H5S_t *space); +/* Method to determine if current selection is valid for dataspace */ +typedef htri_t (*H5S_sel_is_valid_func_t)(const H5S_t *space); +/* Method to determine number of bytes required to store current selection */ +typedef hssize_t (*H5S_sel_serial_size_func_t)(const H5S_t *space); +/* Method to store current selection in "serialized" form (a byte sequence suitable for storing on disk) */ +typedef herr_t (*H5S_sel_serialize_func_t)(const H5S_t *space, uint8_t *buf); +/* Method to store create selection from "serialized" form (a byte sequence suitable for storing on disk) */ +typedef herr_t (*H5S_sel_deserialize_func_t)(H5S_t *space, const uint8_t *buf); +/* Method to determine smallest n-D bounding box containing the current selection */ +typedef herr_t (*H5S_sel_bounds_func_t)(const H5S_t *space, hsize_t *start, hsize_t *end); +/* Method to determine linear offset of initial element in selection within dataspace */ +typedef herr_t (*H5S_sel_offset_func_t)(const H5S_t *space, hsize_t *offset); +/* Method to determine if current selection is contiguous */ +typedef htri_t (*H5S_sel_is_contiguous_func_t)(const H5S_t *space); +/* Method to determine if current selection is a single block */ +typedef htri_t (*H5S_sel_is_single_func_t)(const H5S_t *space); +/* Method to determine if current selection is "regular" */ +typedef htri_t (*H5S_sel_is_regular_func_t)(const H5S_t *space); +/* Method to adjust a selection by an offset */ +typedef herr_t (*H5S_sel_adjust_u_func_t)(H5S_t *space, const hsize_t *offset); +/* Method to construct single element projection onto scalar dataspace */ +typedef herr_t (*H5S_sel_project_scalar)(const H5S_t *space, hsize_t *offset); +/* Method to construct selection projection onto/into simple dataspace */ +typedef herr_t (*H5S_sel_project_simple)(const H5S_t *space, H5S_t *new_space, hsize_t *offset); +/* Method to initialize iterator for current selection */ +typedef herr_t (*H5S_sel_iter_init_func_t)(H5S_sel_iter_t *sel_iter, const H5S_t *space); + +/* Selection class information */ +typedef struct { + H5S_sel_type type; /* Type of selection (all, none, points or hyperslab) */ + + /* Methods */ + H5S_sel_copy_func_t copy; /* Method to make a copy of a selection */ + H5S_sel_get_seq_list_func_t get_seq_list; /* Method to retrieve a list of offset/length sequences for selection */ + H5S_sel_release_func_t release; /* Method to release current selection */ + H5S_sel_is_valid_func_t is_valid; /* Method to determine if current selection is valid for dataspace */ + H5S_sel_serial_size_func_t serial_size; /* Method to determine number of bytes required to store current selection */ + H5S_sel_serialize_func_t serialize; /* Method to store current selection in "serialized" form (a byte sequence suitable for storing on disk) */ + H5S_sel_deserialize_func_t deserialize; /* Method to store create selection from "serialized" form (a byte sequence suitable for storing on disk) */ + H5S_sel_bounds_func_t bounds; /* Method to determine to smallest n-D bounding box containing the current selection */ + H5S_sel_offset_func_t offset; /* Method to determine linear offset of initial element in selection within dataspace */ + H5S_sel_is_contiguous_func_t is_contiguous; /* Method to determine if current selection is contiguous */ + H5S_sel_is_single_func_t is_single; /* Method to determine if current selection is a single block */ + H5S_sel_is_regular_func_t is_regular; /* Method to determine if current selection is "regular" */ + H5S_sel_adjust_u_func_t adjust_u; /* Method to adjust a selection by an offset */ + H5S_sel_project_scalar project_scalar; /* Method to construct scalar dataspace projection */ + H5S_sel_project_simple project_simple; /* Method to construct simple dataspace projection */ + H5S_sel_iter_init_func_t iter_init; /* Method to initialize iterator for current selection */ +} H5S_select_class_t; + +/* Selection information object */ +typedef struct { + const H5S_select_class_t *type; /* Pointer to selection's class info */ + hbool_t offset_changed; /* Indicate that the offset for the selection has been changed */ + hssize_t offset[H5S_MAX_RANK]; /* Offset within the extent */ + hsize_t num_elem; /* Number of elements in selection */ + union { + H5S_pnt_list_t *pnt_lst; /* List of selected points (order is important) */ + H5S_hyper_sel_t *hslab; /* Info about hyperslab selections */ + } sel_info; +} H5S_select_t; + +/* Main dataspace structure (typedef'd in H5Sprivate.h) */ +struct H5S_t { + H5S_extent_t extent; /* Dataspace extent (must stay first) */ + H5S_select_t select; /* Dataspace selection */ +}; + +/* Selection iteration methods */ +/* Method to retrieve the current coordinates of iterator for current selection */ +typedef herr_t (*H5S_sel_iter_coords_func_t)(const H5S_sel_iter_t *iter, hsize_t *coords); +/* Method to retrieve the current block of iterator for current selection */ +typedef herr_t (*H5S_sel_iter_block_func_t)(const H5S_sel_iter_t *iter, hsize_t *start, hsize_t *end); +/* Method to determine number of elements left in iterator for current selection */ +typedef hsize_t (*H5S_sel_iter_nelmts_func_t)(const H5S_sel_iter_t *iter); +/* Method to determine if there are more blocks left in the current selection */ +typedef htri_t (*H5S_sel_iter_has_next_block_func_t)(const H5S_sel_iter_t *iter); +/* Method to move selection iterator to the next element in the selection */ +typedef herr_t (*H5S_sel_iter_next_func_t)(H5S_sel_iter_t *iter, size_t nelem); +/* Method to move selection iterator to the next block in the selection */ +typedef herr_t (*H5S_sel_iter_next_block_func_t)(H5S_sel_iter_t *iter); +/* Method to release iterator for current selection */ +typedef herr_t (*H5S_sel_iter_release_func_t)(H5S_sel_iter_t *iter); + +/* Selection iteration class */ +typedef struct H5S_sel_iter_class_t { + H5S_sel_type type; /* Type of selection (all, none, points or hyperslab) */ + + /* Methods on selections */ + H5S_sel_iter_coords_func_t iter_coords; /* Method to retrieve the current coordinates of iterator for current selection */ + H5S_sel_iter_block_func_t iter_block; /* Method to retrieve the current block of iterator for current selection */ + H5S_sel_iter_nelmts_func_t iter_nelmts; /* Method to determine number of elements left in iterator for current selection */ + H5S_sel_iter_has_next_block_func_t iter_has_next_block; /* Method to query if there is another block left in the selection */ + H5S_sel_iter_next_func_t iter_next; /* Method to move selection iterator to the next element in the selection */ + H5S_sel_iter_next_block_func_t iter_next_block; /* Method to move selection iterator to the next block in the selection */ + H5S_sel_iter_release_func_t iter_release; /* Method to release iterator for current selection */ +} H5S_sel_iter_class_t; + +/* + * All selection class methods. + */ +H5_DLLVAR const H5S_select_class_t H5S_sel_all[1]; + +/* + * Hyperslab selection class methods. + */ +H5_DLLVAR const H5S_select_class_t H5S_sel_hyper[1]; + +/* + * None selection class methods. + */ +H5_DLLVAR const H5S_select_class_t H5S_sel_none[1]; + +/* + * Pointer selection class methods. + */ +H5_DLLVAR const H5S_select_class_t H5S_sel_point[1]; + +/* Extent functions */ +H5_DLL herr_t H5S_extent_release(H5S_extent_t *extent); +H5_DLL herr_t H5S_extent_copy(H5S_extent_t *dst, const H5S_extent_t *src, + hbool_t copy_max); + +/* Operations on selections */ + +/* Testing functions */ +#ifdef H5S_TESTING +H5_DLL htri_t H5S_select_shape_same_test(hid_t sid1, hid_t sid2); +H5_DLL htri_t H5S_get_rebuild_status_test(hid_t space_id); +#endif /* H5S_TESTING */ + +#endif /*_H5Spkg_H*/ + diff --git a/Resources/windows-libs/HDF5/include/H5Spublic.h b/Resources/windows-libs/HDF5/include/H5Spublic.h new file mode 100644 index 0000000000000000000000000000000000000000..c62a7b7648332f90700ffd56ab81a0187a441817 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Spublic.h @@ -0,0 +1,152 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5S module. + */ +#ifndef _H5Spublic_H +#define _H5Spublic_H + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Ipublic.h" + +/* Define atomic datatypes */ +#define H5S_ALL 0 +#define H5S_UNLIMITED ((hsize_t)(hssize_t)(-1)) + +/* Define user-level maximum number of dimensions */ +#define H5S_MAX_RANK 32 + +/* Different types of dataspaces */ +typedef enum H5S_class_t { + H5S_NO_CLASS = -1, /*error */ + H5S_SCALAR = 0, /*scalar variable */ + H5S_SIMPLE = 1, /*simple data space */ + H5S_NULL = 2 /*null data space */ +} H5S_class_t; + +/* Different ways of combining selections */ +typedef enum H5S_seloper_t { + H5S_SELECT_NOOP = -1, /* error */ + H5S_SELECT_SET = 0, /* Select "set" operation */ + H5S_SELECT_OR, /* Binary "or" operation for hyperslabs + * (add new selection to existing selection) + * Original region: AAAAAAAAAA + * New region: BBBBBBBBBB + * A or B: CCCCCCCCCCCCCCCC + */ + H5S_SELECT_AND, /* Binary "and" operation for hyperslabs + * (only leave overlapped regions in selection) + * Original region: AAAAAAAAAA + * New region: BBBBBBBBBB + * A and B: CCCC + */ + H5S_SELECT_XOR, /* Binary "xor" operation for hyperslabs + * (only leave non-overlapped regions in selection) + * Original region: AAAAAAAAAA + * New region: BBBBBBBBBB + * A xor B: CCCCCC CCCCCC + */ + H5S_SELECT_NOTB, /* Binary "not" operation for hyperslabs + * (only leave non-overlapped regions in original selection) + * Original region: AAAAAAAAAA + * New region: BBBBBBBBBB + * A not B: CCCCCC + */ + H5S_SELECT_NOTA, /* Binary "not" operation for hyperslabs + * (only leave non-overlapped regions in new selection) + * Original region: AAAAAAAAAA + * New region: BBBBBBBBBB + * B not A: CCCCCC + */ + H5S_SELECT_APPEND, /* Append elements to end of point selection */ + H5S_SELECT_PREPEND, /* Prepend elements to beginning of point selection */ + H5S_SELECT_INVALID /* Invalid upper bound on selection operations */ +} H5S_seloper_t; + +/* Enumerated type for the type of selection */ +typedef enum { + H5S_SEL_ERROR = -1, /* Error */ + H5S_SEL_NONE = 0, /* Nothing selected */ + H5S_SEL_POINTS = 1, /* Sequence of points selected */ + H5S_SEL_HYPERSLABS = 2, /* "New-style" hyperslab selection defined */ + H5S_SEL_ALL = 3, /* Entire extent selected */ + H5S_SEL_N /*THIS MUST BE LAST */ +}H5S_sel_type; + +#ifdef __cplusplus +extern "C" { +#endif + +/* Functions in H5S.c */ +H5_DLL hid_t H5Screate(H5S_class_t type); +H5_DLL hid_t H5Screate_simple(int rank, const hsize_t dims[], + const hsize_t maxdims[]); +H5_DLL herr_t H5Sset_extent_simple(hid_t space_id, int rank, + const hsize_t dims[], + const hsize_t max[]); +H5_DLL hid_t H5Scopy(hid_t space_id); +H5_DLL herr_t H5Sclose(hid_t space_id); +H5_DLL herr_t H5Sencode(hid_t obj_id, void *buf, size_t *nalloc); +H5_DLL hid_t H5Sdecode(const void *buf); +H5_DLL hssize_t H5Sget_simple_extent_npoints(hid_t space_id); +H5_DLL int H5Sget_simple_extent_ndims(hid_t space_id); +H5_DLL int H5Sget_simple_extent_dims(hid_t space_id, hsize_t dims[], + hsize_t maxdims[]); +H5_DLL htri_t H5Sis_simple(hid_t space_id); +H5_DLL hssize_t H5Sget_select_npoints(hid_t spaceid); +H5_DLL herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op, + const hsize_t start[], + const hsize_t _stride[], + const hsize_t count[], + const hsize_t _block[]); +/* #define NEW_HYPERSLAB_API */ +#ifdef NEW_HYPERSLAB_API +H5_DLL hid_t H5Scombine_hyperslab(hid_t space_id, H5S_seloper_t op, + const hsize_t start[], + const hsize_t _stride[], + const hsize_t count[], + const hsize_t _block[]); +H5_DLL herr_t H5Sselect_select(hid_t space1_id, H5S_seloper_t op, + hid_t space2_id); +H5_DLL hid_t H5Scombine_select(hid_t space1_id, H5S_seloper_t op, + hid_t space2_id); +#endif /* NEW_HYPERSLAB_API */ +H5_DLL herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op, + size_t num_elem, const hsize_t *coord); +H5_DLL H5S_class_t H5Sget_simple_extent_type(hid_t space_id); +H5_DLL herr_t H5Sset_extent_none(hid_t space_id); +H5_DLL herr_t H5Sextent_copy(hid_t dst_id,hid_t src_id); +H5_DLL htri_t H5Sextent_equal(hid_t sid1, hid_t sid2); +H5_DLL herr_t H5Sselect_all(hid_t spaceid); +H5_DLL herr_t H5Sselect_none(hid_t spaceid); +H5_DLL herr_t H5Soffset_simple(hid_t space_id, const hssize_t *offset); +H5_DLL htri_t H5Sselect_valid(hid_t spaceid); +H5_DLL hssize_t H5Sget_select_hyper_nblocks(hid_t spaceid); +H5_DLL hssize_t H5Sget_select_elem_npoints(hid_t spaceid); +H5_DLL herr_t H5Sget_select_hyper_blocklist(hid_t spaceid, hsize_t startblock, + hsize_t numblocks, hsize_t buf[/*numblocks*/]); +H5_DLL herr_t H5Sget_select_elem_pointlist(hid_t spaceid, hsize_t startpoint, + hsize_t numpoints, hsize_t buf[/*numpoints*/]); +H5_DLL herr_t H5Sget_select_bounds(hid_t spaceid, hsize_t start[], + hsize_t end[]); +H5_DLL H5S_sel_type H5Sget_select_type(hid_t spaceid); + +#ifdef __cplusplus +} +#endif +#endif /* _H5Spublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5StrType.h b/Resources/windows-libs/HDF5/include/H5StrType.h new file mode 100644 index 0000000000000000000000000000000000000000..8b3a773d5a578fc6900a4e84977abc4c0b9276d6 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5StrType.h @@ -0,0 +1,69 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5StrType_H +#define __H5StrType_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +//! Class StrType operates on HDF5 string datatypes. +class H5_DLLCPP StrType : public AtomType { + public: + // Creates a string type using a predefined type + StrType(const PredType& pred_type); + + // Creates a string type with specified length - may be obsolete + StrType(const PredType& pred_type, const size_t& size); + + // Creates a string type with specified length + StrType(const int dummy, const size_t& size); + + // Gets the string datatype of the specified dataset + StrType(const DataSet& dataset); + + // Retrieves the character set type of this string datatype. + H5T_cset_t getCset() const; + + // Sets character set to be used. + void setCset(H5T_cset_t cset) const; + + // Retrieves the string padding method for this string datatype. + H5T_str_t getStrpad() const; + + // Defines the storage mechanism for character strings. + void setStrpad(H5T_str_t strpad) const; + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("StrType"); } + + // default constructor + StrType(); + + // Creates a string datatype using an existing id + StrType(const hid_t existing_id); + + // Copy constructor - makes a copy of the original object + StrType(const StrType& original); + + // Noop destructor. + virtual ~StrType(); +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5StrType_H diff --git a/Resources/windows-libs/HDF5/include/H5TBpublic.h b/Resources/windows-libs/HDF5/include/H5TBpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..874ef2077c9521b8a4f4493a0c6157cec4c9f300 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5TBpublic.h @@ -0,0 +1,233 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef _H5TBpublic_H +#define _H5TBpublic_H + + +#ifdef __cplusplus +extern "C" { +#endif + + +/*------------------------------------------------------------------------- + * + * Create functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL herr_t H5TBmake_table( const char *table_title, + hid_t loc_id, + const char *dset_name, + hsize_t nfields, + hsize_t nrecords, + size_t type_size, + const char *field_names[], + const size_t *field_offset, + const hid_t *field_types, + hsize_t chunk_size, + void *fill_data, + int compress, + const void *buf ); + + +/*------------------------------------------------------------------------- + * + * Write functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL herr_t H5TBappend_records( hid_t loc_id, + const char *dset_name, + hsize_t nrecords, + size_t type_size, + const size_t *field_offset, + const size_t *dst_sizes, + const void *buf ); + +H5_HLDLL herr_t H5TBwrite_records( hid_t loc_id, + const char *dset_name, + hsize_t start, + hsize_t nrecords, + size_t type_size, + const size_t *field_offset, + const size_t *dst_sizes, + const void *buf ); + + +H5_HLDLL herr_t H5TBwrite_fields_name( hid_t loc_id, + const char *dset_name, + const char *field_names, + hsize_t start, + hsize_t nrecords, + size_t type_size, + const size_t *field_offset, + const size_t *dst_sizes, + const void *buf ); + +H5_HLDLL herr_t H5TBwrite_fields_index( hid_t loc_id, + const char *dset_name, + hsize_t nfields, + const int *field_index, + hsize_t start, + hsize_t nrecords, + size_t type_size, + const size_t *field_offset, + const size_t *dst_sizes, + const void *buf ); + + +/*------------------------------------------------------------------------- + * + * Read functions + * + *------------------------------------------------------------------------- + */ + + + +H5_HLDLL herr_t H5TBread_table( hid_t loc_id, + const char *dset_name, + size_t dst_size, + const size_t *dst_offset, + const size_t *dst_sizes, + void *dst_buf ); + + +H5_HLDLL herr_t H5TBread_fields_name( hid_t loc_id, + const char *dset_name, + const char *field_names, + hsize_t start, + hsize_t nrecords, + size_t type_size, + const size_t *field_offset, + const size_t *dst_sizes, + void *buf ); + +H5_HLDLL herr_t H5TBread_fields_index( hid_t loc_id, + const char *dset_name, + hsize_t nfields, + const int *field_index, + hsize_t start, + hsize_t nrecords, + size_t type_size, + const size_t *field_offset, + const size_t *dst_sizes, + void *buf ); + + +H5_HLDLL herr_t H5TBread_records( hid_t loc_id, + const char *dset_name, + hsize_t start, + hsize_t nrecords, + size_t type_size, + const size_t *dst_offset, + const size_t *dst_sizes, + void *buf ); + +/*------------------------------------------------------------------------- + * + * Inquiry functions + * + *------------------------------------------------------------------------- + */ + + +H5_HLDLL herr_t H5TBget_table_info ( hid_t loc_id, + const char *dset_name, + hsize_t *nfields, + hsize_t *nrecords ); + +H5_HLDLL herr_t H5TBget_field_info( hid_t loc_id, + const char *dset_name, + char *field_names[], + size_t *field_sizes, + size_t *field_offsets, + size_t *type_size ); + + +/*------------------------------------------------------------------------- + * + * Manipulation functions + * + *------------------------------------------------------------------------- + */ + + +H5_HLDLL herr_t H5TBdelete_record( hid_t loc_id, + const char *dset_name, + hsize_t start, + hsize_t nrecords ); + + +H5_HLDLL herr_t H5TBinsert_record( hid_t loc_id, + const char *dset_name, + hsize_t start, + hsize_t nrecords, + size_t dst_size, + const size_t *dst_offset, + const size_t *dst_sizes, + void *buf ); + +H5_HLDLL herr_t H5TBadd_records_from( hid_t loc_id, + const char *dset_name1, + hsize_t start1, + hsize_t nrecords, + const char *dset_name2, + hsize_t start2 ); + +H5_HLDLL herr_t H5TBcombine_tables( hid_t loc_id1, + const char *dset_name1, + hid_t loc_id2, + const char *dset_name2, + const char *dset_name3 ); + +H5_HLDLL herr_t H5TBinsert_field( hid_t loc_id, + const char *dset_name, + const char *field_name, + hid_t field_type, + hsize_t position, + const void *fill_data, + const void *buf ); + +H5_HLDLL herr_t H5TBdelete_field( hid_t loc_id, + const char *dset_name, + const char *field_name ); + + +/*------------------------------------------------------------------------- + * + * Table attribute functions + * + *------------------------------------------------------------------------- + */ + +H5_HLDLL herr_t H5TBAget_title( hid_t loc_id, + char *table_title ); + +H5_HLDLL htri_t H5TBAget_fill(hid_t loc_id, + const char *dset_name, + hid_t dset_id, + unsigned char *dst_buf); + +#ifdef __cplusplus +} +#endif + + +#endif + diff --git a/Resources/windows-libs/HDF5/include/H5Tpkg.h b/Resources/windows-libs/HDF5/include/H5Tpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..bd37829680c8dfd1f854bedf0eefd08aa502931a --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Tpkg.h @@ -0,0 +1,1409 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke <matzke@llnl.gov> + * Monday, December 8, 1997 + * + * Purpose: This file contains declarations which are visible only within + * the H5T package. Source files outside the H5T package should + * include H5Tprivate.h instead. + */ +#ifndef H5T_PACKAGE +#error "Do not include this file outside the H5T package!" +#endif + +#ifndef _H5Tpkg_H +#define _H5Tpkg_H + +/* + * Define this to enable debugging. + */ +#ifdef NDEBUG +# undef H5T_DEBUG +#endif + +/* Get package's private header */ +#include "H5Tprivate.h" + +/* Other private headers needed by this file */ +#include "H5Fprivate.h" /* Files */ +#include "H5FLprivate.h" /* Free Lists */ +#include "H5Oprivate.h" /* Object headers */ + +/* Other public headers needed by this file */ +#include "H5Spublic.h" /* Dataspace functions */ + +/* Length of debugging name buffer */ +#define H5T_NAMELEN 32 + +/* Macro to ease detecting "complex" datatypes (i.e. those with base types or fields) */ +#define H5T_IS_COMPLEX(t) ((t) == H5T_COMPOUND || (t) == H5T_ENUM || (t) == H5T_VLEN || (t) == H5T_ARRAY) + +/* Macro to ease detecting fixed "string" datatypes */ +#define H5T_IS_FIXED_STRING(dt) (H5T_STRING == (dt)->type) + +/* Macro to ease detecting variable-length "string" datatypes */ +#define H5T_IS_VL_STRING(dt) (H5T_VLEN == (dt)->type && H5T_VLEN_STRING == (dt)->u.vlen.type) + +/* Macro to ease detecting fixed or variable-length "string" datatypes */ +#define H5T_IS_STRING(dt) (H5T_IS_FIXED_STRING(dt) || H5T_IS_VL_STRING(dt)) + +/* Macro to ease detecting atomic datatypes */ +#define H5T_IS_ATOMIC(dt) (!(H5T_IS_COMPLEX((dt)->type) || (dt)->type == H5T_OPAQUE)) + +/* Macro to ease retrieving class of shared datatype */ +/* (Externally, a VL string is a string; internally, a VL string is a VL. Lie + * to the user if they have a VL string and tell them it's in the string + * class) + */ +#define H5T_GET_CLASS(shared, internal) ((internal) ? (shared)->type : (H5T_IS_VL_STRING(shared) ? H5T_STRING : (shared)->type)) + + +/* + * Datatype encoding versions + */ + +/* This is the version to create all datatypes which don't contain + * array datatypes (atomic types, compound datatypes without array fields, + * vlen sequences of objects which aren't arrays, etc.) or VAX byte-ordered + * objects. + */ +#define H5O_DTYPE_VERSION_1 1 + +/* This is the version to create all datatypes which contain H5T_ARRAY + * class objects (array definitely, potentially compound & vlen sequences also), + * but not VAX byte-ordered objects. + */ +#define H5O_DTYPE_VERSION_2 2 + +/* This is the version to create all datatypes which contain VAX byte-ordered + * objects (floating-point types, currently). + */ +/* This version also packs compound & enum field names without padding */ +/* This version also encodes the member offset of compound fields more efficiently */ +/* This version also encodes array types more efficiently */ +#define H5O_DTYPE_VERSION_3 3 + +/* The latest version of the format. Look through the 'encode helper' routine + * and 'size' callback for places to change when updating this. */ +#define H5O_DTYPE_VERSION_LATEST H5O_DTYPE_VERSION_3 + + +/* Flags for visiting datatype */ +#define H5T_VISIT_COMPLEX_FIRST 0x01 /* Visit complex datatype before visiting member/parent datatypes */ +#define H5T_VISIT_COMPLEX_LAST 0x02 /* Visit complex datatype after visiting member/parent datatypes */ + /* (setting both flags will mean visiting complex type twice) */ +#define H5T_VISIT_SIMPLE 0x04 /* Visit simple datatypes (at all) */ + /* (setting H5T_VISIT_SIMPLE and _not_ setting either H5T_VISIT_COMPLEX_FIRST or H5T_VISIT_COMPLEX_LAST will mean visiting _only_ "simple" "leafs" in the "tree" */ + /* (_not_ setting H5T_VISIT_SIMPLE and setting either H5T_VISIT_COMPLEX_FIRST or H5T_VISIT_COMPLEX_LAST will mean visiting all nodes _except_ "simple" "leafs" in the "tree" */ + + +/* Define an internal macro for converting between floating number(float and double) and floating number. + * All Cray compilers don't support denormalized floating values generating exception(?). */ +#if H5_CONVERT_DENORMAL_FLOAT +#define H5T_CONV_INTERNAL_FP_FP 1 +#endif /*H5_CONVERT_DENORMAL_FLOAT*/ + +/* Define an internal macro for converting between floating number(float and double) and long double. + * All Cray compilers don't support denormalized floating values generating exception(?). NEC doesn't + * support long double. */ +#if H5_SIZEOF_LONG_DOUBLE && H5_CONVERT_DENORMAL_FLOAT +#define H5T_CONV_INTERNAL_FP_LDOUBLE 1 +#endif /*H5_SIZEOF_LONG_DOUBLE && H5_CONVERT_DENORMAL_FLOAT*/ + +/* Define an internal macro for converting all integers to long double. SGI compilers give some + * incorrect conversions. */ +#if (H5_WANT_DATA_ACCURACY && H5_INTEGER_TO_LDOUBLE_ACCURATE) || (!H5_WANT_DATA_ACCURACY) +#define H5T_CONV_INTERNAL_INTEGER_LDOUBLE 1 +#endif + +/* Define an internal macro for converting unsigned long to float. + * Pathscale compiler on Sandia's Linux machine has some problem. + * 64-bit Solaris does different rounding. */ +#if (H5_WANT_DATA_ACCURACY && H5_ULONG_TO_FLOAT_ACCURATE && H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE) || \ + (!H5_WANT_DATA_ACCURACY) +#define H5T_CONV_INTERNAL_ULONG_FLT 1 +#endif + +/* Define an internal macro for converting unsigned (long) long to double. + * 64-bit Solaris does different rounding. */ +#if (H5_WANT_DATA_ACCURACY && H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE) || (!H5_WANT_DATA_ACCURACY) +#define H5T_CONV_INTERNAL_ULONG_DBL 1 +#endif + +/* Define an internal macro for converting unsigned long to long double. SGI compilers give some + * incorrect conversions. 64-bit Solaris does different rounding. */ +#if (H5_WANT_DATA_ACCURACY && H5_INTEGER_TO_LDOUBLE_ACCURATE && H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE) || \ + (!H5_WANT_DATA_ACCURACY) +#define H5T_CONV_INTERNAL_ULONG_LDOUBLE 1 +#endif + +/* Define an internal macro for converting long long to long double. Mac OS 10.4 gives some + * incorrect conversions. */ +#if (H5_WANT_DATA_ACCURACY && H5_INTEGER_TO_LDOUBLE_ACCURATE && defined(H5_LLONG_TO_LDOUBLE_CORRECT)) || \ + (!H5_WANT_DATA_ACCURACY) +#define H5T_CONV_INTERNAL_LLONG_LDOUBLE 1 +#endif + +/* Define an internal macro for converting unsigned long long to floating numbers. SGI compilers give + * some incorect conversion. 64-bit Solaris does different rounding. Windows Visual Studio 6 does + * not support unsigned long long. */ +#if (H5_WANT_DATA_ACCURACY && H5_ULLONG_TO_FP_CAST_WORKS && H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE) || \ + (!H5_WANT_DATA_ACCURACY && H5_ULLONG_TO_FP_CAST_WORKS) +#define H5T_CONV_INTERNAL_ULLONG_FP 1 +#endif + +/* Define an internal macro for converting unsigned long long to long double. SGI compilers give + * some incorect conversion. 64-bit Solaris does different rounding. Windows Visual Studio 6 does + * not support unsigned long long. For FreeBSD(sleipnir), the last 2 bytes of mantissa are lost when + * compiler tries to do the conversion. For Cygwin, compiler doesn't do rounding correctly. + * Mac OS 10.4 gives some incorrect result. */ +#if (H5_WANT_DATA_ACCURACY && H5_ULLONG_TO_FP_CAST_WORKS && H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE && \ + defined(H5_ULLONG_TO_LDOUBLE_PRECISION) && defined(H5_LLONG_TO_LDOUBLE_CORRECT)) || (!H5_WANT_DATA_ACCURACY && \ + H5_ULLONG_TO_FP_CAST_WORKS) +#define H5T_CONV_INTERNAL_ULLONG_LDOUBLE 1 +#endif + +/* Define an internal macro for converting long double to all integers. SGI compilers give some incorrect + * conversions. HP-UX 11.00 compiler generates floating exception. */ +#if (H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_ACCURATE && H5_LDOUBLE_TO_INTEGER_WORKS) || \ + (!H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_WORKS) +#define H5T_CONV_INTERNAL_LDOUBLE_INTEGER 1 +#endif + +/* Define an internal macro for converting long double to unsigned int. SGI compilers give some incorrect + * conversions. HP-UX 11.00 compiler generates floating exception. Some Intel compilers on some Linux + * give incorrect values. */ +#if (H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_ACCURATE && H5_LDOUBLE_TO_UINT_ACCURATE && \ + H5_LDOUBLE_TO_INTEGER_WORKS) || (!H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_WORKS) +#define H5T_CONV_INTERNAL_LDOUBLE_UINT 1 +#endif + +/* Define an internal macro for converting floating numbers to long long. The hard conversion on Windows + * .NET 2003 has a bug and gives wrong exception value. */ +#if (H5_WANT_DATA_ACCURACY && !defined(H5_HW_FP_TO_LLONG_NOT_WORKS)) || (!H5_WANT_DATA_ACCURACY) +#define H5T_CONV_INTERNAL_FP_LLONG 1 +#endif + +/* Define an internal macro for converting long double to long long. SGI compilers give some incorrect + * conversions. Mac OS 10.4 gives incorrect conversions. HP-UX 11.00 compiler generates floating exception. + * The hard conversion on Windows .NET 2003 has a bug and gives wrong exception value. */ +#if (H5_WANT_DATA_ACCURACY && !defined(H5_HW_FP_TO_LLONG_NOT_WORKS) && H5_LDOUBLE_TO_INTEGER_ACCURATE && \ + H5_LDOUBLE_TO_INTEGER_WORKS && defined(H5_LDOUBLE_TO_LLONG_ACCURATE)) || \ + (!H5_WANT_DATA_ACCURACY && !defined(H5_HW_FP_TO_LLONG_NOT_WORKS) && H5_LDOUBLE_TO_INTEGER_WORKS) +#define H5T_CONV_INTERNAL_LDOUBLE_LLONG 1 +#endif + +/* Define an internal macro for converting floating numbers to unsigned long long. PGI compiler does + * roundup when the source fraction part is greater than 0.5. HP-UX compilers set the maximal number + * for unsigned long long as 0x7fffffffffffffff during conversion. */ +#if (H5_WANT_DATA_ACCURACY && H5_FP_TO_ULLONG_ACCURATE && defined(H5_FP_TO_ULLONG_RIGHT_MAXIMUM)) || \ + (!H5_WANT_DATA_ACCURACY) +#define H5T_CONV_INTERNAL_FP_ULLONG 1 +#else +#define H5T_CONV_INTERNAL_FP_ULLONG 0 +#endif + +/* Define an internal macro for converting long double to unsigned long long. SGI compilers give some + * incorrect conversions. Mac OS 10.4 gives incorrect conversions. HP-UX 11.00 compiler generates + * floating exception. */ +#if (H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_ACCURATE && H5_LDOUBLE_TO_INTEGER_WORKS && \ + H5_FP_TO_ULLONG_ACCURATE && defined(H5_FP_TO_ULLONG_RIGHT_MAXIMUM) && defined(H5_LDOUBLE_TO_LLONG_ACCURATE)) || \ + (!H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_WORKS) +#define H5T_CONV_INTERNAL_LDOUBLE_ULLONG 1 +#else +#define H5T_CONV_INTERNAL_LDOUBLE_ULLONG 0 +#endif + +/* Statistics about a conversion function */ +struct H5T_stats_t { + unsigned ncalls; /*num calls to conversion function */ + hsize_t nelmts; /*total data points converted */ + H5_timer_t timer; /*total time for conversion */ +}; + +/* The datatype conversion database */ +struct H5T_path_t { + char name[H5T_NAMELEN]; /*name for debugging only */ + H5T_t *src; /*source datatype */ + H5T_t *dst; /*destination datatype */ + H5T_conv_t func; /*data conversion function */ + hbool_t is_hard; /*is it a hard function? */ + hbool_t is_noop; /*is it the noop conversion? */ + hbool_t are_compounds; /*are source and dest both compounds?*/ + H5T_stats_t stats; /*statistics for the conversion */ + H5T_cdata_t cdata; /*data for this function */ +}; + +typedef struct H5T_atomic_t { + H5T_order_t order; /*byte order */ + size_t prec; /*precision in bits */ + size_t offset; /*bit position of lsb of value */ + H5T_pad_t lsb_pad;/*type of lsb padding */ + H5T_pad_t msb_pad;/*type of msb padding */ + union { + struct { + H5T_sign_t sign; /*type of integer sign */ + } i; /*integer; integer types */ + + struct { + size_t sign; /*bit position of sign bit */ + size_t epos; /*position of lsb of exponent */ + size_t esize; /*size of exponent in bits */ + uint64_t ebias; /*exponent bias */ + size_t mpos; /*position of lsb of mantissa */ + size_t msize; /*size of mantissa */ + H5T_norm_t norm; /*normalization */ + H5T_pad_t pad; /*type of padding for internal bits */ + } f; /*floating-point types */ + + struct { + H5T_cset_t cset; /*character set */ + H5T_str_t pad; /*space or null padding of extra bytes */ + } s; /*string types */ + + struct { + H5R_type_t rtype; /*type of reference stored */ + H5T_loc_t loc; /* Location of data in buffer */ + } r; /*reference types */ + } u; +} H5T_atomic_t; + +/* How members are sorted for compound or enum datatypes */ +typedef enum H5T_sort_t { + H5T_SORT_NONE = 0, /*not sorted */ + H5T_SORT_NAME = 1, /*sorted by member name */ + H5T_SORT_VALUE = 2 /*sorted by memb offset or enum value*/ +} H5T_sort_t; + +/* A compound datatype member */ +typedef struct H5T_cmemb_t { + char *name; /*name of this member */ + size_t offset; /*offset from beginning of struct */ + size_t size; /*size of this member */ + struct H5T_t *type; /*type of this member */ +} H5T_cmemb_t; + +/* A compound datatype */ +typedef struct H5T_compnd_t { + unsigned nalloc; /*num entries allocated in MEMB array*/ + unsigned nmembs; /*number of members defined in struct*/ + H5T_sort_t sorted; /*how are members sorted? */ + hbool_t packed; /*are members packed together? */ + H5T_cmemb_t *memb; /*array of struct members */ + size_t memb_size; /*total of all member sizes */ +} H5T_compnd_t; + +/* An enumeration datatype */ +typedef struct H5T_enum_t { + unsigned nalloc; /*num entries allocated */ + unsigned nmembs; /*number of members defined in enum */ + H5T_sort_t sorted; /*how are members sorted? */ + uint8_t *value; /*array of values */ + char **name; /*array of symbol names */ +} H5T_enum_t; + +/* VL function pointers */ +typedef ssize_t (*H5T_vlen_getlenfunc_t)(const void *vl_addr); +typedef void * (*H5T_vlen_getptrfunc_t)(void *vl_addr); +typedef htri_t (*H5T_vlen_isnullfunc_t)(const H5F_t *f, void *vl_addr); +typedef herr_t (*H5T_vlen_readfunc_t)(H5F_t *f, hid_t dxpl_id, void *_vl, void *buf, size_t len); +typedef herr_t (*H5T_vlen_writefunc_t)(H5F_t *f, hid_t dxpl_id, const H5T_vlen_alloc_info_t *vl_alloc_info, void *_vl, void *buf, void *_bg, size_t seq_len, size_t base_size); +typedef herr_t (*H5T_vlen_setnullfunc_t)(H5F_t *f, hid_t dxpl_id, void *_vl, void *_bg); + +/* VL types */ +typedef enum { + H5T_VLEN_BADTYPE = -1, /* invalid VL Type */ + H5T_VLEN_SEQUENCE = 0, /* VL sequence */ + H5T_VLEN_STRING, /* VL string */ + H5T_VLEN_MAXTYPE /* highest type (Invalid as true type) */ +} H5T_vlen_type_t; + +/* A VL datatype */ +typedef struct H5T_vlen_t { + H5T_vlen_type_t type; /* Type of VL data in buffer */ + H5T_loc_t loc; /* Location of VL data in buffer */ + H5T_cset_t cset; /* For VL string. character set */ + H5T_str_t pad; /* For VL string. space or null padding of + * extra bytes */ + H5F_t *f; /* File ID (if VL data is on disk) */ + H5T_vlen_getptrfunc_t getptr; /* Function to get VL sequence pointer */ + H5T_vlen_getlenfunc_t getlen; /* Function to get VL sequence size (in element units, not bytes) */ + H5T_vlen_isnullfunc_t isnull; /* Function to check if VL value is NIL */ + H5T_vlen_readfunc_t read; /* Function to read VL sequence into buffer */ + H5T_vlen_writefunc_t write; /* Function to write VL sequence from buffer */ + H5T_vlen_setnullfunc_t setnull; /* Function to set a VL value to NIL */ +} H5T_vlen_t; + +/* An opaque datatype */ +typedef struct H5T_opaque_t { + char *tag; /*short type description string */ +} H5T_opaque_t; + +/* An array datatype */ +typedef struct H5T_array_t { + size_t nelem; /* total number of elements in array */ + unsigned ndims; /* member dimensionality */ + size_t dim[H5S_MAX_RANK]; /* size in each dimension */ +} H5T_array_t; + +typedef enum H5T_state_t { + H5T_STATE_TRANSIENT, /*type is a modifiable, closable transient */ + H5T_STATE_RDONLY, /*transient, not modifiable, closable */ + H5T_STATE_IMMUTABLE, /*transient, not modifiable, not closable */ + H5T_STATE_NAMED, /*named constant, not open */ + H5T_STATE_OPEN /*named constant, open object header */ +} H5T_state_t; + + /* This struct is shared between all occurances of an open named type */ +typedef struct H5T_shared_t { + hsize_t fo_count; /* number of references to this file object */ + H5T_state_t state; /*current state of the type */ + H5T_class_t type; /*which class of type is this? */ + size_t size; /*total size of an instance of this type */ + unsigned version; /* Version of object header message to encode this object with */ + hbool_t force_conv;/* Set if this type always needs to be converted and H5T__conv_noop cannot be called */ + struct H5T_t *parent;/*parent type for derived datatypes */ + union { + H5T_atomic_t atomic; /* an atomic datatype */ + H5T_compnd_t compnd; /* a compound datatype (struct) */ + H5T_enum_t enumer; /* an enumeration type (enum) */ + H5T_vlen_t vlen; /* a variable-length datatype */ + H5T_opaque_t opaque; /* an opaque datatype */ + H5T_array_t array; /* an array datatype */ + } u; +} H5T_shared_t; + +struct H5T_t { + H5O_shared_t sh_loc; /* Shared message info (must be first) */ + + H5T_shared_t *shared; /* all other information */ + H5O_loc_t oloc; /* Object location, if the type is a named type */ + H5G_name_t path; /* group hier. path if the type is a named type */ +}; + +/* The master list of soft conversion functions */ +typedef struct H5T_soft_t { + char name[H5T_NAMELEN]; /*name for debugging only */ + H5T_class_t src; /*source datatype class */ + H5T_class_t dst; /*destination datatype class */ + H5T_conv_t func; /*the conversion function */ +} H5T_soft_t; + +/* Bit search direction */ +typedef enum H5T_sdir_t { + H5T_BIT_LSB, /*search lsb toward msb */ + H5T_BIT_MSB /*search msb toward lsb */ +} H5T_sdir_t; + +/* Typedef for named datatype creation operation */ +typedef struct { + H5T_t *dt; /* Datatype to commit */ + hid_t tcpl_id; /* Named datatype creation property list */ +} H5T_obj_create_t; + +/* Typedef for datatype iteration operations */ +typedef herr_t (*H5T_operator_t)(H5T_t *dt, void *op_data/*in,out*/); + +/* + * Alignment information for native types. A value of N indicates that the + * data must be aligned on an address ADDR such that 0 == ADDR mod N. When + * N=1 no alignment is required; N=0 implies that alignment constraints were + * not calculated. These alignment info is only for H5Tget_native_type. + * These values are used for structure alignment. + */ +H5_DLLVAR size_t H5T_NATIVE_SCHAR_COMP_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_SHORT_COMP_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_INT_COMP_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_LONG_COMP_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_LLONG_COMP_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_FLOAT_COMP_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_DOUBLE_COMP_ALIGN_g; +#if H5_SIZEOF_LONG_DOUBLE !=0 +H5_DLLVAR size_t H5T_NATIVE_LDOUBLE_COMP_ALIGN_g; +#endif + +H5_DLLVAR size_t H5T_POINTER_COMP_ALIGN_g; +H5_DLLVAR size_t H5T_HVL_COMP_ALIGN_g; +H5_DLLVAR size_t H5T_HOBJREF_COMP_ALIGN_g; +H5_DLLVAR size_t H5T_HDSETREGREF_COMP_ALIGN_g; + +/* + * Alignment information for native types. A value of N indicates that the + * data must be aligned on an address ADDR such that 0 == ADDR mod N. When + * N=1 no alignment is required; N=0 implies that alignment constraints were + * not calculated. + */ +H5_DLLVAR size_t H5T_NATIVE_SCHAR_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UCHAR_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_SHORT_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_USHORT_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_INT_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_LONG_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_ULONG_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_LLONG_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_ULLONG_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_FLOAT_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_DOUBLE_ALIGN_g; +#if H5_SIZEOF_LONG_DOUBLE !=0 +H5_DLLVAR size_t H5T_NATIVE_LDOUBLE_ALIGN_g; +#endif + +/* C9x alignment constraints */ +H5_DLLVAR size_t H5T_NATIVE_INT8_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT8_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_INT_LEAST8_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT_LEAST8_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_INT_FAST8_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT_FAST8_ALIGN_g; + +H5_DLLVAR size_t H5T_NATIVE_INT16_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT16_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_INT_LEAST16_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT_LEAST16_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_INT_FAST16_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT_FAST16_ALIGN_g; + +H5_DLLVAR size_t H5T_NATIVE_INT32_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT32_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_INT_LEAST32_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT_LEAST32_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_INT_FAST32_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT_FAST32_ALIGN_g; + +H5_DLLVAR size_t H5T_NATIVE_INT64_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT64_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_INT_LEAST64_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT_LEAST64_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_INT_FAST64_ALIGN_g; +H5_DLLVAR size_t H5T_NATIVE_UINT_FAST64_ALIGN_g; + +/* Useful floating-point values for conversion routines */ +/* (+/- Inf for all floating-point types) */ +H5_DLLVAR float H5T_NATIVE_FLOAT_POS_INF_g; +H5_DLLVAR float H5T_NATIVE_FLOAT_NEG_INF_g; +H5_DLLVAR double H5T_NATIVE_DOUBLE_POS_INF_g; +H5_DLLVAR double H5T_NATIVE_DOUBLE_NEG_INF_g; +#if H5_SIZEOF_LONG_DOUBLE !=0 +H5_DLLVAR double H5T_NATIVE_LDOUBLE_POS_INF_g; +H5_DLLVAR double H5T_NATIVE_LDOUBLE_NEG_INF_g; +#endif + +/* Declare extern the free lists for H5T_t's and H5T_shared_t's */ +H5FL_EXTERN(H5T_t); +H5FL_EXTERN(H5T_shared_t); + +/* Common functions */ +H5_DLL herr_t H5T__term_deprec_interface(void); +H5_DLL H5T_t *H5T__create(H5T_class_t type, size_t size); +H5_DLL herr_t H5T__commit(H5F_t *file, H5T_t *type, hid_t tcpl_id, hid_t dxpl_id); +H5_DLL herr_t H5T__commit_named(const H5G_loc_t *loc, const char *name, + H5T_t *dt, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id, hid_t dxpl_id); +H5_DLL H5T_t *H5T__alloc(void); +H5_DLL herr_t H5T__free(H5T_t *dt); +H5_DLL herr_t H5T__visit(H5T_t *dt, unsigned visit_flags, H5T_operator_t op, + void *op_value); +H5_DLL herr_t H5T__upgrade_version(H5T_t *dt, unsigned new_version); + +/* Conversion functions */ +H5_DLL herr_t H5T__conv_noop(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *buf, void *bkg, + hid_t dset_xfer_plist); + +H5_DLL herr_t H5T__conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *_buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_order_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *_buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *_buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *_buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_enum_numeric(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_array(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *_buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *_buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *_buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *_buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_s_s(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *_buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *_buf, void *bkg, + hid_t dset_xfer_plist); + +H5_DLL herr_t H5T__conv_schar_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_schar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_schar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, + size_t bkg_stride, void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_schar_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_schar_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_schar_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_schar_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_schar_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_schar_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); + +H5_DLL herr_t H5T__conv_short_schar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_short_uchar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_schar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_uchar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_short_ushort(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_short(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_short_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_short_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_short_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_short_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_short_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_short_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); + +H5_DLL herr_t H5T__conv_int_schar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_int_uchar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_schar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_uchar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_int_short(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_int_ushort(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_short(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_ushort(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_int_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_int_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_int_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_int_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_int_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); + +H5_DLL herr_t H5T__conv_long_schar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_long_uchar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_schar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_uchar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_long_short(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_long_ushort(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_short(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_ushort(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_long_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_long_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_long_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_long_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_long_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); + +H5_DLL herr_t H5T__conv_llong_schar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_llong_uchar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_schar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_uchar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_llong_short(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_llong_ushort(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_short(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_ushort(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_llong_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_llong_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_llong_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_llong_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_llong_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_schar_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_schar_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_schar_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uchar_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_short_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_short_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_short_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ushort_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_int_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_int_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_int_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_uint_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_long_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_long_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_long_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ulong_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_llong_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_llong_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_llong_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_float(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_double(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ullong_ldouble(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_schar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_uchar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_short(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_ushort(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_float_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_schar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_uchar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_short(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_ushort(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_double_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_schar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_uchar(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_short(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_ushort(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_int(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_uint(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_long(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_ulong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_llong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); +H5_DLL herr_t H5T__conv_ldouble_ullong(hid_t src_id, hid_t dst_id, + H5T_cdata_t *cdata, size_t nelmts, + size_t buf_stride, size_t bkg_stride, + void *buf, void *bkg, + hid_t dset_xfer_plist); + +/* Bit twiddling functions */ +H5_DLL void H5T__bit_copy(uint8_t *dst, size_t dst_offset, const uint8_t *src, + size_t src_offset, size_t size); +H5_DLL herr_t H5T__bit_shift(uint8_t *buf, ssize_t shift_dist, size_t offset, size_t size); +H5_DLL void H5T__bit_set(uint8_t *buf, size_t offset, size_t size, + hbool_t value); +H5_DLL uint64_t H5T__bit_get_d(uint8_t *buf, size_t offset, size_t size); +H5_DLL void H5T__bit_set_d(uint8_t *buf, size_t offset, size_t size, + uint64_t val); +H5_DLL ssize_t H5T__bit_find(uint8_t *buf, size_t offset, size_t size, + H5T_sdir_t direction, hbool_t value); +H5_DLL htri_t H5T__bit_inc(uint8_t *buf, size_t start, size_t size); +H5_DLL htri_t H5T__bit_dec(uint8_t *buf, size_t start, size_t size); +H5_DLL void H5T__bit_neg(uint8_t *buf, size_t start, size_t size); + +/* VL functions */ +H5_DLL H5T_t * H5T__vlen_create(const H5T_t *base); +H5_DLL htri_t H5T__vlen_set_loc(const H5T_t *dt, H5F_t *f, H5T_loc_t loc); + +/* Array functions */ +H5_DLL H5T_t *H5T__array_create(H5T_t *base, unsigned ndims, const hsize_t dim[/* ndims */]); +H5_DLL int H5T__get_array_ndims(const H5T_t *dt); +H5_DLL int H5T__get_array_dims(const H5T_t *dt, hsize_t dims[]); + +/* Compound functions */ +H5_DLL herr_t H5T__insert(H5T_t *parent, const char *name, size_t offset, + const H5T_t *member); +H5_DLL size_t H5T__get_member_size(const H5T_t *dt, unsigned membno); +H5_DLL void H5T__update_packed(const H5T_t *dt); +H5_DLL H5T_subset_info_t *H5T__conv_struct_subset(const H5T_cdata_t *cdata); + +/* Enumerated type functions */ +H5_DLL H5T_t *H5T__enum_create(const H5T_t *parent); +H5_DLL herr_t H5T__enum_insert(const H5T_t *dt, const char *name, const void *value); +H5_DLL herr_t H5T__get_member_value(const H5T_t *dt, unsigned membno, void *value); + +/* Field functions (for both compound & enumerated types) */ +H5_DLL char *H5T__get_member_name(H5T_t const *dt, unsigned membno); +H5_DLL herr_t H5T__sort_value(const H5T_t *dt, int *map); +H5_DLL herr_t H5T__sort_name(const H5T_t *dt, int *map); + +/* Debugging functions */ +H5_DLL herr_t H5T__print_stats(H5T_path_t *path, int *nprint/*in,out*/); + +#endif /* _H5Tpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Tpublic.h b/Resources/windows-libs/HDF5/include/H5Tpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..d646ef1e887e048fdf6a5de709e2bd6db4f45519 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Tpublic.h @@ -0,0 +1,621 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5T module. + */ +#ifndef _H5Tpublic_H +#define _H5Tpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Ipublic.h" + +#define HOFFSET(S,M) (offsetof(S,M)) + +/* These are the various classes of datatypes */ +/* If this goes over 16 types (0-15), the file format will need to change) */ +typedef enum H5T_class_t { + H5T_NO_CLASS = -1, /*error */ + H5T_INTEGER = 0, /*integer types */ + H5T_FLOAT = 1, /*floating-point types */ + H5T_TIME = 2, /*date and time types */ + H5T_STRING = 3, /*character string types */ + H5T_BITFIELD = 4, /*bit field types */ + H5T_OPAQUE = 5, /*opaque types */ + H5T_COMPOUND = 6, /*compound types */ + H5T_REFERENCE = 7, /*reference types */ + H5T_ENUM = 8, /*enumeration types */ + H5T_VLEN = 9, /*Variable-Length types */ + H5T_ARRAY = 10, /*Array types */ + + H5T_NCLASSES /*this must be last */ +} H5T_class_t; + +/* Byte orders */ +typedef enum H5T_order_t { + H5T_ORDER_ERROR = -1, /*error */ + H5T_ORDER_LE = 0, /*little endian */ + H5T_ORDER_BE = 1, /*bit endian */ + H5T_ORDER_VAX = 2, /*VAX mixed endian */ + H5T_ORDER_MIXED = 3, /*Compound type with mixed member orders */ + H5T_ORDER_NONE = 4 /*no particular order (strings, bits,..) */ + /*H5T_ORDER_NONE must be last */ +} H5T_order_t; + +/* Types of integer sign schemes */ +typedef enum H5T_sign_t { + H5T_SGN_ERROR = -1, /*error */ + H5T_SGN_NONE = 0, /*this is an unsigned type */ + H5T_SGN_2 = 1, /*two's complement */ + + H5T_NSGN = 2 /*this must be last! */ +} H5T_sign_t; + +/* Floating-point normalization schemes */ +typedef enum H5T_norm_t { + H5T_NORM_ERROR = -1, /*error */ + H5T_NORM_IMPLIED = 0, /*msb of mantissa isn't stored, always 1 */ + H5T_NORM_MSBSET = 1, /*msb of mantissa is always 1 */ + H5T_NORM_NONE = 2 /*not normalized */ + /*H5T_NORM_NONE must be last */ +} H5T_norm_t; + +/* + * Character set to use for text strings. Do not change these values since + * they appear in HDF5 files! + */ +typedef enum H5T_cset_t { + H5T_CSET_ERROR = -1, /*error */ + H5T_CSET_ASCII = 0, /*US ASCII */ + H5T_CSET_UTF8 = 1, /*UTF-8 Unicode encoding */ + H5T_CSET_RESERVED_2 = 2, /*reserved for later use */ + H5T_CSET_RESERVED_3 = 3, /*reserved for later use */ + H5T_CSET_RESERVED_4 = 4, /*reserved for later use */ + H5T_CSET_RESERVED_5 = 5, /*reserved for later use */ + H5T_CSET_RESERVED_6 = 6, /*reserved for later use */ + H5T_CSET_RESERVED_7 = 7, /*reserved for later use */ + H5T_CSET_RESERVED_8 = 8, /*reserved for later use */ + H5T_CSET_RESERVED_9 = 9, /*reserved for later use */ + H5T_CSET_RESERVED_10 = 10, /*reserved for later use */ + H5T_CSET_RESERVED_11 = 11, /*reserved for later use */ + H5T_CSET_RESERVED_12 = 12, /*reserved for later use */ + H5T_CSET_RESERVED_13 = 13, /*reserved for later use */ + H5T_CSET_RESERVED_14 = 14, /*reserved for later use */ + H5T_CSET_RESERVED_15 = 15 /*reserved for later use */ +} H5T_cset_t; +#define H5T_NCSET H5T_CSET_RESERVED_2 /*Number of character sets actually defined */ + +/* + * Type of padding to use in character strings. Do not change these values + * since they appear in HDF5 files! + */ +typedef enum H5T_str_t { + H5T_STR_ERROR = -1, /*error */ + H5T_STR_NULLTERM = 0, /*null terminate like in C */ + H5T_STR_NULLPAD = 1, /*pad with nulls */ + H5T_STR_SPACEPAD = 2, /*pad with spaces like in Fortran */ + H5T_STR_RESERVED_3 = 3, /*reserved for later use */ + H5T_STR_RESERVED_4 = 4, /*reserved for later use */ + H5T_STR_RESERVED_5 = 5, /*reserved for later use */ + H5T_STR_RESERVED_6 = 6, /*reserved for later use */ + H5T_STR_RESERVED_7 = 7, /*reserved for later use */ + H5T_STR_RESERVED_8 = 8, /*reserved for later use */ + H5T_STR_RESERVED_9 = 9, /*reserved for later use */ + H5T_STR_RESERVED_10 = 10, /*reserved for later use */ + H5T_STR_RESERVED_11 = 11, /*reserved for later use */ + H5T_STR_RESERVED_12 = 12, /*reserved for later use */ + H5T_STR_RESERVED_13 = 13, /*reserved for later use */ + H5T_STR_RESERVED_14 = 14, /*reserved for later use */ + H5T_STR_RESERVED_15 = 15 /*reserved for later use */ +} H5T_str_t; +#define H5T_NSTR H5T_STR_RESERVED_3 /*num H5T_str_t types actually defined */ + +/* Type of padding to use in other atomic types */ +typedef enum H5T_pad_t { + H5T_PAD_ERROR = -1, /*error */ + H5T_PAD_ZERO = 0, /*always set to zero */ + H5T_PAD_ONE = 1, /*always set to one */ + H5T_PAD_BACKGROUND = 2, /*set to background value */ + + H5T_NPAD = 3 /*THIS MUST BE LAST */ +} H5T_pad_t; + +/* Commands sent to conversion functions */ +typedef enum H5T_cmd_t { + H5T_CONV_INIT = 0, /*query and/or initialize private data */ + H5T_CONV_CONV = 1, /*convert data from source to dest datatype */ + H5T_CONV_FREE = 2 /*function is being removed from path */ +} H5T_cmd_t; + +/* How is the `bkg' buffer used by the conversion function? */ +typedef enum H5T_bkg_t { + H5T_BKG_NO = 0, /*background buffer is not needed, send NULL */ + H5T_BKG_TEMP = 1, /*bkg buffer used as temp storage only */ + H5T_BKG_YES = 2 /*init bkg buf with data before conversion */ +} H5T_bkg_t; + +/* Type conversion client data */ +typedef struct H5T_cdata_t { + H5T_cmd_t command;/*what should the conversion function do? */ + H5T_bkg_t need_bkg;/*is the background buffer needed? */ + hbool_t recalc; /*recalculate private data */ + void *priv; /*private data */ +} H5T_cdata_t; + +/* Conversion function persistence */ +typedef enum H5T_pers_t { + H5T_PERS_DONTCARE = -1, /*wild card */ + H5T_PERS_HARD = 0, /*hard conversion function */ + H5T_PERS_SOFT = 1 /*soft conversion function */ +} H5T_pers_t; + +/* The order to retrieve atomic native datatype */ +typedef enum H5T_direction_t { + H5T_DIR_DEFAULT = 0, /*default direction is inscendent */ + H5T_DIR_ASCEND = 1, /*in inscendent order */ + H5T_DIR_DESCEND = 2 /*in descendent order */ +} H5T_direction_t; + +/* The exception type passed into the conversion callback function */ +typedef enum H5T_conv_except_t { + H5T_CONV_EXCEPT_RANGE_HI = 0, /*source value is greater than destination's range */ + H5T_CONV_EXCEPT_RANGE_LOW = 1, /*source value is less than destination's range */ + H5T_CONV_EXCEPT_PRECISION = 2, /*source value loses precision in destination */ + H5T_CONV_EXCEPT_TRUNCATE = 3, /*source value is truncated in destination */ + H5T_CONV_EXCEPT_PINF = 4, /*source value is positive infinity(floating number) */ + H5T_CONV_EXCEPT_NINF = 5, /*source value is negative infinity(floating number) */ + H5T_CONV_EXCEPT_NAN = 6 /*source value is NaN(floating number) */ +} H5T_conv_except_t; + +/* The return value from conversion callback function H5T_conv_except_func_t */ +typedef enum H5T_conv_ret_t { + H5T_CONV_ABORT = -1, /*abort conversion */ + H5T_CONV_UNHANDLED = 0, /*callback function failed to handle the exception */ + H5T_CONV_HANDLED = 1 /*callback function handled the exception successfully */ +} H5T_conv_ret_t; + +/* Variable Length Datatype struct in memory */ +/* (This is only used for VL sequences, not VL strings, which are stored in char *'s) */ +typedef struct { + size_t len; /* Length of VL data (in base type units) */ + void *p; /* Pointer to VL data */ +} hvl_t; + +/* Variable Length String information */ +#define H5T_VARIABLE ((size_t)(-1)) /* Indicate that a string is variable length (null-terminated in C, instead of fixed length) */ + +/* Opaque information */ +#define H5T_OPAQUE_TAG_MAX 256 /* Maximum length of an opaque tag */ + /* This could be raised without too much difficulty */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* All datatype conversion functions are... */ +typedef herr_t (*H5T_conv_t) (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, size_t bkg_stride, void *buf, + void *bkg, hid_t dset_xfer_plist); + +/* Exception handler. If an exception like overflow happenes during conversion, + * this function is called if it's registered through H5Pset_type_conv_cb. + */ +typedef H5T_conv_ret_t (*H5T_conv_except_func_t)(H5T_conv_except_t except_type, + hid_t src_id, hid_t dst_id, void *src_buf, void *dst_buf, void *user_data); + +/* When this header is included from a private header, don't make calls to H5open() */ +#undef H5OPEN +#ifndef _H5private_H +#define H5OPEN H5open(), +#else /* _H5private_H */ +#define H5OPEN +#endif /* _H5private_H */ + +/* + * The IEEE floating point types in various byte orders. + */ +#define H5T_IEEE_F32BE (H5OPEN H5T_IEEE_F32BE_g) +#define H5T_IEEE_F32LE (H5OPEN H5T_IEEE_F32LE_g) +#define H5T_IEEE_F64BE (H5OPEN H5T_IEEE_F64BE_g) +#define H5T_IEEE_F64LE (H5OPEN H5T_IEEE_F64LE_g) +H5_DLLVAR hid_t H5T_IEEE_F32BE_g; +H5_DLLVAR hid_t H5T_IEEE_F32LE_g; +H5_DLLVAR hid_t H5T_IEEE_F64BE_g; +H5_DLLVAR hid_t H5T_IEEE_F64LE_g; + +/* + * These are "standard" types. For instance, signed (2's complement) and + * unsigned integers of various sizes and byte orders. + */ +#define H5T_STD_I8BE (H5OPEN H5T_STD_I8BE_g) +#define H5T_STD_I8LE (H5OPEN H5T_STD_I8LE_g) +#define H5T_STD_I16BE (H5OPEN H5T_STD_I16BE_g) +#define H5T_STD_I16LE (H5OPEN H5T_STD_I16LE_g) +#define H5T_STD_I32BE (H5OPEN H5T_STD_I32BE_g) +#define H5T_STD_I32LE (H5OPEN H5T_STD_I32LE_g) +#define H5T_STD_I64BE (H5OPEN H5T_STD_I64BE_g) +#define H5T_STD_I64LE (H5OPEN H5T_STD_I64LE_g) +#define H5T_STD_U8BE (H5OPEN H5T_STD_U8BE_g) +#define H5T_STD_U8LE (H5OPEN H5T_STD_U8LE_g) +#define H5T_STD_U16BE (H5OPEN H5T_STD_U16BE_g) +#define H5T_STD_U16LE (H5OPEN H5T_STD_U16LE_g) +#define H5T_STD_U32BE (H5OPEN H5T_STD_U32BE_g) +#define H5T_STD_U32LE (H5OPEN H5T_STD_U32LE_g) +#define H5T_STD_U64BE (H5OPEN H5T_STD_U64BE_g) +#define H5T_STD_U64LE (H5OPEN H5T_STD_U64LE_g) +#define H5T_STD_B8BE (H5OPEN H5T_STD_B8BE_g) +#define H5T_STD_B8LE (H5OPEN H5T_STD_B8LE_g) +#define H5T_STD_B16BE (H5OPEN H5T_STD_B16BE_g) +#define H5T_STD_B16LE (H5OPEN H5T_STD_B16LE_g) +#define H5T_STD_B32BE (H5OPEN H5T_STD_B32BE_g) +#define H5T_STD_B32LE (H5OPEN H5T_STD_B32LE_g) +#define H5T_STD_B64BE (H5OPEN H5T_STD_B64BE_g) +#define H5T_STD_B64LE (H5OPEN H5T_STD_B64LE_g) +#define H5T_STD_REF_OBJ (H5OPEN H5T_STD_REF_OBJ_g) +#define H5T_STD_REF_DSETREG (H5OPEN H5T_STD_REF_DSETREG_g) +H5_DLLVAR hid_t H5T_STD_I8BE_g; +H5_DLLVAR hid_t H5T_STD_I8LE_g; +H5_DLLVAR hid_t H5T_STD_I16BE_g; +H5_DLLVAR hid_t H5T_STD_I16LE_g; +H5_DLLVAR hid_t H5T_STD_I32BE_g; +H5_DLLVAR hid_t H5T_STD_I32LE_g; +H5_DLLVAR hid_t H5T_STD_I64BE_g; +H5_DLLVAR hid_t H5T_STD_I64LE_g; +H5_DLLVAR hid_t H5T_STD_U8BE_g; +H5_DLLVAR hid_t H5T_STD_U8LE_g; +H5_DLLVAR hid_t H5T_STD_U16BE_g; +H5_DLLVAR hid_t H5T_STD_U16LE_g; +H5_DLLVAR hid_t H5T_STD_U32BE_g; +H5_DLLVAR hid_t H5T_STD_U32LE_g; +H5_DLLVAR hid_t H5T_STD_U64BE_g; +H5_DLLVAR hid_t H5T_STD_U64LE_g; +H5_DLLVAR hid_t H5T_STD_B8BE_g; +H5_DLLVAR hid_t H5T_STD_B8LE_g; +H5_DLLVAR hid_t H5T_STD_B16BE_g; +H5_DLLVAR hid_t H5T_STD_B16LE_g; +H5_DLLVAR hid_t H5T_STD_B32BE_g; +H5_DLLVAR hid_t H5T_STD_B32LE_g; +H5_DLLVAR hid_t H5T_STD_B64BE_g; +H5_DLLVAR hid_t H5T_STD_B64LE_g; +H5_DLLVAR hid_t H5T_STD_REF_OBJ_g; +H5_DLLVAR hid_t H5T_STD_REF_DSETREG_g; + +/* + * Types which are particular to Unix. + */ +#define H5T_UNIX_D32BE (H5OPEN H5T_UNIX_D32BE_g) +#define H5T_UNIX_D32LE (H5OPEN H5T_UNIX_D32LE_g) +#define H5T_UNIX_D64BE (H5OPEN H5T_UNIX_D64BE_g) +#define H5T_UNIX_D64LE (H5OPEN H5T_UNIX_D64LE_g) +H5_DLLVAR hid_t H5T_UNIX_D32BE_g; +H5_DLLVAR hid_t H5T_UNIX_D32LE_g; +H5_DLLVAR hid_t H5T_UNIX_D64BE_g; +H5_DLLVAR hid_t H5T_UNIX_D64LE_g; + +/* + * Types particular to the C language. String types use `bytes' instead + * of `bits' as their size. + */ +#define H5T_C_S1 (H5OPEN H5T_C_S1_g) +H5_DLLVAR hid_t H5T_C_S1_g; + +/* + * Types particular to Fortran. + */ +#define H5T_FORTRAN_S1 (H5OPEN H5T_FORTRAN_S1_g) +H5_DLLVAR hid_t H5T_FORTRAN_S1_g; + +/* + * These types are for Intel CPU's. They are little endian with IEEE + * floating point. + */ +#define H5T_INTEL_I8 H5T_STD_I8LE +#define H5T_INTEL_I16 H5T_STD_I16LE +#define H5T_INTEL_I32 H5T_STD_I32LE +#define H5T_INTEL_I64 H5T_STD_I64LE +#define H5T_INTEL_U8 H5T_STD_U8LE +#define H5T_INTEL_U16 H5T_STD_U16LE +#define H5T_INTEL_U32 H5T_STD_U32LE +#define H5T_INTEL_U64 H5T_STD_U64LE +#define H5T_INTEL_B8 H5T_STD_B8LE +#define H5T_INTEL_B16 H5T_STD_B16LE +#define H5T_INTEL_B32 H5T_STD_B32LE +#define H5T_INTEL_B64 H5T_STD_B64LE +#define H5T_INTEL_F32 H5T_IEEE_F32LE +#define H5T_INTEL_F64 H5T_IEEE_F64LE + +/* + * These types are for DEC Alpha CPU's. They are little endian with IEEE + * floating point. + */ +#define H5T_ALPHA_I8 H5T_STD_I8LE +#define H5T_ALPHA_I16 H5T_STD_I16LE +#define H5T_ALPHA_I32 H5T_STD_I32LE +#define H5T_ALPHA_I64 H5T_STD_I64LE +#define H5T_ALPHA_U8 H5T_STD_U8LE +#define H5T_ALPHA_U16 H5T_STD_U16LE +#define H5T_ALPHA_U32 H5T_STD_U32LE +#define H5T_ALPHA_U64 H5T_STD_U64LE +#define H5T_ALPHA_B8 H5T_STD_B8LE +#define H5T_ALPHA_B16 H5T_STD_B16LE +#define H5T_ALPHA_B32 H5T_STD_B32LE +#define H5T_ALPHA_B64 H5T_STD_B64LE +#define H5T_ALPHA_F32 H5T_IEEE_F32LE +#define H5T_ALPHA_F64 H5T_IEEE_F64LE + +/* + * These types are for MIPS cpu's commonly used in SGI systems. They are big + * endian with IEEE floating point. + */ +#define H5T_MIPS_I8 H5T_STD_I8BE +#define H5T_MIPS_I16 H5T_STD_I16BE +#define H5T_MIPS_I32 H5T_STD_I32BE +#define H5T_MIPS_I64 H5T_STD_I64BE +#define H5T_MIPS_U8 H5T_STD_U8BE +#define H5T_MIPS_U16 H5T_STD_U16BE +#define H5T_MIPS_U32 H5T_STD_U32BE +#define H5T_MIPS_U64 H5T_STD_U64BE +#define H5T_MIPS_B8 H5T_STD_B8BE +#define H5T_MIPS_B16 H5T_STD_B16BE +#define H5T_MIPS_B32 H5T_STD_B32BE +#define H5T_MIPS_B64 H5T_STD_B64BE +#define H5T_MIPS_F32 H5T_IEEE_F32BE +#define H5T_MIPS_F64 H5T_IEEE_F64BE + +/* + * The VAX floating point types (i.e. in VAX byte order) + */ +#define H5T_VAX_F32 (H5OPEN H5T_VAX_F32_g) +#define H5T_VAX_F64 (H5OPEN H5T_VAX_F64_g) +H5_DLLVAR hid_t H5T_VAX_F32_g; +H5_DLLVAR hid_t H5T_VAX_F64_g; + +/* + * The predefined native types. These are the types detected by H5detect and + * they violate the naming scheme a little. Instead of a class name, + * precision and byte order as the last component, they have a C-like type + * name. If the type begins with `U' then it is the unsigned version of the + * integer type; other integer types are signed. The type LLONG corresponds + * to C's `long long' and LDOUBLE is `long double' (these types might be the + * same as `LONG' and `DOUBLE' respectively). + */ +#define H5T_NATIVE_CHAR (CHAR_MIN?H5T_NATIVE_SCHAR:H5T_NATIVE_UCHAR) +#define H5T_NATIVE_SCHAR (H5OPEN H5T_NATIVE_SCHAR_g) +#define H5T_NATIVE_UCHAR (H5OPEN H5T_NATIVE_UCHAR_g) +#define H5T_NATIVE_SHORT (H5OPEN H5T_NATIVE_SHORT_g) +#define H5T_NATIVE_USHORT (H5OPEN H5T_NATIVE_USHORT_g) +#define H5T_NATIVE_INT (H5OPEN H5T_NATIVE_INT_g) +#define H5T_NATIVE_UINT (H5OPEN H5T_NATIVE_UINT_g) +#define H5T_NATIVE_LONG (H5OPEN H5T_NATIVE_LONG_g) +#define H5T_NATIVE_ULONG (H5OPEN H5T_NATIVE_ULONG_g) +#define H5T_NATIVE_LLONG (H5OPEN H5T_NATIVE_LLONG_g) +#define H5T_NATIVE_ULLONG (H5OPEN H5T_NATIVE_ULLONG_g) +#define H5T_NATIVE_FLOAT (H5OPEN H5T_NATIVE_FLOAT_g) +#define H5T_NATIVE_DOUBLE (H5OPEN H5T_NATIVE_DOUBLE_g) +#if H5_SIZEOF_LONG_DOUBLE !=0 +#define H5T_NATIVE_LDOUBLE (H5OPEN H5T_NATIVE_LDOUBLE_g) +#endif +#define H5T_NATIVE_B8 (H5OPEN H5T_NATIVE_B8_g) +#define H5T_NATIVE_B16 (H5OPEN H5T_NATIVE_B16_g) +#define H5T_NATIVE_B32 (H5OPEN H5T_NATIVE_B32_g) +#define H5T_NATIVE_B64 (H5OPEN H5T_NATIVE_B64_g) +#define H5T_NATIVE_OPAQUE (H5OPEN H5T_NATIVE_OPAQUE_g) +#define H5T_NATIVE_HADDR (H5OPEN H5T_NATIVE_HADDR_g) +#define H5T_NATIVE_HSIZE (H5OPEN H5T_NATIVE_HSIZE_g) +#define H5T_NATIVE_HSSIZE (H5OPEN H5T_NATIVE_HSSIZE_g) +#define H5T_NATIVE_HERR (H5OPEN H5T_NATIVE_HERR_g) +#define H5T_NATIVE_HBOOL (H5OPEN H5T_NATIVE_HBOOL_g) +H5_DLLVAR hid_t H5T_NATIVE_SCHAR_g; +H5_DLLVAR hid_t H5T_NATIVE_UCHAR_g; +H5_DLLVAR hid_t H5T_NATIVE_SHORT_g; +H5_DLLVAR hid_t H5T_NATIVE_USHORT_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_g; +H5_DLLVAR hid_t H5T_NATIVE_LONG_g; +H5_DLLVAR hid_t H5T_NATIVE_ULONG_g; +H5_DLLVAR hid_t H5T_NATIVE_LLONG_g; +H5_DLLVAR hid_t H5T_NATIVE_ULLONG_g; +H5_DLLVAR hid_t H5T_NATIVE_FLOAT_g; +H5_DLLVAR hid_t H5T_NATIVE_DOUBLE_g; +#if H5_SIZEOF_LONG_DOUBLE !=0 +H5_DLLVAR hid_t H5T_NATIVE_LDOUBLE_g; +#endif +H5_DLLVAR hid_t H5T_NATIVE_B8_g; +H5_DLLVAR hid_t H5T_NATIVE_B16_g; +H5_DLLVAR hid_t H5T_NATIVE_B32_g; +H5_DLLVAR hid_t H5T_NATIVE_B64_g; +H5_DLLVAR hid_t H5T_NATIVE_OPAQUE_g; +H5_DLLVAR hid_t H5T_NATIVE_HADDR_g; +H5_DLLVAR hid_t H5T_NATIVE_HSIZE_g; +H5_DLLVAR hid_t H5T_NATIVE_HSSIZE_g; +H5_DLLVAR hid_t H5T_NATIVE_HERR_g; +H5_DLLVAR hid_t H5T_NATIVE_HBOOL_g; + +/* C9x integer types */ +#define H5T_NATIVE_INT8 (H5OPEN H5T_NATIVE_INT8_g) +#define H5T_NATIVE_UINT8 (H5OPEN H5T_NATIVE_UINT8_g) +#define H5T_NATIVE_INT_LEAST8 (H5OPEN H5T_NATIVE_INT_LEAST8_g) +#define H5T_NATIVE_UINT_LEAST8 (H5OPEN H5T_NATIVE_UINT_LEAST8_g) +#define H5T_NATIVE_INT_FAST8 (H5OPEN H5T_NATIVE_INT_FAST8_g) +#define H5T_NATIVE_UINT_FAST8 (H5OPEN H5T_NATIVE_UINT_FAST8_g) +H5_DLLVAR hid_t H5T_NATIVE_INT8_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT8_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST8_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST8_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_FAST8_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST8_g; + +#define H5T_NATIVE_INT16 (H5OPEN H5T_NATIVE_INT16_g) +#define H5T_NATIVE_UINT16 (H5OPEN H5T_NATIVE_UINT16_g) +#define H5T_NATIVE_INT_LEAST16 (H5OPEN H5T_NATIVE_INT_LEAST16_g) +#define H5T_NATIVE_UINT_LEAST16 (H5OPEN H5T_NATIVE_UINT_LEAST16_g) +#define H5T_NATIVE_INT_FAST16 (H5OPEN H5T_NATIVE_INT_FAST16_g) +#define H5T_NATIVE_UINT_FAST16 (H5OPEN H5T_NATIVE_UINT_FAST16_g) +H5_DLLVAR hid_t H5T_NATIVE_INT16_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT16_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST16_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST16_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_FAST16_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST16_g; + +#define H5T_NATIVE_INT32 (H5OPEN H5T_NATIVE_INT32_g) +#define H5T_NATIVE_UINT32 (H5OPEN H5T_NATIVE_UINT32_g) +#define H5T_NATIVE_INT_LEAST32 (H5OPEN H5T_NATIVE_INT_LEAST32_g) +#define H5T_NATIVE_UINT_LEAST32 (H5OPEN H5T_NATIVE_UINT_LEAST32_g) +#define H5T_NATIVE_INT_FAST32 (H5OPEN H5T_NATIVE_INT_FAST32_g) +#define H5T_NATIVE_UINT_FAST32 (H5OPEN H5T_NATIVE_UINT_FAST32_g) +H5_DLLVAR hid_t H5T_NATIVE_INT32_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT32_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST32_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST32_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_FAST32_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST32_g; + +#define H5T_NATIVE_INT64 (H5OPEN H5T_NATIVE_INT64_g) +#define H5T_NATIVE_UINT64 (H5OPEN H5T_NATIVE_UINT64_g) +#define H5T_NATIVE_INT_LEAST64 (H5OPEN H5T_NATIVE_INT_LEAST64_g) +#define H5T_NATIVE_UINT_LEAST64 (H5OPEN H5T_NATIVE_UINT_LEAST64_g) +#define H5T_NATIVE_INT_FAST64 (H5OPEN H5T_NATIVE_INT_FAST64_g) +#define H5T_NATIVE_UINT_FAST64 (H5OPEN H5T_NATIVE_UINT_FAST64_g) +H5_DLLVAR hid_t H5T_NATIVE_INT64_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT64_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST64_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST64_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_FAST64_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST64_g; + +/* Operations defined on all datatypes */ +H5_DLL hid_t H5Tcreate(H5T_class_t type, size_t size); +H5_DLL hid_t H5Tcopy(hid_t type_id); +H5_DLL herr_t H5Tclose(hid_t type_id); +H5_DLL htri_t H5Tequal(hid_t type1_id, hid_t type2_id); +H5_DLL herr_t H5Tlock(hid_t type_id); +H5_DLL herr_t H5Tcommit2(hid_t loc_id, const char *name, hid_t type_id, + hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id); +H5_DLL hid_t H5Topen2(hid_t loc_id, const char *name, hid_t tapl_id); +H5_DLL herr_t H5Tcommit_anon(hid_t loc_id, hid_t type_id, hid_t tcpl_id, hid_t tapl_id); +H5_DLL hid_t H5Tget_create_plist(hid_t type_id); +H5_DLL htri_t H5Tcommitted(hid_t type_id); +H5_DLL herr_t H5Tencode(hid_t obj_id, void *buf, size_t *nalloc); +H5_DLL hid_t H5Tdecode(const void *buf); + +/* Operations defined on compound datatypes */ +H5_DLL herr_t H5Tinsert(hid_t parent_id, const char *name, size_t offset, + hid_t member_id); +H5_DLL herr_t H5Tpack(hid_t type_id); + +/* Operations defined on enumeration datatypes */ +H5_DLL hid_t H5Tenum_create(hid_t base_id); +H5_DLL herr_t H5Tenum_insert(hid_t type, const char *name, const void *value); +H5_DLL herr_t H5Tenum_nameof(hid_t type, const void *value, char *name/*out*/, + size_t size); +H5_DLL herr_t H5Tenum_valueof(hid_t type, const char *name, + void *value/*out*/); + +/* Operations defined on variable-length datatypes */ +H5_DLL hid_t H5Tvlen_create(hid_t base_id); + +/* Operations defined on array datatypes */ +H5_DLL hid_t H5Tarray_create2(hid_t base_id, unsigned ndims, + const hsize_t dim[/* ndims */]); +H5_DLL int H5Tget_array_ndims(hid_t type_id); +H5_DLL int H5Tget_array_dims2(hid_t type_id, hsize_t dims[]); + +/* Operations defined on opaque datatypes */ +H5_DLL herr_t H5Tset_tag(hid_t type, const char *tag); +H5_DLL char *H5Tget_tag(hid_t type); + +/* Querying property values */ +H5_DLL hid_t H5Tget_super(hid_t type); +H5_DLL H5T_class_t H5Tget_class(hid_t type_id); +H5_DLL htri_t H5Tdetect_class(hid_t type_id, H5T_class_t cls); +H5_DLL size_t H5Tget_size(hid_t type_id); +H5_DLL H5T_order_t H5Tget_order(hid_t type_id); +H5_DLL size_t H5Tget_precision(hid_t type_id); +H5_DLL int H5Tget_offset(hid_t type_id); +H5_DLL herr_t H5Tget_pad(hid_t type_id, H5T_pad_t *lsb/*out*/, + H5T_pad_t *msb/*out*/); +H5_DLL H5T_sign_t H5Tget_sign(hid_t type_id); +H5_DLL herr_t H5Tget_fields(hid_t type_id, size_t *spos/*out*/, + size_t *epos/*out*/, size_t *esize/*out*/, + size_t *mpos/*out*/, size_t *msize/*out*/); +H5_DLL size_t H5Tget_ebias(hid_t type_id); +H5_DLL H5T_norm_t H5Tget_norm(hid_t type_id); +H5_DLL H5T_pad_t H5Tget_inpad(hid_t type_id); +H5_DLL H5T_str_t H5Tget_strpad(hid_t type_id); +H5_DLL int H5Tget_nmembers(hid_t type_id); +H5_DLL char *H5Tget_member_name(hid_t type_id, unsigned membno); +H5_DLL int H5Tget_member_index(hid_t type_id, const char *name); +H5_DLL size_t H5Tget_member_offset(hid_t type_id, unsigned membno); +H5_DLL H5T_class_t H5Tget_member_class(hid_t type_id, unsigned membno); +H5_DLL hid_t H5Tget_member_type(hid_t type_id, unsigned membno); +H5_DLL herr_t H5Tget_member_value(hid_t type_id, unsigned membno, void *value/*out*/); +H5_DLL H5T_cset_t H5Tget_cset(hid_t type_id); +H5_DLL htri_t H5Tis_variable_str(hid_t type_id); +H5_DLL hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction); + +/* Setting property values */ +H5_DLL herr_t H5Tset_size(hid_t type_id, size_t size); +H5_DLL herr_t H5Tset_order(hid_t type_id, H5T_order_t order); +H5_DLL herr_t H5Tset_precision(hid_t type_id, size_t prec); +H5_DLL herr_t H5Tset_offset(hid_t type_id, size_t offset); +H5_DLL herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb); +H5_DLL herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign); +H5_DLL herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos, + size_t esize, size_t mpos, size_t msize); +H5_DLL herr_t H5Tset_ebias(hid_t type_id, size_t ebias); +H5_DLL herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm); +H5_DLL herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t pad); +H5_DLL herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset); +H5_DLL herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad); + +/* Type conversion database */ +H5_DLL herr_t H5Tregister(H5T_pers_t pers, const char *name, hid_t src_id, + hid_t dst_id, H5T_conv_t func); +H5_DLL herr_t H5Tunregister(H5T_pers_t pers, const char *name, hid_t src_id, + hid_t dst_id, H5T_conv_t func); +H5_DLL H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata); +H5_DLL htri_t H5Tcompiler_conv(hid_t src_id, hid_t dst_id); +H5_DLL herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, + void *buf, void *background, hid_t plist_id); + +/* Symbols defined for compatibility with previous versions of the HDF5 API. + * + * Use of these symbols is deprecated. + */ +#ifndef H5_NO_DEPRECATED_SYMBOLS + +/* Macros */ + + +/* Typedefs */ + + +/* Function prototypes */ +H5_DLL herr_t H5Tcommit1(hid_t loc_id, const char *name, hid_t type_id); +H5_DLL hid_t H5Topen1(hid_t loc_id, const char *name); +H5_DLL hid_t H5Tarray_create1(hid_t base_id, int ndims, + const hsize_t dim[/* ndims */], + const int perm[/* ndims */]); +H5_DLL int H5Tget_array_dims1(hid_t type_id, hsize_t dims[], int perm[]); + +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +#ifdef __cplusplus +} +#endif +#endif /* _H5Tpublic_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5VarLenType.h b/Resources/windows-libs/HDF5/include/H5VarLenType.h new file mode 100644 index 0000000000000000000000000000000000000000..9ad2b40c64c86930f4466bc229f67c53bd7d425b --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5VarLenType.h @@ -0,0 +1,53 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +// Class VarLenType inherits from DataType and provides wrappers for +// the HDF5 C's Variable-length Datatypes. + +#ifndef __H5VarLenType_H +#define __H5VarLenType_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +//! VarLenType operates on the HDF5 C's Variable-length Datatypes. +class H5_DLLCPP VarLenType : public DataType { + public: + // Constructor that creates a variable-length datatype based + // on the specified base type. + VarLenType(const DataType* base_type); + + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("VarLenType"); } + + // Copy constructor: makes copy of the original object. + VarLenType( const VarLenType& original ); + + // Constructor that takes an existing id + VarLenType( const hid_t existing_id ); + + // Noop destructor + virtual ~VarLenType(); + + protected: + // Default constructor + VarLenType(); +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif // __H5VarLenType_H diff --git a/Resources/windows-libs/HDF5/include/H5Zpkg.h b/Resources/windows-libs/HDF5/include/H5Zpkg.h new file mode 100644 index 0000000000000000000000000000000000000000..b0df8561d7d9bd1f7da350ee8e347aa20d55b5e4 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Zpkg.h @@ -0,0 +1,70 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef H5Z_PACKAGE +#error "Do not include this file outside the H5Z package!" +#endif + +#ifndef _H5Zpkg_H +#define _H5Zpkg_H + +/* Include private header file */ +#include "H5Zprivate.h" /* Filter functions */ + + +#ifdef H5_HAVE_FILTER_DEFLATE +/* + * Deflate filter + */ +H5_DLLVAR const H5Z_class2_t H5Z_DEFLATE[1]; +#endif /* H5_HAVE_FILTER_DEFLATE */ + +#ifdef H5_HAVE_FILTER_SHUFFLE +/* + * Shuffle filter + */ +H5_DLLVAR const H5Z_class2_t H5Z_SHUFFLE[1]; +#endif /* H5_HAVE_FILTER_SHUFFLE */ + +#ifdef H5_HAVE_FILTER_FLETCHER32 +/* + * Fletcher32 filter + */ +H5_DLLVAR const H5Z_class2_t H5Z_FLETCHER32[1]; +#endif /* H5_HAVE_FILTER_FLETCHER32 */ + +#ifdef H5_HAVE_FILTER_SZIP +/* + * szip filter + */ +H5_DLLVAR H5Z_class2_t H5Z_SZIP[1]; +#endif /* H5_HAVE_FILTER_SZIP */ + +#ifdef H5_HAVE_FILTER_NBIT +/* + * nbit filter + */ +H5_DLLVAR H5Z_class2_t H5Z_NBIT[1]; +#endif /* H5_HAVE_FILTER_NBIT */ + +#ifdef H5_HAVE_FILTER_SCALEOFFSET +/* + * scaleoffset filter + */ +H5_DLLVAR H5Z_class2_t H5Z_SCALEOFFSET[1]; +#endif /* H5_HAVE_FILTER_SCALEOFFSET */ + +#endif /* _H5Zpkg_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5Zpublic.h b/Resources/windows-libs/HDF5/include/H5Zpublic.h new file mode 100644 index 0000000000000000000000000000000000000000..8daa5f490d32fb8af75f11fbb07d9e08008f16ea --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5Zpublic.h @@ -0,0 +1,250 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* Programmer: Robb Matzke <matzke@llnl.gov> + * Thursday, April 16, 1998 + */ + +#ifndef _H5Zpublic_H +#define _H5Zpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +/* + * Filter identifiers. Values 0 through 255 are for filters defined by the + * HDF5 library. Values 256 through 511 are available for testing new + * filters. Subsequent values should be obtained from the HDF5 development + * team at hdf5dev@ncsa.uiuc.edu. These values will never change because they + * appear in the HDF5 files. + */ +typedef int H5Z_filter_t; + +/* Filter IDs */ +#define H5Z_FILTER_ERROR (-1) /*no filter */ +#define H5Z_FILTER_NONE 0 /*reserved indefinitely */ +#define H5Z_FILTER_DEFLATE 1 /*deflation like gzip */ +#define H5Z_FILTER_SHUFFLE 2 /*shuffle the data */ +#define H5Z_FILTER_FLETCHER32 3 /*fletcher32 checksum of EDC */ +#define H5Z_FILTER_SZIP 4 /*szip compression */ +#define H5Z_FILTER_NBIT 5 /*nbit compression */ +#define H5Z_FILTER_SCALEOFFSET 6 /*scale+offset compression */ +#define H5Z_FILTER_RESERVED 256 /*filter ids below this value are reserved for library use */ + +#define H5Z_FILTER_MAX 65535 /*maximum filter id */ + +/* General macros */ +#define H5Z_FILTER_ALL 0 /* Symbol to remove all filters in H5Premove_filter */ +#define H5Z_MAX_NFILTERS 32 /* Maximum number of filters allowed in a pipeline */ + /* (should probably be allowed to be an + * unlimited amount, but currently each + * filter uses a bit in a 32-bit field, + * so the format would have to be + * changed to accomodate that) + */ + +/* Flags for filter definition (stored) */ +#define H5Z_FLAG_DEFMASK 0x00ff /*definition flag mask */ +#define H5Z_FLAG_MANDATORY 0x0000 /*filter is mandatory */ +#define H5Z_FLAG_OPTIONAL 0x0001 /*filter is optional */ + +/* Additional flags for filter invocation (not stored) */ +#define H5Z_FLAG_INVMASK 0xff00 /*invocation flag mask */ +#define H5Z_FLAG_REVERSE 0x0100 /*reverse direction; read */ +#define H5Z_FLAG_SKIP_EDC 0x0200 /*skip EDC filters for read */ + +/* Special parameters for szip compression */ +/* [These are aliases for the similar definitions in szlib.h, which we can't + * include directly due to the duplication of various symbols with the zlib.h + * header file] */ +#define H5_SZIP_ALLOW_K13_OPTION_MASK 1 +#define H5_SZIP_CHIP_OPTION_MASK 2 +#define H5_SZIP_EC_OPTION_MASK 4 +#define H5_SZIP_NN_OPTION_MASK 32 +#define H5_SZIP_MAX_PIXELS_PER_BLOCK 32 + +/* Macros for the shuffle filter */ +#define H5Z_SHUFFLE_USER_NPARMS 0 /* Number of parameters that users can set */ +#define H5Z_SHUFFLE_TOTAL_NPARMS 1 /* Total number of parameters for filter */ + +/* Macros for the szip filter */ +#define H5Z_SZIP_USER_NPARMS 2 /* Number of parameters that users can set */ +#define H5Z_SZIP_TOTAL_NPARMS 4 /* Total number of parameters for filter */ +#define H5Z_SZIP_PARM_MASK 0 /* "User" parameter for option mask */ +#define H5Z_SZIP_PARM_PPB 1 /* "User" parameter for pixels-per-block */ +#define H5Z_SZIP_PARM_BPP 2 /* "Local" parameter for bits-per-pixel */ +#define H5Z_SZIP_PARM_PPS 3 /* "Local" parameter for pixels-per-scanline */ + +/* Macros for the nbit filter */ +#define H5Z_NBIT_USER_NPARMS 0 /* Number of parameters that users can set */ + +/* Macros for the scale offset filter */ +#define H5Z_SCALEOFFSET_USER_NPARMS 2 /* Number of parameters that users can set */ + + +/* Special parameters for ScaleOffset filter*/ +#define H5Z_SO_INT_MINBITS_DEFAULT 0 +typedef enum H5Z_SO_scale_type_t { + H5Z_SO_FLOAT_DSCALE = 0, + H5Z_SO_FLOAT_ESCALE = 1, + H5Z_SO_INT = 2 +} H5Z_SO_scale_type_t; + +/* Current version of the H5Z_class_t struct */ +#define H5Z_CLASS_T_VERS (1) + +/* Values to decide if EDC is enabled for reading data */ +typedef enum H5Z_EDC_t { + H5Z_ERROR_EDC = -1, /* error value */ + H5Z_DISABLE_EDC = 0, + H5Z_ENABLE_EDC = 1, + H5Z_NO_EDC = 2 /* must be the last */ +} H5Z_EDC_t; + +/* Bit flags for H5Zget_filter_info */ +#define H5Z_FILTER_CONFIG_ENCODE_ENABLED (0x0001) +#define H5Z_FILTER_CONFIG_DECODE_ENABLED (0x0002) + +/* Return values for filter callback function */ +typedef enum H5Z_cb_return_t { + H5Z_CB_ERROR = -1, + H5Z_CB_FAIL = 0, /* I/O should fail if filter fails. */ + H5Z_CB_CONT = 1, /* I/O continues if filter fails. */ + H5Z_CB_NO = 2 +} H5Z_cb_return_t; + +/* Filter callback function definition */ +typedef H5Z_cb_return_t (*H5Z_filter_func_t)(H5Z_filter_t filter, void* buf, + size_t buf_size, void* op_data); + +/* Structure for filter callback property */ +typedef struct H5Z_cb_t { + H5Z_filter_func_t func; + void* op_data; +} H5Z_cb_t; + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Before a dataset gets created, the "can_apply" callbacks for any filters used + * in the dataset creation property list are called + * with the dataset's dataset creation property list, the dataset's datatype and + * a dataspace describing a chunk (for chunked dataset storage). + * + * The "can_apply" callback must determine if the combination of the dataset + * creation property list setting, the datatype and the dataspace represent a + * valid combination to apply this filter to. For example, some cases of + * invalid combinations may involve the filter not operating correctly on + * certain datatypes (or certain datatype sizes), or certain sizes of the chunk + * dataspace. + * + * The "can_apply" callback can be the NULL pointer, in which case, the library + * will assume that it can apply to any combination of dataset creation + * property list values, datatypes and dataspaces. + * + * The "can_apply" callback returns positive a valid combination, zero for an + * invalid combination and negative for an error. + */ +typedef htri_t (*H5Z_can_apply_func_t)(hid_t dcpl_id, hid_t type_id, hid_t space_id); + +/* + * After the "can_apply" callbacks are checked for new datasets, the "set_local" + * callbacks for any filters used in the dataset creation property list are + * called. These callbacks receive the dataset's private copy of the dataset + * creation property list passed in to H5Dcreate (i.e. not the actual property + * list passed in to H5Dcreate) and the datatype ID passed in to H5Dcreate + * (which is not copied and should not be modified) and a dataspace describing + * the chunk (for chunked dataset storage) (which should also not be modified). + * + * The "set_local" callback must set any parameters that are specific to this + * dataset, based on the combination of the dataset creation property list + * values, the datatype and the dataspace. For example, some filters perform + * different actions based on different datatypes (or datatype sizes) or + * different number of dimensions or dataspace sizes. + * + * The "set_local" callback can be the NULL pointer, in which case, the library + * will assume that there are no dataset-specific settings for this filter. + * + * The "set_local" callback must return non-negative on success and negative + * for an error. + */ +typedef herr_t (*H5Z_set_local_func_t)(hid_t dcpl_id, hid_t type_id, hid_t space_id); + +/* + * A filter gets definition flags and invocation flags (defined above), the + * client data array and size defined when the filter was added to the + * pipeline, the size in bytes of the data on which to operate, and pointers + * to a buffer and its allocated size. + * + * The filter should store the result in the supplied buffer if possible, + * otherwise it can allocate a new buffer, freeing the original. The + * allocated size of the new buffer should be returned through the BUF_SIZE + * pointer and the new buffer through the BUF pointer. + * + * The return value from the filter is the number of bytes in the output + * buffer. If an error occurs then the function should return zero and leave + * all pointer arguments unchanged. + */ +typedef size_t (*H5Z_func_t)(unsigned int flags, size_t cd_nelmts, + const unsigned int cd_values[], size_t nbytes, + size_t *buf_size, void **buf); + +/* + * The filter table maps filter identification numbers to structs that + * contain a pointers to the filter function and timing statistics. + */ +typedef struct H5Z_class2_t { + int version; /* Version number of the H5Z_class_t struct */ + H5Z_filter_t id; /* Filter ID number */ + unsigned encoder_present; /* Does this filter have an encoder? */ + unsigned decoder_present; /* Does this filter have a decoder? */ + const char *name; /* Comment for debugging */ + H5Z_can_apply_func_t can_apply; /* The "can apply" callback for a filter */ + H5Z_set_local_func_t set_local; /* The "set local" callback for a filter */ + H5Z_func_t filter; /* The actual filter function */ +} H5Z_class2_t; + +H5_DLL herr_t H5Zregister(const void *cls); +H5_DLL herr_t H5Zunregister(H5Z_filter_t id); +H5_DLL htri_t H5Zfilter_avail(H5Z_filter_t id); +H5_DLL herr_t H5Zget_filter_info(H5Z_filter_t filter, unsigned int *filter_config_flags); + +/* Symbols defined for compatibility with previous versions of the HDF5 API. + * + * Use of these symbols is deprecated. + */ +#ifndef H5_NO_DEPRECATED_SYMBOLS + +/* + * The filter table maps filter identification numbers to structs that + * contain a pointers to the filter function and timing statistics. + */ +typedef struct H5Z_class1_t { + H5Z_filter_t id; /* Filter ID number */ + const char *name; /* Comment for debugging */ + H5Z_can_apply_func_t can_apply; /* The "can apply" callback for a filter */ + H5Z_set_local_func_t set_local; /* The "set local" callback for a filter */ + H5Z_func_t filter; /* The actual filter function */ +} H5Z_class1_t; + +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/Resources/windows-libs/HDF5/include/H5api_adpt.h b/Resources/windows-libs/HDF5/include/H5api_adpt.h new file mode 100644 index 0000000000000000000000000000000000000000..845a9a0c9753f1451afb45018bc18d21e66dfebc --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5api_adpt.h @@ -0,0 +1,424 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * H5api_adpt.h + * Used for the HDF5 dll project + * Created by Patrick Lu on 1/12/99 + */ +#ifndef H5API_ADPT_H +#define H5API_ADPT_H + +/* This will only be defined if HDF5 was built with CMake */ +#ifdef H5_BUILT_AS_DYNAMIC_LIB + +#if defined (hdf5_EXPORTS) + #define _HDF5DLL_ +#else + #define _HDF5USEDLL_ +#endif + +#if defined (hdf5_test_EXPORTS) + #define _HDF5TESTDLL_ +#else + #define _HDF5TESTUSEDLL_ +#endif + +#if defined (hdf5_tools_EXPORTS) + #define _HDF5TOOLSDLL_ +#else + #define _HDF5TOOLSUSEDLL_ +#endif + +#if defined (hdf5_cpp_EXPORTS) + #define HDF5_CPPDLL_EXPORTS +#else + #define HDF5CPP_USEDLL +#endif + +#if defined (hdf5_hl_EXPORTS) + #define _HDF5_HLDLL_EXPORTS_ +#else + #define _HDF5USEHLDLL_ +#endif + +#if defined (hdf5_hl_cpp_EXPORTS) + #define HDF5_HL_CPPDLL_EXPORTS +#else + #define HDF5USE_HLCPPDLL +#endif + +#if defined (hdf5_f90cstub_EXPORTS) + #define HDF5FORT_CSTUB_DLL_EXPORTS +#else + #define HDF5FORT_CSTUB_USEDLL +#endif + +#if defined (hdf5_test_f90cstub_EXPORTS) + #define HDF5FORTTEST_CSTUB_DLL_EXPORTS +#endif + +#if defined (hdf5_hl_f90cstub_EXPORTS) + #define HDF5_HL_F90CSTUBDLL_EXPORTS +#endif + +#if defined(hdf5_EXPORTS) + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_DLL __declspec(dllexport) + #define H5_DLLVAR extern __declspec(dllexport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_DLL __attribute__ ((visibility("default"))) + #define H5_DLLVAR extern __attribute__ ((visibility("default"))) + #endif +#else + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_DLL __declspec(dllimport) + #define H5_DLLVAR __declspec(dllimport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_DLL __attribute__ ((visibility("default"))) + #define H5_DLLVAR extern __attribute__ ((visibility("default"))) + #endif +#endif + +#ifndef H5_DLL + #define H5_DLL + #define H5_DLLVAR extern +#endif /* _HDF5DLL_ */ + +#if defined(hdf5_test_EXPORTS) + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5TEST_DLL __declspec(dllexport) + #define H5TEST_DLLVAR extern __declspec(dllexport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5TEST_DLL __attribute__ ((visibility("default"))) + #define H5TEST_DLLVAR extern __attribute__ ((visibility("default"))) + #endif +#else + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5TEST_DLL __declspec(dllimport) + #define H5TEST_DLLVAR __declspec(dllimport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5TEST_DLL __attribute__ ((visibility("default"))) + #define H5TEST_DLLVAR extern __attribute__ ((visibility("default"))) + #endif +#endif + +#ifndef H5TEST_DLL + #define H5TEST_DLL + #define H5TEST_DLLVAR extern +#endif /* H5TEST_DLL */ + +#if defined(hdf5_tools_EXPORTS) + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5TOOLS_DLL __declspec(dllexport) + #define H5TOOLS_DLLVAR extern __declspec(dllexport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5TOOLS_DLL __attribute__ ((visibility("default"))) + #define H5TOOLS_DLLVAR extern __attribute__ ((visibility("default"))) + #endif +#else + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5TOOLS_DLL __declspec(dllimport) + #define H5TOOLS_DLLVAR __declspec(dllimport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5TOOLS_DLL __attribute__ ((visibility("default"))) + #define H5TOOLS_DLLVAR extern __attribute__ ((visibility("default"))) + #endif +#endif + +#ifndef H5TOOLS_DLL + #define H5TOOLS_DLL + #define H5TOOLS_DLLVAR extern +#endif /* H5TOOLS_DLL */ + +#if defined(hdf5_cpp_EXPORTS) + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_DLLCPP __declspec(dllexport) + #define H5_DLLCPPVAR extern __declspec(dllexport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_DLLCPP __attribute__ ((visibility("default"))) + #define H5_DLLCPPVAR extern __attribute__ ((visibility("default"))) + #endif +#else + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_DLLCPP __declspec(dllimport) + #define H5_DLLCPPVAR __declspec(dllimport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_DLLCPP __attribute__ ((visibility("default"))) + #define H5_DLLCPPVAR extern __attribute__ ((visibility("default"))) + #endif +#endif + +#ifndef H5_DLLCPP + #define H5_DLLCPP + #define H5_DLLCPPVAR extern +#endif /* H5_DLLCPP */ + +#if defined(hdf5_hl_EXPORTS) + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_HLDLL __declspec(dllexport) + #define H5_HLDLLVAR extern __declspec(dllexport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_HLDLL __attribute__ ((visibility("default"))) + #define H5_HLDLLVAR extern __attribute__ ((visibility("default"))) + #endif +#else + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_HLDLL __declspec(dllimport) + #define H5_HLDLLVAR __declspec(dllimport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_HLDLL __attribute__ ((visibility("default"))) + #define H5_HLDLLVAR extern __attribute__ ((visibility("default"))) + #endif +#endif + +#ifndef H5_HLDLL + #define H5_HLDLL + #define H5_HLDLLVAR extern +#endif /* H5_HLDLL */ + +#if defined(hdf5_hl_cpp_EXPORTS) + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_HLCPPDLL __declspec(dllexport) + #define H5_HLCPPDLLVAR extern __declspec(dllexport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_HLCPPDLL __attribute__ ((visibility("default"))) + #define H5_HLCPPDLLVAR extern __attribute__ ((visibility("default"))) + #endif +#else + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_HLCPPDLL __declspec(dllimport) + #define H5_HLCPPDLLVAR __declspec(dllimport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_HLCPPDLL __attribute__ ((visibility("default"))) + #define H5_HLCPPDLLVAR extern __attribute__ ((visibility("default"))) + #endif +#endif + +#ifndef H5_HLCPPDLL + #define H5_HLCPPDLL + #define H5_HLCPPDLLVAR extern +#endif /* H5_HLCPPDLL */ + +#if defined(hdf5_f90cstub_EXPORTS) + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_FCDLL __declspec(dllexport) + #define H5_FCDLLVAR extern __declspec(dllexport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_FCDLL __attribute__ ((visibility("default"))) + #define H5_FCDLLVAR extern __attribute__ ((visibility("default"))) + #endif +#else + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_FCDLL __declspec(dllimport) + #define H5_FCDLLVAR __declspec(dllimport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_FCDLL __attribute__ ((visibility("default"))) + #define H5_FCDLLVAR extern __attribute__ ((visibility("default"))) + #endif +#endif + +#ifndef H5_FCDLL + #define H5_FCDLL + #define H5_FCDLLVAR extern +#endif /* H5_FCDLL */ + +#if defined(hdf5_test_f90cstub_EXPORTS) + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_FCTESTDLL __declspec(dllexport) + #define H5_FCTESTDLLVAR extern __declspec(dllexport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_FCTESTDLL __attribute__ ((visibility("default"))) + #define H5_FCTESTDLLVAR extern __attribute__ ((visibility("default"))) + #endif +#else + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define H5_FCTESTDLL __declspec(dllimport) + #define H5_FCTESTDLLVAR __declspec(dllimport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define H5_FCTESTDLL __attribute__ ((visibility("default"))) + #define H5_FCTESTDLLVAR extern __attribute__ ((visibility("default"))) + #endif +#endif + +#ifndef H5_FCTESTDLL + #define H5_FCTESTDLL + #define H5_FCTESTDLLVAR extern +#endif /* H5_FCTESTDLL */ + +#if defined(hdf5_hl_f90cstub_EXPORTS) + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define HDF5_HL_F90CSTUBDLL __declspec(dllexport) + #define HDF5_HL_F90CSTUBDLLVAR extern __declspec(dllexport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define HDF5_HL_F90CSTUBDLL __attribute__ ((visibility("default"))) + #define HDF5_HL_F90CSTUBDLLVAR extern __attribute__ ((visibility("default"))) + #endif +#else + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define HDF5_HL_F90CSTUBDLL __declspec(dllimport) + #define HDF5_HL_F90CSTUBDLLVAR __declspec(dllimport) + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define HDF5_HL_F90CSTUBDLL __attribute__ ((visibility("default"))) + #define HDF5_HL_F90CSTUBDLLVAR extern __attribute__ ((visibility("default"))) + #endif +#endif + +#ifndef HDF5_HL_F90CSTUBDLL + #define HDF5_HL_F90CSTUBDLL + #define HDF5_HL_F90CSTUBDLLVAR extern +#endif /* HDF5_HL_F90CSTUBDLL */ + +#elif defined(H5_BUILT_AS_STATIC_LIB) + #define H5_DLL + #define H5_HLDLL + #define H5_HLCPPDLL + #define HDF5_HL_F90CSTUBDLL + #define H5_DLLVAR extern + #define H5_DLLCPP + #define H5TEST_DLL + #define H5TEST_DLLVAR extern + #define H5TOOLS_DLL + #define H5TOOLS_DLLVAR extern + #define H5_FCDLL + #define H5_FCDLLVAR extern + #define H5_FCTESTDLL + #define H5_FCTESTDLLVAR extern + +#else +/* This is the original HDFGroup defined preprocessor code which should still work + * with the VS projects that are maintained by "The HDF Group" + * The Visual Studio project files will not be supported in the next major release of 1.10. + */ + +#if defined(H5_HAVE_WIN32_API) + +#if defined(_HDF5DLL_) +#pragma warning(disable: 4273) /* Disable the dll linkage warnings */ +#define H5_DLL __declspec(dllexport) +#define H5_DLLVAR extern __declspec(dllexport) +#elif defined(_HDF5USEDLL_) +#define H5_DLL __declspec(dllimport) +#define H5_DLLVAR __declspec(dllimport) +#else +#define H5_DLL +#define H5_DLLVAR extern +#endif /* _HDF5DLL_ */ + +#if defined(_HDF5TESTDLL_) +#pragma warning(disable: 4273) /* Disable the dll linkage warnings */ +#define H5TEST_DLL __declspec(dllexport) +#define H5TEST_DLLVAR extern __declspec(dllexport) +#elif defined(_HDF5TESTUSEDLL_) +#define H5TEST_DLL __declspec(dllimport) +#define H5TEST_DLLVAR __declspec(dllimport) +#else +#define H5TEST_DLL +#define H5TEST_DLLVAR extern +#endif /* _HDF5TESTDLL_ */ + +#if defined(_HDF5TOOLSDLL_) +#pragma warning(disable: 4273) /* Disable the dll linkage warnings */ +#define H5TOOLS_DLL __declspec(dllexport) +#define H5TOOLS_DLLVAR extern __declspec(dllexport) +#elif defined(_HDF5TOOLSUSEDLL_) +#define H5TOOLS_DLL __declspec(dllimport) +#define H5TOOLS_DLLVAR __declspec(dllimport) +#else +#define H5TOOLS_DLL +#define H5TOOLS_DLLVAR extern +#endif /* _HDF5TOOLSDLL_ */ + +#if defined(_HDF5_HLDLL_EXPORTS_) +#pragma warning(disable: 4273) /* Disable the dll linkage warnings */ +#define H5_HLDLL __declspec(dllexport) +#elif defined(_HDF5USEHLDLL_) +#define H5_HLDLL __declspec(dllimport) +#else +#define H5_HLDLL +#endif /* _HDF5_HLDLL_EXPORTS */ + +#if defined(HDF5_HL_CPPDLL_EXPORTS) +#pragma warning(disable: 4273) /* Disable the dll linkage warnings */ +#define H5_HLCPPDLL __declspec(dllexport) +#elif defined(HDF5USE_HLCPPDLL) +#define H5_HLCPPDLL __declspec(dllimport) +#else +#define H5_HLCPPDLL +#endif /*HDF5_HL_CPPDLL_EXPORTS*/ + +#if defined(HDF5_HL_F90CSTUBDLL_EXPORTS) +#pragma warning(disable: 4273) /* Disable the dll linkage warnings */ +#define HDF5_HL_F90CSTUBDLL __declspec(dllexport) +#elif defined(HDF5USE_HLF90CSTUBDLL) +#define HDF5_HL_F90CSTUBDLL __declspec(dllimport) +#else +#define HDF5_HL_F90CSTUBDLL +#endif /*HDF5_HL_F90CSTUBDLL_EXPORTS*/ + + +#if defined(HDF5FORT_CSTUB_DLL_EXPORTS) +#pragma warning(disable: 4273) /* Disable the dll linkage warnings */ +#define H5_FCDLL __declspec(dllexport) +#define H5_FCDLLVAR extern __declspec(dllexport) +#elif defined(HDF5FORT_CSTUB_USEDLL) +#define H5_FCDLL __declspec(dllimport) +#define H5_FCDLLVAR __declspec(dllimport) +#else +#define H5_FCDLL +#define H5_FCDLLVAR extern +#endif /* _HDF5_FORTRANDLL_EXPORTS_ */ + +#if defined(HDF5FORTTEST_CSTUB_DLL_EXPORTS) +#pragma warning(disable: 4273) /* Disable the dll linkage warnings */ +#define H5_FCTESTDLL __declspec(dllexport) +#define H5_FCTESTDLLVAR extern __declspec(dllexport) +#elif defined(HDF5FORTTEST_CSTUB_USEDLL) +#define H5_FCTESTDLL __declspec(dllimport) +#define H5_FCTESTDLLVAR __declspec(dllimport) +#else +#define H5_FCTESTDLL +#define H5_FCTESTDLLVAR extern +#endif /* _HDF5_FORTRANDLL_EXPORTS_ */ + +/* Added to export or to import C++ APIs - BMR (02-15-2002) */ +#if defined(HDF5_CPPDLL_EXPORTS) /* this name is generated at creation */ +#define H5_DLLCPP __declspec(dllexport) +#elif defined(HDF5CPP_USEDLL) +#define H5_DLLCPP __declspec(dllimport) +#else +#define H5_DLLCPP +#endif /* HDF5_CPPDLL_EXPORTS */ + +#else /*H5_HAVE_WIN32_API*/ +#define H5_DLL +#define H5_HLDLL +#define H5_HLCPPDLL +#define HDF5_HL_F90CSTUBDLL +#define H5_DLLVAR extern +#define H5_DLLCPP +#define H5TEST_DLL +#define H5TEST_DLLVAR extern +#define H5TOOLS_DLL +#define H5TOOLS_DLLVAR extern +#define H5_FCDLL +#define H5_FCDLLVAR extern +#define H5_FCTESTDLL +#define H5_FCTESTDLLVAR extern +#endif /*H5_HAVE_WIN32_API*/ + +#endif /* H5API_ADPT_H */ + +#endif /* */ diff --git a/Resources/windows-libs/HDF5/include/H5f90.h b/Resources/windows-libs/HDF5/include/H5f90.h new file mode 100644 index 0000000000000000000000000000000000000000..c45cfcbf043f4e5289b11b3c11108fb8e3c4c04b --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5f90.h @@ -0,0 +1,31 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + +#ifndef _H5f90_H +#define _H5f90_H + +#include "hdf5.h" +#include "H5private.h" +#include "H5f90i.h" +#include "H5f90proto.h" + +/* Constants used in H5Rff.f90 and H5Rf.c files */ +#define REF_REG_BUF_LEN_F 3 + +/* Constants used in H5Gf.c files */ +#define OBJECT_NAMELEN_DEFAULT_F -1 +#define H5_MAX(a,b) (((a)>(b)) ? (a) : (b)) +#endif /* _H5f90_H */ diff --git a/Resources/windows-libs/HDF5/include/H5f90i.h b/Resources/windows-libs/HDF5/include/H5f90i.h new file mode 100644 index 0000000000000000000000000000000000000000..f3c0160d384ac37e1fe3b13833247988b60fd0a1 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5f90i.h @@ -0,0 +1,43 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + +#ifndef _H5f90i_H +#define _H5f90i_H + +/* + * Include generated header. This header defines integer types, + * so this file only needs to define _fcd. + */ +#include "H5f90i_gen.h" + +/* Define _fcd. These are the same on every system + * but UNICOS. + */ +#define _fcdtocp(desc) (desc) + +#if (defined (UNICOS) || defined (_UNICOS)) && !defined(__crayx1) + +#include <fortran.h> + +/*typedef char* _fcd;*/ + +#else + +typedef char *_fcd; + +#endif + +#endif /* _H5f90i_H */ diff --git a/Resources/windows-libs/HDF5/include/H5f90i_gen.h b/Resources/windows-libs/HDF5/include/H5f90i_gen.h new file mode 100644 index 0000000000000000000000000000000000000000..07b46f97b57e06472ebf68129dc458faad932628 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5f90i_gen.h @@ -0,0 +1,48 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + +#ifndef _H5f90i_gen_H +#define _H5f90i_gen_H + +/* This file is automatically generated by H5match_types.c at build time. */ + +#include "H5public.h" + +#define c_int_1 char +#define c_int_2 short +#define c_int_4 long +#define c_int_8 long long +#define c_float_4 float +#define c_float_8 long double + +typedef c_int_8 haddr_t_f; +typedef c_int_8 hsize_t_f; +typedef c_int_8 hssize_t_f; +typedef c_int_4 off_t_f; +typedef c_int_8 size_t_f; +typedef c_int_4 int_f; +typedef c_int_1 int_1_f; +typedef c_int_2 int_2_f; +typedef c_int_4 int_4_f; +typedef c_int_8 int_8_f; +typedef c_float_4 real_4_f; +typedef c_float_8 real_8_f; +typedef c_float_8 real_16_f; +typedef c_int_4 hid_t_f; +typedef c_float_4 real_f; +typedef c_float_8 double_f; + +#endif /* _H5f90i_gen_H */ diff --git a/Resources/windows-libs/HDF5/include/H5f90proto.h b/Resources/windows-libs/HDF5/include/H5f90proto.h new file mode 100644 index 0000000000000000000000000000000000000000..a0a4f64ccf59cd7a30150575ed38b47f70dbd760 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5f90proto.h @@ -0,0 +1,1346 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + +#ifndef _H5f90proto_H +#define _H5f90proto_H + +#include "H5public.h" + +H5_FCDLL char * HD5f2cstring (_fcd fdesc, size_t len); +H5_FCDLL void HD5packFstring(char *src, char *dest, size_t len); + +#ifdef H5_VMS +#define H5_FC_FUNC_(name, NAME) NAME +#endif /*H5_VMS*/ + +/* + * Storage info struct used by H5O_info_t and H5F_info_t + * interoperable with Fortran. + */ +typedef struct H5_ih_info_t_f { + hsize_t index_size; /* btree and/or list */ + hsize_t heap_size; +} H5_ih_info_t_f; + +/* Information struct for object header metadata (for H5Oget_info/H5Oget_info_by_name/H5Oget_info_by_idx) + * interoperable with Fortran. + */ +typedef struct H5O_hdr_info_t_f { + int_f version; /* Version number of header format in file */ + int_f nmesgs; /* Number of object header messages */ + int_f nchunks; /* Number of object header chunks */ + int_f flags; /* Object header status flags */ + struct { + hsize_t total; /* Total space for storing object header in file */ + hsize_t meta; /* Space within header for object header metadata information */ + hsize_t mesg; /* Space within header for actual message information */ + hsize_t free; /* Free space within object header */ + } space; + struct { + uint64_t present; /* Flags to indicate presence of message type in header */ + uint64_t shared; /* Flags to indicate message type is shared in header */ + } mesg; +} H5O_hdr_info_t_f; + +/* Information struct for object (for H5Oget_info/H5Oget_info_by_name/H5Oget_info_by_idx) + * interoperable with Fortran. + */ +typedef struct H5O_info_t_f { + unsigned long fileno; /* File number that object is located in */ + haddr_t_f addr; /* Object address in file */ + int type; /* Basic object type (group, dataset, etc.) */ + int_f rc; /* Reference count of object */ + int_f atime[8]; /* Access time */ + int_f mtime[8]; /* Modification time */ + int_f ctime[8]; /* Change time */ + int_f btime[8]; /* Birth time */ + hsize_t num_attrs; /* # of attributes attached to object */ + H5O_hdr_info_t_f hdr; /* Object header information */ + /* Extra metadata storage for obj & attributes */ + struct { + H5_ih_info_t_f obj; /* v1/v2 B-tree & local/fractal heap for groups, B-tree for chunked datasets */ + H5_ih_info_t_f attr; /* v2 B-tree & heap for attributes */ + } meta_size; +} H5O_info_t_f; + + +/* + * Functions from H5Ff.c + */ +#define nh5fcreate_c H5_FC_FUNC_(h5fcreate_c, H5FCREATE_C) +#define nh5fflush_c H5_FC_FUNC_(h5fflush_c, H5FFLUSH_C) +#define nh5fclose_c H5_FC_FUNC_(h5fclose_c, H5FCLOSE_C) +#define nh5fopen_c H5_FC_FUNC_(h5fopen_c, H5FOPEN_C) +#define nh5fis_hdf5_c H5_FC_FUNC_(h5fis_hdf5_c, H5FIS_HDF5_C) +#define nh5fmount_c H5_FC_FUNC_(h5fmount_c, H5FMOUNT_C) +#define nh5funmount_c H5_FC_FUNC_(h5funmount_c, H5FUNMOUNT_C) +#define nh5freopen_c H5_FC_FUNC_(h5freopen_c, H5FREOPEN_C) +#define nh5fget_create_plist_c H5_FC_FUNC_(h5fget_create_plist_c, H5FGET_CREATE_PLIST_C) +#define nh5fget_access_plist_c H5_FC_FUNC_(h5fget_access_plist_c, H5FGET_ACCESS_PLIST_C) +#define nh5fget_obj_count_c H5_FC_FUNC_(h5fget_obj_count_c, H5FGET_OBJ_COUNT_C) +#define nh5fget_obj_ids_c H5_FC_FUNC_(h5fget_obj_ids_c, H5FGET_OBJ_IDS_C) +#define nh5fget_freespace_c H5_FC_FUNC_(h5fget_freespace_c, H5FGET_FREESPACE_C) +#define nh5fget_file_image_c H5_FC_FUNC_(h5fget_file_image_c, H5FGET_FILE_IMAGE_C) +#define nh5fget_name_c H5_FC_FUNC_(h5fget_name_c, H5FGET_NAME_C) +#define nh5fget_filesize_c H5_FC_FUNC_(h5fget_filesize_c, H5FGET_FILESIZE_C) + +H5_FCDLL int_f nh5fcreate_c (_fcd name, int_f *namelen, int_f *access_flags, hid_t_f *crt_prp, hid_t_f *acc_prp, hid_t_f *file_id); +H5_FCDLL int_f nh5fopen_c (_fcd name, int_f *namelen, int_f *access_flags, hid_t_f *acc_prp, hid_t_f *file_id); +H5_FCDLL int_f nh5fis_hdf5_c (_fcd name, int_f *namelen, int_f *flag); +H5_FCDLL int_f nh5fclose_c (hid_t_f *file_id); +H5_FCDLL int_f nh5fmount_c (hid_t_f *loc_id, _fcd dsetname, int_f *namelen, hid_t_f *file_id, hid_t_f *acc_prp); +H5_FCDLL int_f nh5funmount_c (hid_t_f *loc_id, _fcd dsetname, int_f *namelen); +H5_FCDLL int_f nh5freopen_c (hid_t_f *file_id1, hid_t_f *file_id2); +H5_FCDLL int_f nh5fget_create_plist_c (hid_t_f *file_id, hid_t_f *prop_id); +H5_FCDLL int_f nh5fget_access_plist_c (hid_t_f *file_id, hid_t_f *access_id); +H5_FCDLL int_f nh5fget_obj_count_c (hid_t_f *file_id, int_f *obj_type, size_t_f *obj_count); +H5_FCDLL int_f nh5fget_obj_ids_c (hid_t_f *file_id, int_f *obj_type, size_t_f *max_objs, hid_t_f *obj_ids, size_t_f *num_objs); +H5_FCDLL int_f nh5fget_freespace_c (hid_t_f *file_id, hssize_t_f *free_space); +H5_FCDLL int_f nh5fget_file_image_c(hid_t_f *file_id, void *buf_ptr, size_t_f *buf_len, size_t_f *buf_req); +H5_FCDLL int_f nh5fflush_c (hid_t_f *obj_id, int_f *scope); +H5_FCDLL int_f nh5fget_name_c(hid_t_f *obj_id, size_t_f *size, _fcd buf, size_t_f *buflen); +H5_FCDLL int_f nh5fget_filesize_c(hid_t_f *file_id, hsize_t_f *size); + +/* + * Functions from H5Sf.c + */ +#define nh5screate_simple_c H5_FC_FUNC_(h5screate_simple_c, H5SCREATE_SIMPLE_C) +#define nh5sclose_c H5_FC_FUNC_(h5sclose_c, H5SCLOSE_C) +#define nh5screate_c H5_FC_FUNC_(h5screate_c, H5SCREATE_C) +#define nh5scopy_c H5_FC_FUNC_(h5scopy_c, H5SCOPY_C) +#define nh5sget_select_hyper_nblocks_c H5_FC_FUNC_(h5sget_select_hyper_nblocks_c, H5SGET_SELECT_HYPER_NBLOCKS_C) +#define nh5sget_select_hyper_blocklist_c H5_FC_FUNC_(h5sget_select_hyper_blocklist_c, H5SGET_SELECT_HYPER_BLOCKLIST_C) +#define nh5sget_select_elem_npoints_c H5_FC_FUNC_(h5sget_select_elem_npoints_c, H5SGET_SELECT_ELEM_NPOINTS_C) +#define nh5sget_select_elem_pointlist_c H5_FC_FUNC_(h5sget_select_elem_pointlist_c, H5SGET_SELECT_ELEM_POINTLIST_C) +#define nh5sget_select_bounds_c H5_FC_FUNC_(h5sget_select_bounds_c, H5SGET_SELECT_BOUNDS_C) +#define nh5sselect_all_c H5_FC_FUNC_(h5sselect_all_c, H5SSELECT_ALL_C) +#define nh5sselect_none_c H5_FC_FUNC_(h5sselect_none_c, H5SSELECT_NONE_C) +#define nh5sselect_valid_c H5_FC_FUNC_(h5sselect_valid_c, H5SSELECT_VALID_C) +#define nh5sget_simple_extent_npoints_c H5_FC_FUNC_(h5sget_simple_extent_npoints_c, H5SGET_SIMPLE_EXTENT_NPOINTS_C) +#define nh5sget_select_npoints_c H5_FC_FUNC_(h5sget_select_npoints_c, H5SGET_SELECT_NPOINTS_C) +#define nh5sget_simple_extent_ndims_c H5_FC_FUNC_(h5sget_simple_extent_ndims_c, H5SGET_SIMPLE_EXTENT_NDIMS_C) +#define nh5sget_simple_extent_type_c H5_FC_FUNC_(h5sget_simple_extent_type_c, H5SGET_SIMPLE_EXTENT_TYPE_C) +#define nh5soffset_simple_c H5_FC_FUNC_(h5soffset_simple_c, H5SOFFSET_SIMPLE_C) +#define nh5sset_extent_simple_c H5_FC_FUNC_(h5sset_extent_simple_c, H5SSET_EXTENT_SIMPLE_C) +#define nh5sis_simple_c H5_FC_FUNC_(h5sis_simple_c, H5SIS_SIMPLE_C) +#define nh5sextent_class_c H5_FC_FUNC_(h5sextent_class_c, H5SEXTENT_CLASS_C) +#define nh5sget_simple_extent_dims_c H5_FC_FUNC_(h5sget_simple_extent_dims_c, H5SGET_SIMPLE_EXTENT_DIMS_C) +#define nh5sextent_copy_c H5_FC_FUNC_(h5sextent_copy_c, H5SEXTENT_COPY_C) +#define nh5sset_extent_none_c H5_FC_FUNC_(h5sset_extent_none_c, H5SSET_EXTENT_NONE_C) +#define nh5sselect_hyperslab_c H5_FC_FUNC_(h5sselect_hyperslab_c, H5SSELECT_HYPERSLAB_C) +#define nh5scombine_hyperslab_c H5_FC_FUNC_(h5scombine_hyperslab_c, H5SCOMBINE_HYPERSLAB_C) +#define nh5scombine_select_c H5_FC_FUNC_(h5scombine_select_c, H5SCOMBINE_SELECT_C) +#define nh5sselect_select_c H5_FC_FUNC_(h5sselect_select_c, H5SSELECT_SELECT_C) +#define nh5sget_select_type_c H5_FC_FUNC_(h5sget_select_type_c, H5SGET_SELECT_TYPE_C) +#define nh5sselect_elements_c H5_FC_FUNC_(h5sselect_elements_c, H5SSELECT_ELEMENTS_C) +#define nh5sdecode_c H5_FC_FUNC_(h5sdecode_c, H5SDECODE_C) +#define nh5sencode_c H5_FC_FUNC_(h5sencode_c, H5SENCODE_C) +#define nh5sextent_equal_c H5_FC_FUNC_(h5sextent_equal_c, H5SEXTENT_EQUAL_C) + +H5_FCDLL int_f nh5screate_simple_c ( int_f *rank, hsize_t_f *dims, hsize_t_f *maxdims, hid_t_f *space_id ); +H5_FCDLL int_f nh5sclose_c ( hid_t_f *space_id ); +H5_FCDLL int_f nh5screate_c ( int_f *classtype, hid_t_f *space_id ); +H5_FCDLL int_f nh5scopy_c ( hid_t_f *space_id , hid_t_f *new_space_id); +H5_FCDLL int_f nh5sget_select_hyper_nblocks_c( hid_t_f *space_id , hssize_t_f * num_blocks); +H5_FCDLL int_f nh5sget_select_hyper_blocklist_c( hid_t_f *space_id ,hsize_t_f * startblock, hsize_t_f * num_blocks, hsize_t_f * buf); +H5_FCDLL int_f nh5sget_select_bounds_c( hid_t_f *space_id , hsize_t_f * start, hsize_t_f * end); +H5_FCDLL int_f nh5sget_select_elem_npoints_c( hid_t_f *space_id , hssize_t_f * num_points); +H5_FCDLL int_f nh5sget_select_elem_pointlist_c( hid_t_f *space_id ,hsize_t_f * startpoint, hsize_t_f * numpoints, hsize_t_f * buf); +H5_FCDLL int_f nh5sselect_all_c ( hid_t_f *space_id ); +H5_FCDLL int_f nh5sselect_none_c ( hid_t_f *space_id ); +H5_FCDLL int_f nh5sselect_valid_c ( hid_t_f *space_id , int_f *flag ); +H5_FCDLL int_f nh5sget_simple_extent_npoints_c ( hid_t_f *space_id , hsize_t_f *npoints ); +H5_FCDLL int_f nh5sget_select_npoints_c ( hid_t_f *space_id , hssize_t_f *npoints ); +H5_FCDLL int_f nh5sget_simple_extent_ndims_c ( hid_t_f *space_id , int_f *ndims ); +H5_FCDLL int_f nh5sget_simple_extent_type_c ( hid_t_f *space_id , int_f *classtype); +H5_FCDLL int_f nh5soffset_simple_c ( hid_t_f *space_id , hssize_t_f *offset); +H5_FCDLL int_f nh5sset_extent_simple_c ( hid_t_f *space_id , int_f *rank, hsize_t_f * current_size, hsize_t_f *maximum_size); +H5_FCDLL int_f nh5sis_simple_c ( hid_t_f *space_id , int_f *flag ); +H5_FCDLL int_f nh5sextent_class_c ( hid_t_f *space_id , int_f *classtype); +H5_FCDLL int_f nh5sget_simple_extent_dims_c ( hid_t_f *space_id , hsize_t_f *dims, hsize_t_f *maxdims); +H5_FCDLL int_f nh5sextent_copy_c ( hid_t_f *dest_space_id , hid_t_f *source_space_id); +H5_FCDLL int_f nh5sset_extent_none_c ( hid_t_f *space_id ); +H5_FCDLL int_f nh5sselect_hyperslab_c ( hid_t_f *space_id , int_f *op, hsize_t_f *start, hsize_t_f *count, hsize_t_f *stride, hsize_t_f *block); +H5_FCDLL int_f nh5sget_select_type_c ( hid_t_f *space_id , int_f *op); +H5_FCDLL int_f nh5sselect_elements_c ( hid_t_f *space_id , int_f *op, size_t_f *nelements, hsize_t_f *coord); +H5_FCDLL int_f nh5scombine_hyperslab_c ( hid_t_f *space_id , int_f *op, hsize_t_f *start, hsize_t_f *count, hsize_t_f *stride, hsize_t_f *block, hid_t_f *hyper_id); +H5_FCDLL int_f nh5scombine_select_c ( hid_t_f *space1_id , int_f *op, hid_t_f *space2_id, hid_t_f *ds_id); +H5_FCDLL int_f nh5sselect_select_c ( hid_t_f *space1_id , int_f *op, hid_t_f *space2_id); +H5_FCDLL int_f nh5sdecode_c ( _fcd buf, hid_t_f *obj_id ); +H5_FCDLL int_f nh5sencode_c (_fcd buf, hid_t_f *obj_id, size_t_f *nalloc ); +H5_FCDLL int_f nh5sextent_equal_c ( hid_t_f * space1_id, hid_t_f *space2_id, hid_t_f *c_equal); + +/* + * Functions from H5Df.c + */ +#define nh5dcreate_c H5_FC_FUNC_(h5dcreate_c, H5DCREATE_C) +#define nh5dclose_c H5_FC_FUNC_(h5dclose_c, H5DCLOSE_C) +#define nh5dopen_c H5_FC_FUNC_(h5dopen_c, H5DOPEN_C) +#define nh5dwrite_c H5_FC_FUNC_(h5dwrite_c, H5DWRITE_C) +#define nh5dwrite_integer_s_c H5_FC_FUNC_(h5dwrite_integer_s_c, H5DWRITE_INTEGER_S_C) +#define nh5dwrite_integer_1_c H5_FC_FUNC_(h5dwrite_integer_1_c, H5DWRITE_INTEGER_1_C) +#define nh5dwrite_integer_2_c H5_FC_FUNC_(h5dwrite_integer_2_c, H5DWRITE_INTEGER_2_C) +#define nh5dwrite_integer_3_c H5_FC_FUNC_(h5dwrite_integer_3_c, H5DWRITE_INTEGER_3_C) +#define nh5dwrite_integer_4_c H5_FC_FUNC_(h5dwrite_integer_4_c, H5DWRITE_INTEGER_4_C) +#define nh5dwrite_integer_5_c H5_FC_FUNC_(h5dwrite_integer_5_c, H5DWRITE_INTEGER_5_C) +#define nh5dwrite_integer_6_c H5_FC_FUNC_(h5dwrite_integer_6_c, H5DWRITE_INTEGER_6_C) +#define nh5dwrite_integer_7_c H5_FC_FUNC_(h5dwrite_integer_7_c, H5DWRITE_INTEGER_7_C) +#define nh5dwrite_real_s_c H5_FC_FUNC_(h5dwrite_real_s_c, H5DWRITE_REAL_S_C) +#define nh5dwrite_real_1_c H5_FC_FUNC_(h5dwrite_real_1_c, H5DWRITE_REAL_1_C) +#define nh5dwrite_real_2_c H5_FC_FUNC_(h5dwrite_real_2_c, H5DWRITE_REAL_2_C) +#define nh5dwrite_real_3_c H5_FC_FUNC_(h5dwrite_real_3_c, H5DWRITE_REAL_3_C) +#define nh5dwrite_real_4_c H5_FC_FUNC_(h5dwrite_real_4_c, H5DWRITE_REAL_4_C) +#define nh5dwrite_real_5_c H5_FC_FUNC_(h5dwrite_real_5_c, H5DWRITE_REAL_5_C) +#define nh5dwrite_real_6_c H5_FC_FUNC_(h5dwrite_real_6_c, H5DWRITE_REAL_6_C) +#define nh5dwrite_real_7_c H5_FC_FUNC_(h5dwrite_real_7_c, H5DWRITE_REAL_7_C) +#define nh5dwrite_double_s_c H5_FC_FUNC_(h5dwrite_double_s_c, H5DWRITE_DOUBLE_S_C) +#define nh5dwrite_double_1_c H5_FC_FUNC_(h5dwrite_double_1_c, H5DWRITE_DOUBLE_1_C) +#define nh5dwrite_double_2_c H5_FC_FUNC_(h5dwrite_double_2_c, H5DWRITE_DOUBLE_2_C) +#define nh5dwrite_double_3_c H5_FC_FUNC_(h5dwrite_double_3_c, H5DWRITE_DOUBLE_3_C) +#define nh5dwrite_double_4_c H5_FC_FUNC_(h5dwrite_double_4_c, H5DWRITE_DOUBLE_4_C) +#define nh5dwrite_double_5_c H5_FC_FUNC_(h5dwrite_double_5_c, H5DWRITE_DOUBLE_5_C) +#define nh5dwrite_double_6_c H5_FC_FUNC_(h5dwrite_double_6_c, H5DWRITE_DOUBLE_6_C) +#define nh5dwrite_double_7_c H5_FC_FUNC_(h5dwrite_double_7_c, H5DWRITE_DOUBLE_7_C) +#define nh5dwrite_ref_obj_c H5_FC_FUNC_(h5dwrite_ref_obj_c, H5DWRITE_REF_OBJ_C) +#define nh5dwrite_ref_reg_c H5_FC_FUNC_(h5dwrite_ref_reg_c, H5DWRITE_REF_REG_C) +#define nh5dwritec_c H5_FC_FUNC_(h5dwritec_c, H5DWRITEC_C) +#define nh5dwritec_s_c H5_FC_FUNC_(h5dwritec_s_c, H5DWRITEC_S_C) +#define nh5dwritec_1_c H5_FC_FUNC_(h5dwritec_1_c, H5DWRITEC_1_C) +#define nh5dwritec_2_c H5_FC_FUNC_(h5dwritec_2_c, H5DWRITEC_2_C) +#define nh5dwritec_3_c H5_FC_FUNC_(h5dwritec_3_c, H5DWRITEC_3_C) +#define nh5dwritec_4_c H5_FC_FUNC_(h5dwritec_4_c, H5DWRITEC_4_C) +#define nh5dwritec_5_c H5_FC_FUNC_(h5dwritec_5_c, H5DWRITEC_5_C) +#define nh5dwritec_6_c H5_FC_FUNC_(h5dwritec_6_c, H5DWRITEC_6_C) +#define nh5dwritec_7_c H5_FC_FUNC_(h5dwritec_7_c, H5DWRITEC_7_C) +#define nh5dread_c H5_FC_FUNC_(h5dread_c, H5DREAD_C) +#define nh5dread_integer_s_c H5_FC_FUNC_(h5dread_integer_s_c, H5DREAD_INTEGER_S_C) +#define nh5dread_integer_1_c H5_FC_FUNC_(h5dread_integer_1_c, H5DREAD_INTEGER_1_C) +#define nh5dread_integer_2_c H5_FC_FUNC_(h5dread_integer_2_c, H5DREAD_INTEGER_2_C) +#define nh5dread_integer_3_c H5_FC_FUNC_(h5dread_integer_3_c, H5DREAD_INTEGER_3_C) +#define nh5dread_integer_4_c H5_FC_FUNC_(h5dread_integer_4_c, H5DREAD_INTEGER_4_C) +#define nh5dread_integer_5_c H5_FC_FUNC_(h5dread_integer_5_c, H5DREAD_INTEGER_5_C) +#define nh5dread_integer_6_c H5_FC_FUNC_(h5dread_integer_6_c, H5DREAD_INTEGER_6_C) +#define nh5dread_integer_7_c H5_FC_FUNC_(h5dread_integer_7_c, H5DREAD_INTEGER_7_C) +#define nh5dread_real_s_c H5_FC_FUNC_(h5dread_real_s_c, H5DREAD_REAL_S_C) +#define nh5dread_real_1_c H5_FC_FUNC_(h5dread_real_1_c, H5DREAD_REAL_1_C) +#define nh5dread_real_2_c H5_FC_FUNC_(h5dread_real_2_c, H5DREAD_REAL_2_C) +#define nh5dread_real_3_c H5_FC_FUNC_(h5dread_real_3_c, H5DREAD_REAL_3_C) +#define nh5dread_real_4_c H5_FC_FUNC_(h5dread_real_4_c, H5DREAD_REAL_4_C) +#define nh5dread_real_5_c H5_FC_FUNC_(h5dread_real_5_c, H5DREAD_REAL_5_C) +#define nh5dread_real_6_c H5_FC_FUNC_(h5dread_real_6_c, H5DREAD_REAL_6_C) +#define nh5dread_real_7_c H5_FC_FUNC_(h5dread_real_7_c, H5DREAD_REAL_7_C) +#define nh5dread_double_s_c H5_FC_FUNC_(h5dread_double_s_c, H5DREAD_DOUBLE_S_C) +#define nh5dread_double_1_c H5_FC_FUNC_(h5dread_double_1_c, H5DREAD_DOUBLE_1_C) +#define nh5dread_double_2_c H5_FC_FUNC_(h5dread_double_2_c, H5DREAD_DOUBLE_2_C) +#define nh5dread_double_3_c H5_FC_FUNC_(h5dread_double_3_c, H5DREAD_DOUBLE_3_C) +#define nh5dread_double_4_c H5_FC_FUNC_(h5dread_double_4_c, H5DREAD_DOUBLE_4_C) +#define nh5dread_double_5_c H5_FC_FUNC_(h5dread_double_5_c, H5DREAD_DOUBLE_5_C) +#define nh5dread_double_6_c H5_FC_FUNC_(h5dread_double_6_c, H5DREAD_DOUBLE_6_C) +#define nh5dread_double_7_c H5_FC_FUNC_(h5dread_double_7_c, H5DREAD_DOUBLE_7_C) +#define nh5dread_c_b H5_FC_FUNC_(h5dread_c_b, H5DREAD_C_B) +#define nh5dread_ref_reg_c H5_FC_FUNC_(h5dread_ref_reg_c, H5DREAD_REF_REG_C) +#define nh5dread_ref_obj_c H5_FC_FUNC_(h5dread_ref_obj_c, H5DREAD_REF_OBJ_C) +#define nh5dreadc_c H5_FC_FUNC_(h5dreadc_c, H5DREADC_C) +#define nh5dreadc_s_c H5_FC_FUNC_(h5dreadc_s_c, H5DREADC_S_C) +#define nh5dreadc_1_c H5_FC_FUNC_(h5dreadc_1_c, H5DREADC_1_C) +#define nh5dreadc_2_c H5_FC_FUNC_(h5dreadc_2_c, H5DREADC_2_C) +#define nh5dreadc_3_c H5_FC_FUNC_(h5dreadc_3_c, H5DREADC_3_C) +#define nh5dreadc_4_c H5_FC_FUNC_(h5dreadc_4_c, H5DREADC_4_C) +#define nh5dreadc_5_c H5_FC_FUNC_(h5dreadc_5_c, H5DREADC_5_C) +#define nh5dreadc_6_c H5_FC_FUNC_(h5dreadc_6_c, H5DREADC_6_C) +#define nh5dreadc_7_c H5_FC_FUNC_(h5dreadc_7_c, H5DREADC_7_C) +#define nh5dreadc_c_b H5_FC_FUNC_(h5dreadc_c_b, H5DREADC_C_B) +#define nh5dget_space_c H5_FC_FUNC_(h5dget_space_c, H5DGET_SPACE_C) +#define nh5dget_type_c H5_FC_FUNC_(h5dget_type_c, H5DGET_TYPE_C) +#define nh5dget_create_plist_c H5_FC_FUNC_(h5dget_create_plist_c, H5DGET_CREATE_PLIST_C) +#define nh5dset_extent_c H5_FC_FUNC_(h5dset_extent_c, H5DSET_EXTENT_C) +#define nh5dget_storage_size_c H5_FC_FUNC_(h5dget_storage_size_c, H5DGET_STORAGE_SIZE_C) +#define nh5dvlen_get_max_len_c H5_FC_FUNC_(h5dvlen_get_max_len_c, H5DVLEN_GET_MAX_LEN_C) +#define nh5dwrite_vl_integer_c H5_FC_FUNC_(h5dwrite_vl_integer_c, H5DWRITE_VL_INTEGER_C) +#define nh5dread_vl_integer_c H5_FC_FUNC_(h5dread_vl_integer_c, H5DREAD_VL_INTEGER_C) +#define nh5dwrite_vl_real_c H5_FC_FUNC_(h5dwrite_vl_real_c, H5DWRITE_VL_REAL_C) +#define nh5dread_vl_real_c H5_FC_FUNC_(h5dread_vl_real_c, H5DREAD_VL_REAL_C) +#define nh5dwrite_vl_string_c H5_FC_FUNC_(h5dwrite_vl_string_c, H5DWRITE_VL_STRING_C) +#define nh5dread_vl_string_c H5_FC_FUNC_(h5dread_vl_string_c, H5DREAD_VL_STRING_C) +#define nh5dfillc_c H5_FC_FUNC_(h5dfillc_c, H5DFILLC_C) +#define nh5dfill_c H5_FC_FUNC_(h5dfill_c, H5DFILL_C) +#define nh5dfill_integer_c H5_FC_FUNC_(h5dfill_integer_c, H5DFILL_INTEGER_C) +#define nh5dfill_real_c H5_FC_FUNC_(h5dfill_real_c, H5DFILL_REAL_C) +#define nh5dfill_double_c H5_FC_FUNC_(h5dfill_double_c, H5DFILL_DOUBLE_C) +#define nh5dget_space_status_c H5_FC_FUNC_(h5dget_space_status_c, H5DGET_SPACE_STATUS_C) +#define nh5dcreate_anon_c H5_FC_FUNC_(h5dcreate_anon_c, H5DCREATE_ANON_C) +#define nh5dwrite_f_c H5_FC_FUNC_(h5dwrite_f_c, H5DWRITE_F_C) +#define nh5dread_f_c H5_FC_FUNC_(h5dread_f_c, H5DREAD_F_C) +#define nh5dget_access_plist_c H5_FC_FUNC_(h5dget_access_plist_c, H5DGET_ACCESS_PLIST_C) +#define nh5dvlen_reclaim_c H5_FC_FUNC_(h5dvlen_reclaim_c, H5DVLEN_RECLAIM_C) + + +H5_FCDLL int_f nh5dcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *space_id, + hid_t_f *lcpl_id, hid_t_f *dcpl_id, hid_t_f *dapl_id, hid_t_f *dset_id); +H5_FCDLL int_f nh5dopen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *dapl_id, hid_t_f *dset_id); +H5_FCDLL int_f nh5dclose_c ( hid_t_f *dset_id ); +H5_FCDLL int_f nh5dwrite_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_integer_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_integer_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_integer_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_integer_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_integer_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_integer_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_integer_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_integer_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dwrite_real_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_real_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_real_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_real_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_real_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_real_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_real_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_real_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dwrite_double_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_double_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_double_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_double_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_double_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_double_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_double_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_double_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dwrite_vl_integer_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, hsize_t_f *dims, size_t_f *len); +H5_FCDLL int_f nh5dwrite_vl_real_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, real_f *buf, hsize_t_f *dims, size_t_f *len); +H5_FCDLL int_f nh5dwrite_vl_string_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims, size_t_f *len); +H5_FCDLL int_f nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, haddr_t_f *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwrite_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dwritec_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dwritec_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwritec_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwritec_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwritec_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwritec_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwritec_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwritec_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dwritec_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dread_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dread_integer_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_integer_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_integer_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_integer_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_integer_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_integer_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_integer_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_integer_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dread_real_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_real_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_real_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_real_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_real_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_real_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_real_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_real_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dread_double_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_double_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_double_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_double_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_double_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_double_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_double_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_double_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dread_vl_integer_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, hsize_t_f *dims, size_t_f *len); +H5_FCDLL int_f nh5dread_vl_real_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, real_f *buf, hsize_t_f *dims, size_t_f *len); +H5_FCDLL int_f nh5dread_vl_string_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims, size_t_f *len); +H5_FCDLL int_f nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, haddr_t_f * buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dread_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f * buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dreadc_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); + +H5_FCDLL int_f nh5dreadc_s_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dreadc_1_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dreadc_2_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dreadc_3_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dreadc_4_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dreadc_5_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dreadc_6_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dreadc_7_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims); +H5_FCDLL int_f nh5dget_access_plist_c (hid_t_f *dset_id, hid_t_f *plist_id); + + +H5_FCDLL int_f nh5dget_space_c ( hid_t_f *dset_id , hid_t_f *space_id); +H5_FCDLL int_f nh5dget_type_c ( hid_t_f *dset_id , hid_t_f *type_id); +H5_FCDLL int_f nh5dget_create_plist_c ( hid_t_f *dset_id , hid_t_f *plist_id); +H5_FCDLL int_f nh5dset_extent_c ( hid_t_f *dset_id , hsize_t_f *dims); +H5_FCDLL int_f nh5dvlen_get_max_len_c(hid_t_f *dataset_id, hid_t_f *type_id, hid_t_f *space_id, size_t_f *len); +H5_FCDLL int_f nh5dget_storage_size_c(hid_t_f *dataset_id, hsize_t_f *size); +H5_FCDLL int_f nh5dfillc_c(_fcd fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, _fcd buf, hid_t_f *mem_type_id); +H5_FCDLL int_f nh5dfill_c(void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, void * buf, hid_t_f *mem_type_id); +H5_FCDLL int_f nh5dfill_integer_c(void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, void * buf, hid_t_f *mem_type_id); +H5_FCDLL int_f nh5dfill_real_c(void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, void * buf, hid_t_f *mem_type_id); +H5_FCDLL int_f nh5dfill_double_c(void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, void * buf, hid_t_f *mem_type_id); +H5_FCDLL int_f nh5dget_space_status_c ( hid_t_f *dset_id, int_f *flag); +H5_FCDLL int_f nh5dcreate_anon_c (hid_t_f *loc_id, hid_t_f *type_id, hid_t_f *space_id, + hid_t_f *dcpl_id, hid_t_f *dapl_id, hid_t_f *dset_id); +H5_FCDLL int_f nh5dwrite_f_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, + hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf); +H5_FCDLL int_f nh5dread_f_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_space_id, + hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf); +H5_FCDLL int_f nh5dvlen_reclaim_c (hid_t_f *type_id , hid_t_f *space_id, hid_t_f *plist_id, void *buf); +/* + * Functions from H5Gf.c + */ +#define nh5gcreate_c H5_FC_FUNC_(h5gcreate_c, H5GCREATE_C) +#define nh5gclose_c H5_FC_FUNC_(h5gclose_c, H5GCLOSE_C) +#define nh5gopen_c H5_FC_FUNC_(h5gopen_c, H5GOPEN_C) +#define nh5gget_obj_info_idx_c H5_FC_FUNC_(h5gget_obj_info_idx_c, H5GGET_OBJ_INFO_IDX_C) +#define nh5gn_members_c H5_FC_FUNC_(h5gn_members_c, H5GN_MEMBERS_C) +#define nh5glink_c H5_FC_FUNC_(h5glink_c, H5GLINK_C) +#define nh5glink2_c H5_FC_FUNC_(h5glink2_c, H5GLINK2_C) +#define nh5gunlink_c H5_FC_FUNC_(h5gunlink_c, H5GUNLINK_C) +#define nh5gmove_c H5_FC_FUNC_(h5gmove_c, H5GMOVE_C) +#define nh5gmove2_c H5_FC_FUNC_(h5gmove2_c, H5GMOVE2_C) +#define nh5gget_linkval_c H5_FC_FUNC_(h5gget_linkval_c, H5GGET_LINKVAL_C) +#define nh5gset_comment_c H5_FC_FUNC_(h5gset_comment_c, H5GSET_COMMENT_C) +#define nh5gget_comment_c H5_FC_FUNC_(h5gget_comment_c, H5GGET_COMMENT_C) +#define nh5gcreate_anon_c H5_FC_FUNC_(h5gcreate_anon_c, H5GCREATE_ANON_C) +#define nh5gget_create_plist_c H5_FC_FUNC_(h5gget_create_plist_c, H5GGET_CREATE_PLIST_C) +#define nh5gget_info_c H5_FC_FUNC_(h5gget_info_c, H5GGET_INFO_C) +#define nh5gget_info_by_idx_c H5_FC_FUNC_(h5gget_info_by_idx_c, H5GGET_INFO_BY_IDX_C) +#define nh5gget_info_by_name_c H5_FC_FUNC_(h5gget_info_by_name_c, H5GGET_INFO_BY_NAME_C) + + +H5_FCDLL int_f nh5gcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size_hint, hid_t_f *grp_id, + hid_t_f *lcpl_id, hid_t_f *gcpl_id, hid_t_f *gapl_id); +H5_FCDLL int_f nh5gopen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *gapl_id, hid_t_f *grp_id); +H5_FCDLL int_f nh5gclose_c ( hid_t_f *grp_id ); +H5_FCDLL int_f nh5gget_obj_info_idx_c (hid_t_f *loc_id, _fcd name, int_f *namelen, int_f *idx, _fcd obj_name, int_f *obj_namelen, int_f *obj_type); +H5_FCDLL int_f nh5gn_members_c (hid_t_f *loc_id, _fcd name, int_f *namelen, int_f *nmembers); +H5_FCDLL int_f nh5glink_c (hid_t_f *loc_id, int_f *link_type, _fcd current_name, int_f *current_namelen, _fcd new_name, int_f *new_namelen); +H5_FCDLL int_f nh5glink2_c (hid_t_f *cur_loc_id, _fcd cur_name, int_f *cur_namelen, int_f *link_type, hid_t_f *new_loc_id, _fcd new_name, int_f *new_namelen); +H5_FCDLL int_f nh5gunlink_c (hid_t_f *loc_id, _fcd name, int_f *namelen); +H5_FCDLL int_f nh5gmove_c (hid_t_f *loc_id, _fcd src_name, int_f *src_namelen, _fcd dst_name, int_f *dst_namelen); +H5_FCDLL int_f nh5gmove2_c (hid_t_f *src_loc_id, _fcd src_name, int_f *src_namelen, hid_t_f *dst_loc_id,_fcd dst_name, int_f *dst_namelen); +H5_FCDLL int_f nh5gget_linkval_c (hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size, _fcd value ); +H5_FCDLL int_f nh5gset_comment_c (hid_t_f *loc_id, _fcd name, int_f *namelen, _fcd comment, int_f *commentlen); +H5_FCDLL int_f nh5gget_comment_c (hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *bufsize, _fcd comment); +H5_FCDLL int_f nh5gcreate_anon_c (hid_t_f *loc_id, hid_t_f *gcpl_id, hid_t_f *gapl_id, hid_t_f *grp_id); +H5_FCDLL int_f nh5gget_create_plist_c(hid_t_f *grp_id, hid_t_f *gcpl_id ); +H5_FCDLL int_f nh5gget_info_c (hid_t_f *group_id, int_f *storage_type, int_f *nlinks, int_f *max_corder, int_f *mounted); +H5_FCDLL int_f nh5gget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, + int_f *index_type, int_f *order, hsize_t_f *n, hid_t_f *lapl_id, + int_f *storage_type, int_f *nlinks, int_f *max_corder, int_f *mounted); +H5_FCDLL int_f nh5gget_info_by_name_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, hid_t_f *lapl_id, + int_f *storage_type, int_f *nlinks, int_f *max_corder, int_f *mounted); + +/* + * Functions from H5Af.c + */ +#define nh5acreate_c H5_FC_FUNC_(h5acreate_c, H5ACREATE_C) +#define nh5aclose_c H5_FC_FUNC_(h5aclose_c, H5ACLOSE_C) +#define nh5aopen_name_c H5_FC_FUNC_(h5aopen_name_c, H5AOPEN_NAME_C) +#define nh5awrite_c H5_FC_FUNC_(h5awrite_c, H5AWRITE_C) +#define nh5awrite_integer_s_c H5_FC_FUNC_(h5awrite_integer_s_c, H5AWRITE_INTEGER_S_C) +#define nh5awrite_integer_1_c H5_FC_FUNC_(h5awrite_integer_1_c, H5AWRITE_INTEGER_1_C) +#define nh5awrite_integer_2_c H5_FC_FUNC_(h5awrite_integer_2_c, H5AWRITE_INTEGER_2_C) +#define nh5awrite_integer_3_c H5_FC_FUNC_(h5awrite_integer_3_c, H5AWRITE_INTEGER_3_C) +#define nh5awrite_integer_4_c H5_FC_FUNC_(h5awrite_integer_4_c, H5AWRITE_INTEGER_4_C) +#define nh5awrite_integer_5_c H5_FC_FUNC_(h5awrite_integer_5_c, H5AWRITE_INTEGER_5_C) +#define nh5awrite_integer_6_c H5_FC_FUNC_(h5awrite_integer_6_c, H5AWRITE_INTEGER_6_C) +#define nh5awrite_integer_7_c H5_FC_FUNC_(h5awrite_integer_7_c, H5AWRITE_INTEGER_7_C) +#define nh5awrite_real_s_c H5_FC_FUNC_(h5awrite_real_s_c, H5AWRITE_REAL_S_C) +#define nh5awrite_real_1_c H5_FC_FUNC_(h5awrite_real_1_c, H5AWRITE_REAL_1_C) +#define nh5awrite_real_2_c H5_FC_FUNC_(h5awrite_real_2_c, H5AWRITE_REAL_2_C) +#define nh5awrite_real_3_c H5_FC_FUNC_(h5awrite_real_3_c, H5AWRITE_REAL_3_C) +#define nh5awrite_real_4_c H5_FC_FUNC_(h5awrite_real_4_c, H5AWRITE_REAL_4_C) +#define nh5awrite_real_5_c H5_FC_FUNC_(h5awrite_real_5_c, H5AWRITE_REAL_5_C) +#define nh5awrite_real_6_c H5_FC_FUNC_(h5awrite_real_6_c, H5AWRITE_REAL_6_C) +#define nh5awrite_real_7_c H5_FC_FUNC_(h5awrite_real_7_c, H5AWRITE_REAL_7_C) +#define nh5awrite_double_s_c H5_FC_FUNC_(h5awrite_double_s_c, H5AWRITE_DOUBLE_S_C) +#define nh5awrite_double_1_c H5_FC_FUNC_(h5awrite_double_1_c, H5AWRITE_DOUBLE_1_C) +#define nh5awrite_double_2_c H5_FC_FUNC_(h5awrite_double_2_c, H5AWRITE_DOUBLE_2_C) +#define nh5awrite_double_3_c H5_FC_FUNC_(h5awrite_double_3_c, H5AWRITE_DOUBLE_3_C) +#define nh5awrite_double_4_c H5_FC_FUNC_(h5awrite_double_4_c, H5AWRITE_DOUBLE_4_C) +#define nh5awrite_double_5_c H5_FC_FUNC_(h5awrite_double_5_c, H5AWRITE_DOUBLE_5_C) +#define nh5awrite_double_6_c H5_FC_FUNC_(h5awrite_double_6_c, H5AWRITE_DOUBLE_6_C) +#define nh5awrite_double_7_c H5_FC_FUNC_(h5awrite_double_7_c, H5AWRITE_DOUBLE_7_C) +#define nh5awritec_c H5_FC_FUNC_(h5awritec_c, H5AWRITEC_C) +#define nh5awritec_s_c H5_FC_FUNC_(h5awritec_s_c, H5AWRITEC_S_C) +#define nh5awritec_1_c H5_FC_FUNC_(h5awritec_1_c, H5AWRITEC_1_C) +#define nh5awritec_2_c H5_FC_FUNC_(h5awritec_2_c, H5AWRITEC_2_C) +#define nh5awritec_3_c H5_FC_FUNC_(h5awritec_3_c, H5AWRITEC_3_C) +#define nh5awritec_4_c H5_FC_FUNC_(h5awritec_4_c, H5AWRITEC_4_C) +#define nh5awritec_5_c H5_FC_FUNC_(h5awritec_5_c, H5AWRITEC_5_C) +#define nh5awritec_6_c H5_FC_FUNC_(h5awritec_6_c, H5AWRITEC_6_C) +#define nh5awritec_7_c H5_FC_FUNC_(h5awritec_7_c, H5AWRITEC_7_C) +#define nh5awrite_f_c H5_FC_FUNC_(h5awrite_f_c, H5AWRITE_F_C) +#define nh5aread_c H5_FC_FUNC_(h5aread_c, H5AREAD_C) +#define nh5aread_integer_s_c H5_FC_FUNC_(h5aread_integer_s_c, H5AREAD_INTEGER_S_C) +#define nh5aread_integer_1_c H5_FC_FUNC_(h5aread_integer_1_c, H5AREAD_INTEGER_1_C) +#define nh5aread_integer_2_c H5_FC_FUNC_(h5aread_integer_2_c, H5AREAD_INTEGER_2_C) +#define nh5aread_integer_3_c H5_FC_FUNC_(h5aread_integer_3_c, H5AREAD_INTEGER_3_C) +#define nh5aread_integer_4_c H5_FC_FUNC_(h5aread_integer_4_c, H5AREAD_INTEGER_4_C) +#define nh5aread_integer_5_c H5_FC_FUNC_(h5aread_integer_5_c, H5AREAD_INTEGER_5_C) +#define nh5aread_integer_6_c H5_FC_FUNC_(h5aread_integer_6_c, H5AREAD_INTEGER_6_C) +#define nh5aread_integer_7_c H5_FC_FUNC_(h5aread_integer_7_c, H5AREAD_INTEGER_7_C) +#define nh5aread_real_s_c H5_FC_FUNC_(h5aread_real_s_c, H5AREAD_REAL_S_C) +#define nh5aread_real_1_c H5_FC_FUNC_(h5aread_real_1_c, H5AREAD_REAL_1_C) +#define nh5aread_real_2_c H5_FC_FUNC_(h5aread_real_2_c, H5AREAD_REAL_2_C) +#define nh5aread_real_3_c H5_FC_FUNC_(h5aread_real_3_c, H5AREAD_REAL_3_C) +#define nh5aread_real_4_c H5_FC_FUNC_(h5aread_real_4_c, H5AREAD_REAL_4_C) +#define nh5aread_real_5_c H5_FC_FUNC_(h5aread_real_5_c, H5AREAD_REAL_5_C) +#define nh5aread_real_6_c H5_FC_FUNC_(h5aread_real_6_c, H5AREAD_REAL_6_C) +#define nh5aread_real_7_c H5_FC_FUNC_(h5aread_real_7_c, H5AREAD_REAL_7_C) +#define nh5aread_double_s_c H5_FC_FUNC_(h5aread_double_s_c, H5AREAD_DOUBLE_S_C) +#define nh5aread_double_1_c H5_FC_FUNC_(h5aread_double_1_c, H5AREAD_DOUBLE_1_C) +#define nh5aread_double_2_c H5_FC_FUNC_(h5aread_double_2_c, H5AREAD_DOUBLE_2_C) +#define nh5aread_double_3_c H5_FC_FUNC_(h5aread_double_3_c, H5AREAD_DOUBLE_3_C) +#define nh5aread_double_4_c H5_FC_FUNC_(h5aread_double_4_c, H5AREAD_DOUBLE_4_C) +#define nh5aread_double_5_c H5_FC_FUNC_(h5aread_double_5_c, H5AREAD_DOUBLE_5_C) +#define nh5aread_double_6_c H5_FC_FUNC_(h5aread_double_6_c, H5AREAD_DOUBLE_6_C) +#define nh5aread_double_7_c H5_FC_FUNC_(h5aread_double_7_c, H5AREAD_DOUBLE_7_C) +#define nh5areadc_c H5_FC_FUNC_(h5areadc_c, H5AREADC_C) +#define nh5areadc_s_c H5_FC_FUNC_(h5areadc_s_c, H5AREADC_S_C) +#define nh5areadc_1_c H5_FC_FUNC_(h5areadc_1_c, H5AREADC_1_C) +#define nh5areadc_2_c H5_FC_FUNC_(h5areadc_2_c, H5AREADC_2_C) +#define nh5areadc_3_c H5_FC_FUNC_(h5areadc_3_c, H5AREADC_3_C) +#define nh5areadc_4_c H5_FC_FUNC_(h5areadc_4_c, H5AREADC_4_C) +#define nh5areadc_5_c H5_FC_FUNC_(h5areadc_5_c, H5AREADC_5_C) +#define nh5areadc_6_c H5_FC_FUNC_(h5areadc_6_c, H5AREADC_6_C) +#define nh5areadc_7_c H5_FC_FUNC_(h5areadc_7_c, H5AREADC_7_C) +#define nh5aread_f_c H5_FC_FUNC_(h5aread_f_c, H5AREAD_F_C) +#define nh5aget_name_c H5_FC_FUNC_(h5aget_name_c, H5AGET_NAME_C) +#define nh5aopen_idx_c H5_FC_FUNC_(h5aopen_idx_c, H5AOPEN_IDX_C) +#define nh5aget_space_c H5_FC_FUNC_(h5aget_space_c, H5AGET_SPACE_C) +#define nh5aget_type_c H5_FC_FUNC_(h5aget_type_c, H5AGET_TYPE_C) +#define nh5aget_num_attrs_c H5_FC_FUNC_(h5aget_num_attrs_c, H5AGET_NUM_ATTRS_C) +#define nh5adelete_c H5_FC_FUNC_(h5adelete_c, H5ADELETE_C) +#define nh5aget_storage_size_c H5_FC_FUNC_(h5aget_storage_size_c, H5AGET_STORAGE_SIZE_C) +#define nh5arename_by_name_c H5_FC_FUNC_(h5arename_by_name_c, H5ARENAME_BY_NAME_C) +#define nh5aopen_c H5_FC_FUNC_(h5aopen_c, H5AOPEN_C) +#define nh5adelete_by_name_c H5_FC_FUNC_(h5adelete_by_name_c,H5ADELETE_BY_NAME_C) +#define nh5adelete_by_idx_c H5_FC_FUNC_(h5adelete_by_idx_c,H5ADELETE_BY_IDX_C) +#define nh5aget_name_by_idx_c H5_FC_FUNC_(h5aget_name_by_idx_c,H5AGET_NAME_BY_IDX_C) +#define nh5aget_create_plist_c H5_FC_FUNC_(h5aget_create_plist_c,H5AGET_CREATE_PLIST_C) +#define nh5aopen_by_idx_c H5_FC_FUNC_(h5aopen_by_idx_c,H5AOPEN_BY_IDX_C) +#define nh5aget_info_c H5_FC_FUNC_(h5aget_info_c,H5AGET_INFO_C) +#define nh5aget_info_by_idx_c H5_FC_FUNC_(h5aget_info_by_idx_c,H5AGET_INFO_BY_IDX_C) +#define nh5aget_info_by_name_c H5_FC_FUNC_(h5aget_info_by_name_c,H5AGET_INFO_BY_NAME_C) +#define nh5aget_info_by_name_c H5_FC_FUNC_(h5aget_info_by_name_c,H5AGET_INFO_BY_NAME_C) +#define nh5acreate_by_name_c H5_FC_FUNC_(h5acreate_by_name_c,H5ACREATE_BY_NAME_C) +#define nh5aexists_c H5_FC_FUNC_(h5aexists_c,H5AEXISTS_C) +#define nh5aexists_by_name_c H5_FC_FUNC_(h5aexists_by_name_c,H5AEXISTS_BY_NAME_C) +#define nh5aopen_by_name_c H5_FC_FUNC_(h5aopen_by_name_c,H5AOPEN_BY_NAME_C) +#define nh5arename_c H5_FC_FUNC_(h5arename_c,H5ARENAME_C) + +H5_FCDLL int_f nh5acreate_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *aapl, hid_t_f *attr_id); +H5_FCDLL int_f nh5aopen_name_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *attr_id); +H5_FCDLL int_f nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5awritec_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5awritec_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5awritec_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5awritec_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5awritec_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5awritec_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5awritec_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5awritec_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5awrite_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_integer_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_integer_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_integer_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_integer_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_integer_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_integer_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_integer_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_integer_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_real_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_real_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_real_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_real_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_real_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_real_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_real_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_real_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_double_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_double_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_double_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_double_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_double_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_double_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_double_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_double_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5awrite_f_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf); +H5_FCDLL int_f nh5areadc_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5areadc_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5areadc_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5areadc_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5areadc_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5areadc_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5areadc_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5areadc_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5areadc_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, void *dims); +H5_FCDLL int_f nh5aread_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_integer_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_integer_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_integer_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_integer_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_integer_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_integer_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_integer_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_integer_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_real_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_real_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_real_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_real_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_real_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_real_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_real_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_real_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_double_s_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_double_1_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_double_2_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_double_3_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_double_4_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_double_5_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_double_6_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_double_7_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, void *dims); +H5_FCDLL int_f nh5aread_f_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf); +H5_FCDLL int_f nh5aclose_c ( hid_t_f *attr_id ); +H5_FCDLL int_f nh5adelete_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen); +H5_FCDLL int_f nh5aopen_idx_c (hid_t_f *obj_id, int_f *idx, hid_t_f *attr_id); +H5_FCDLL int_f nh5aget_space_c (hid_t_f *attr_id, hid_t_f *space_id); +H5_FCDLL int_f nh5aget_type_c (hid_t_f *attr_id, hid_t_f *type_id); +H5_FCDLL int_f nh5aget_num_attrs_c (hid_t_f *obj_id, int_f *attr_num); +H5_FCDLL int_f nh5aget_name_c(hid_t_f *attr_id, size_t_f *size, _fcd buf); +H5_FCDLL int_f nh5aget_storage_size_c ( hid_t_f *attr_id, hsize_t_f *size ); +H5_FCDLL int_f nh5arename_by_name_c ( hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, + _fcd old_attr_name, size_t_f *old_attr_namelen, + _fcd new_attr_name, size_t_f *new_attr_namelen, + hid_t_f *lapl_id ); +H5_FCDLL int_f nh5aopen_c ( hid_t_f *obj_id, _fcd attr_name, size_t_f *attr_namelen, + hid_t_f *aapl_id, hid_t_f *attr_id); +H5_FCDLL int_f nh5adelete_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, + _fcd attr_name, size_t_f *attr_namelen, hid_t_f *lapl_id); +H5_FCDLL int_f nh5adelete_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, + int_f *idx_type, int_f *order, hsize_t_f *n, hid_t_f *lapl_id); +H5_FCDLL int_f nh5aget_name_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, + int_f *idx_type, int_f *order, hsize_t_f *n, _fcd name, + size_t_f *size, hid_t_f *lapl_id); +H5_FCDLL int_f nh5aget_create_plist_c ( hid_t_f *attr_id, hid_t_f *creation_prop_id ); +H5_FCDLL int_f nh5aopen_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, + int_f *idx_type, int_f *order, hsize_t_f *n, hid_t_f *aapl_id, hid_t_f *lapl_id, hid_t_f *attr_id); +H5_FCDLL int_f nh5aget_info_c (hid_t_f *loc_id, int_f *corder_valid, int_f *corder, + int_f *cset, hsize_t_f *data_size ); +H5_FCDLL int_f nh5aget_info_by_idx_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, + int_f *idx_type, int_f *order, hsize_t_f *n, hid_t_f *lapl_id, + int_f *corder_valid, int_f *corder, + int_f *cset, hsize_t_f *data_size ); +H5_FCDLL int_f nh5aget_info_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, + _fcd attr_name, size_t_f *attr_namelen, hid_t_f *lapl_id, + int_f *corder_valid, int_f *corder, + int_f *cset, hsize_t_f *data_size ); +H5_FCDLL int_f nh5acreate_by_name_c(hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, + _fcd attr_name, size_t_f *attr_namelen, hid_t_f *type_id, + hid_t_f *space_id, hid_t_f *acpl_id, hid_t_f *aapl_id, + hid_t_f *lapl_id, hid_t_f *attr_id ); +H5_FCDLL int_f nh5aexists_c (hid_t_f *obj_id, _fcd name, size_t_f *namelen, hid_t_f *attr_exists); +H5_FCDLL int_f nh5aexists_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen, + hid_t_f *lapl_id, int_f *attr_exists); +H5_FCDLL int_f nh5aopen_by_name_c (hid_t_f *loc_id, _fcd obj_name, size_t_f *obj_namelen, _fcd attr_name, size_t_f *attr_namelen, + hid_t_f *aapl_id, hid_t_f *lapl_id, hid_t_f *attr_id); +H5_FCDLL int_f nh5arename_c( hid_t_f *loc_id, + _fcd old_attr_name, size_t_f *old_attr_namelen, + _fcd new_attr_name, size_t_f *new_attr_namelen); + +/* + * Functions form H5Tf.c file + */ +#define nh5topen_c H5_FC_FUNC_(h5topen_c, H5TOPEN_C) +#define nh5tcommit_c H5_FC_FUNC_(h5tcommit_c, H5TCOMMIT_C) +#define nh5tcommitted_c H5_FC_FUNC_(h5tcommitted_c, H5TCOMMITTED_C) +#define nh5tconvert_c H5_FC_FUNC_(h5tconvert_c, H5TCONVERT_C) +#define nh5tclose_c H5_FC_FUNC_(h5tclose_c, H5TCLOSE_C) +#define nh5tcopy_c H5_FC_FUNC_(h5tcopy_c, H5TCOPY_C) +#define nh5tequal_c H5_FC_FUNC_(h5tequal_c, H5TEQUAL_C) +#define nh5tget_class_c H5_FC_FUNC_(h5tget_class_c, H5TGET_CLASS_C) +#define nh5tget_order_c H5_FC_FUNC_(h5tget_order_c, H5TGET_ORDER_C) +#define nh5tset_order_c H5_FC_FUNC_(h5tset_order_c, H5TSET_ORDER_C) +#define nh5tget_size_c H5_FC_FUNC_(h5tget_size_c, H5TGET_SIZE_C) +#define nh5tset_size_c H5_FC_FUNC_(h5tset_size_c, H5TSET_SIZE_C) +#define nh5tget_precision_c H5_FC_FUNC_(h5tget_precision_c, H5TGET_PRECISION_C) +#define nh5tset_precision_c H5_FC_FUNC_(h5tset_precision_c, H5TSET_PRECISION_C) +#define nh5tget_offset_c H5_FC_FUNC_(h5tget_offset_c, H5TGET_OFFSET_C) +#define nh5tset_offset_c H5_FC_FUNC_(h5tset_offset_c, H5TSET_OFFSET_C) +#define nh5tget_pad_c H5_FC_FUNC_(h5tget_pad_c, H5TGET_PAD_C) +#define nh5tset_pad_c H5_FC_FUNC_(h5tset_pad_c, H5TSET_PAD_C) +#define nh5tget_sign_c H5_FC_FUNC_(h5tget_sign_c, H5TGET_SIGN_C) +#define nh5tset_sign_c H5_FC_FUNC_(h5tset_sign_c, H5TSET_SIGN_C) +#define nh5tget_fields_c H5_FC_FUNC_(h5tget_fields_c, H5TGET_FIELDS_C) +#define nh5tset_fields_c H5_FC_FUNC_(h5tset_fields_c, H5TSET_FIELDS_C) +#define nh5tget_ebias_c H5_FC_FUNC_(h5tget_ebias_c, H5TGET_EBIAS_C) +#define nh5tset_ebias_c H5_FC_FUNC_(h5tset_ebias_c, H5TSET_EBIAS_C) +#define nh5tget_norm_c H5_FC_FUNC_(h5tget_norm_c, H5TGET_NORM_C) +#define nh5tset_norm_c H5_FC_FUNC_(h5tset_norm_c, H5TSET_NORM_C) +#define nh5tget_inpad_c H5_FC_FUNC_(h5tget_inpad_c, H5TGET_INPAD_C) +#define nh5tset_inpad_c H5_FC_FUNC_(h5tset_inpad_c, H5TSET_INPAD_C) +#define nh5tget_cset_c H5_FC_FUNC_(h5tget_cset_c, H5TGET_CSET_C) +#define nh5tset_cset_c H5_FC_FUNC_(h5tset_cset_c, H5TSET_CSET_C) +#define nh5tget_strpad_c H5_FC_FUNC_(h5tget_strpad_c, H5TGET_STRPAD_C) +#define nh5tset_strpad_c H5_FC_FUNC_(h5tset_strpad_c, H5TSET_STRPAD_C) +#define nh5tget_nmembers_c H5_FC_FUNC_(h5tget_nmembers_c, H5TGET_NMEMBERS_C) +#define nh5tget_member_name_c H5_FC_FUNC_(h5tget_member_name_c, H5TGET_MEMBER_NAME_C) +#define nh5tget_member_offset_c H5_FC_FUNC_(h5tget_member_offset_c, H5TGET_MEMBER_OFFSET_C) +#define nh5tget_member_dims_c H5_FC_FUNC_(h5tget_member_dims_c, H5TGET_MEMBER_DIMS_C) +#define nh5tget_member_type_c H5_FC_FUNC_(h5tget_member_type_c, H5TGET_MEMBER_TYPE_C) +#define nh5tget_member_index_c H5_FC_FUNC_(h5tget_member_index_c, H5TGET_MEMBER_INDEX_C) +#define nh5tinsert_c H5_FC_FUNC_(h5tinsert_c, H5TINSERT_C) +#define nh5tcreate_c H5_FC_FUNC_(h5tcreate_c, H5TCREATE_C) +#define nh5tpack_c H5_FC_FUNC_(h5tpack_c, H5TPACK_C) +#define nh5tinsert_array_c H5_FC_FUNC_(h5tinsert_array_c, H5TINSERT_ARRAY_C) +#define nh5tinsert_array_c2 H5_FC_FUNC_(h5tinsert_array_c2, H5TINSERT_ARRAY_C2) +#define nh5tenum_create_c H5_FC_FUNC_(h5tenum_create_c, H5TENUM_CREATE_C) +#define nh5tenum_insert_c H5_FC_FUNC_(h5tenum_insert_c, H5TENUM_INSERT_C) +#define nh5tenum_nameof_c H5_FC_FUNC_(h5tenum_nameof_c, H5TENUM_NAMEOF_C) +#define nh5tenum_valueof_c H5_FC_FUNC_(h5tenum_valueof_c, H5TENUM_VALUEOF_C) +#define nh5tget_member_value_c H5_FC_FUNC_(h5tget_member_value_c, H5TGET_MEMBER_VALUE_C) +#define nh5tset_tag_c H5_FC_FUNC_(h5tset_tag_c, H5TSET_TAG_C) +#define nh5tget_tag_c H5_FC_FUNC_(h5tget_tag_c, H5TGET_TAG_C) +#define nh5tarray_create_c H5_FC_FUNC_(h5tarray_create_c, H5TARRAY_CREATE_C) +#define nh5tget_array_ndims_c H5_FC_FUNC_(h5tget_array_ndims_c, H5TGET_ARRAY_NDIMS_C) +#define nh5tget_array_dims_c H5_FC_FUNC_(h5tget_array_dims_c, H5TGET_ARRAY_DIMS_C) +#define nh5tget_super_c H5_FC_FUNC_(h5tget_super_c, H5TGET_SUPER_C) +#define nh5tvlen_create_c H5_FC_FUNC_(h5tvlen_create_c, H5TVLEN_CREATE_C) +#define nh5tis_variable_str_c H5_FC_FUNC_(h5tis_variable_str_c, H5TIS_VARIABLE_STR_C) +#define nh5tget_member_class_c H5_FC_FUNC_(h5tget_member_class_c, H5TGET_MEMBER_CLASS_C) +#define nh5tcommit_anon_c H5_FC_FUNC_(h5tcommit_anon_c, H5TCOMMIT_ANON_C) +#define nh5tdecode_c H5_FC_FUNC_(h5tdecode_c, H5TDECODE_C) +#define nh5tencode_c H5_FC_FUNC_(h5tencode_c, H5TENCODE_C) +#define nh5tget_create_plist_c H5_FC_FUNC_(h5tget_create_plist_c, H5TGET_CREATE_PLIST_C) +#define nh5tcompiler_conv_c H5_FC_FUNC_(h5tcompiler_conv_c, H5TCOMPILER_CONV_C) +#define nh5tget_native_type_c H5_FC_FUNC_(h5tget_native_type_c, H5TGET_NATIVE_TYPE_C ) + +H5_FCDLL int_f nh5tcreate_c(int_f *cls, size_t_f *size, hid_t_f *type_id); +H5_FCDLL int_f nh5topen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *tapl_id ); +H5_FCDLL int_f nh5tcommit_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *lcpl_id, hid_t_f *tcpl_id, hid_t_f *tapl_id); +H5_FCDLL int_f nh5tclose_c ( hid_t_f *type_id ); +H5_FCDLL int_f nh5tequal_c ( hid_t_f *type1_id , hid_t_f *type2_id, int_f *c_flag); +H5_FCDLL int_f nh5tcopy_c ( hid_t_f *type_id , hid_t_f *new_type_id); +H5_FCDLL int_f nh5tget_class_c ( hid_t_f *type_id , int_f *classtype); +H5_FCDLL int_f nh5tget_order_c ( hid_t_f *type_id , int_f *order); +H5_FCDLL int_f nh5tset_order_c ( hid_t_f *type_id , int_f *order); +H5_FCDLL int_f nh5tget_size_c ( hid_t_f *type_id , size_t_f *size); +H5_FCDLL int_f nh5tset_size_c ( hid_t_f *type_id , size_t_f *size); +H5_FCDLL int_f nh5tcommitted_c (hid_t_f *dtype_id); +H5_FCDLL int_f nh5tget_precision_c ( hid_t_f *type_id , size_t_f *precision); +H5_FCDLL int_f nh5tset_precision_c ( hid_t_f *type_id , size_t_f *precision); +H5_FCDLL int_f nh5tget_offset_c ( hid_t_f *type_id , size_t_f *offset); +H5_FCDLL int_f nh5tset_offset_c ( hid_t_f *type_id , size_t_f *offset); +H5_FCDLL int_f nh5tget_pad_c ( hid_t_f *type_id , int_f * lsbpad, int_f * msbpad); +H5_FCDLL int_f nh5tset_pad_c ( hid_t_f *type_id, int_f * lsbpad, int_f * msbpad ); +H5_FCDLL int_f nh5tget_sign_c ( hid_t_f *type_id , int_f* sign); +H5_FCDLL int_f nh5tset_sign_c ( hid_t_f *type_id , int_f *sign); +H5_FCDLL int_f nh5tget_fields_c ( hid_t_f *type_id, size_t_f *spos, size_t_f *epos, size_t_f* esize, size_t_f* mpos, size_t_f* msize); +H5_FCDLL int_f nh5tset_fields_c ( hid_t_f *type_id, size_t_f *spos, size_t_f *epos, size_t_f* esize, size_t_f* mpos, size_t_f* msize); +H5_FCDLL int_f nh5tget_ebias_c ( hid_t_f *type_id , size_t_f *ebias); +H5_FCDLL int_f nh5tset_ebias_c ( hid_t_f *type_id , size_t_f *ebias); +H5_FCDLL int_f nh5tget_norm_c ( hid_t_f *type_id , int_f *norm); +H5_FCDLL int_f nh5tset_norm_c ( hid_t_f *type_id , int_f *norm); +H5_FCDLL int_f nh5tget_inpad_c ( hid_t_f *type_id, int_f * padtype); +H5_FCDLL int_f nh5tset_inpad_c ( hid_t_f *type_id, int_f * padtype); +H5_FCDLL int_f nh5tget_cset_c ( hid_t_f *type_id, int_f * cset); +H5_FCDLL int_f nh5tset_cset_c ( hid_t_f *type_id, int_f * cset); +H5_FCDLL int_f nh5tget_strpad_c ( hid_t_f *type_id, int_f * strpad); +H5_FCDLL int_f nh5tset_strpad_c ( hid_t_f *type_id, int_f * strpad); +H5_FCDLL int_f nh5tget_nmembers_c ( hid_t_f *type_id , int_f * num_members); +H5_FCDLL int_f nh5tget_member_name_c ( hid_t_f *type_id ,int_f* idx, _fcd member_name, int_f *namelen); +H5_FCDLL int_f nh5tget_member_dims_c ( hid_t_f *type_id ,int_f* field_idx, int_f * dims, size_t_f * field_dims, int_f * perm ); +H5_FCDLL int_f nh5tget_member_offset_c ( hid_t_f *type_id ,int_f* member_no, size_t_f* offset); +H5_FCDLL int_f nh5tget_member_type_c ( hid_t_f *type_id ,int_f* field_idx, hid_t_f * datatype); +H5_FCDLL int_f nh5tget_member_index_c ( hid_t_f *type_id ,_fcd name, int_f* namelen, int_f *idx); +H5_FCDLL int_f nh5tinsert_c(hid_t_f *type_id, _fcd name, int_f* namelen, size_t_f *offset, hid_t_f * field_id); +H5_FCDLL int_f nh5tpack_c(hid_t_f * type_id); +H5_FCDLL int_f nh5tinsert_array_c(hid_t_f * parent_id, _fcd name, int_f* namelen, size_t_f* offset, int_f* ndims, size_t_f* dims, hid_t_f* member_id, int_f* perm ); +H5_FCDLL int_f nh5tinsert_array_c2(hid_t_f * parent_id, _fcd name, int_f* namelen, size_t_f* offset, int_f* ndims, size_t_f* dims, hid_t_f* member_id); +H5_FCDLL int_f nh5tenum_create_c ( hid_t_f *parent_id , hid_t_f *new_type_id); +H5_FCDLL int_f nh5tenum_insert_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value); +H5_FCDLL int_f nh5tenum_nameof_c(hid_t_f *type_id, int_f* value, _fcd name, size_t_f* namelen); +H5_FCDLL int_f nh5tenum_valueof_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value); +H5_FCDLL int_f nh5tget_member_value_c(hid_t_f *type_id, int_f* member_no, int_f* value); +H5_FCDLL int_f nh5tset_tag_c(hid_t_f* type_id, _fcd tag, int_f* namelen); +H5_FCDLL int_f nh5tget_tag_c(hid_t_f* type_id, _fcd tag, size_t_f* tag_size, int_f* namelen); +H5_FCDLL int_f nh5tarray_create_c(hid_t_f * base_id, int_f *rank, hsize_t_f* dims, hid_t_f* type_id); +H5_FCDLL int_f nh5tget_array_dims_c ( hid_t_f *type_id , hsize_t_f * dims); +H5_FCDLL int_f nh5tget_array_ndims_c ( hid_t_f *type_id , int_f * ndims); +H5_FCDLL int_f nh5tget_super_c ( hid_t_f *type_id , hid_t_f *base_type_id); +H5_FCDLL int_f nh5tvlen_create_c ( hid_t_f *type_id , hid_t_f *vltype_id); +H5_FCDLL int_f nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag ); +H5_FCDLL int_f nh5tget_member_class_c ( hid_t_f *type_id , int_f *member_no, int_f *cls ); +H5_FCDLL int_f nh5tcommit_anon_c(hid_t_f *loc_id, hid_t_f *dtype_id, hid_t_f *tcpl_id, hid_t_f *tapl_id); +H5_FCDLL int_f nh5tdecode_c ( _fcd buf, hid_t_f *obj_id ); +H5_FCDLL int_f nh5tencode_c (_fcd buf, hid_t_f *obj_id, size_t_f *nalloc ); +H5_FCDLL int_f nh5tget_create_plist_c ( hid_t_f *dtype_id, hid_t_f *dtpl_id); +H5_FCDLL int_f nh5tcompiler_conv_c ( hid_t_f *src_id, hid_t_f *dst_id, int_f *c_flag); +H5_FCDLL int_f nh5tget_native_type_c(hid_t_f *dtype_id, int_f *direction, hid_t_f *native_dtype_id); +H5_FCDLL int_f nh5tconvert_c(hid_t_f *src_id, hid_t_f *dst_id, size_t_f *nelmts, void *buf, void *background, hid_t_f *plist_id); + + +/* + * Functions from H5Of.c + */ + +#define nh5olink_c H5_FC_FUNC_(h5olink_c, H5OLINK_C) +#define nh5oopen_c H5_FC_FUNC_(h5oopen_c, H5OOPEN_C) +#define nh5oclose_c H5_FC_FUNC_(h5oclose_c, H5OCLOSE_C) +#define nh5ovisit_c H5_FC_FUNC_(h5ovisit_c, H5OVISIT_C) +#define nh5ovisit_by_name_c H5_FC_FUNC_(h5ovisit_by_name_c, H5OVISIT_BY_NAME_C) +#define nh5oget_info_c H5_FC_FUNC_(h5oget_info_c, H5OGET_INFO_C) +#define nh5oget_info_by_idx_c H5_FC_FUNC_(h5oget_info_by_idx_c ,H5OGET_INFO_BY_IDX_C) +#define nh5oget_info_by_name_c H5_FC_FUNC_(h5oget_info_by_name_c ,H5OGET_INFO_BY_NAME_C) +#define nh5oopen_by_addr_c H5_FC_FUNC_(h5oopen_by_addr_c, H5OOPEN_BY_ADDR_C) +#define nh5ocopy_c H5_FC_FUNC_(h5ocopy_c, H5OCOPY_C) +#define nh5odecr_refcount_c H5_FC_FUNC_(h5odecr_refcount_c, H5ODECR_REFCOUNT_C) +#define nh5oincr_refcount_c H5_FC_FUNC_(h5oincr_refcount_c, H5OINCR_REFCOUNT_C) +#define nh5oexists_by_name_c H5_FC_FUNC_(h5oexists_by_name_c, H5OEXISTS_BY_NAME_C) +#define nh5oset_comment_c H5_FC_FUNC_(h5oset_comment_c, H5OSET_COMMENT_C) +#define nh5oset_comment_by_name_c H5_FC_FUNC_(h5oset_comment_by_name_c, H5OSET_COMMENT_BY_NAME_C) +#define nh5oopen_by_idx_c H5_FC_FUNC_(h5oopen_by_idx_c, H5OOPEN_BY_IDX_C) +#define nh5oget_comment_c H5_FC_FUNC_(h5oget_comment_c, H5OGET_COMMENT_C) +#define nh5oget_comment_by_name_c H5_FC_FUNC_(h5oget_comment_by_name_c, H5OGET_COMMENT_BY_NAME_C) + +H5_FCDLL int_f nh5oopen_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, hid_t_f *obj_id); +H5_FCDLL int_f nh5oclose_c (hid_t_f *object_id ); +H5_FCDLL int_f nh5oopen_by_addr_c (hid_t_f *loc_id, haddr_t_f *addr, hid_t_f *obj_id); +H5_FCDLL int_f nh5olink_c (hid_t_f *object_id, hid_t_f *new_loc_id, _fcd name, size_t_f *namelen, + hid_t_f *lcpl_id, hid_t_f *lapl_id); +H5_FCDLL int_f nh5ovisit_c (hid_t_f *group_id, int_f *index_type, int_f *order, H5O_iterate_t op, void *op_data); +H5_FCDLL int_f nh5ovisit_by_name_c(hid_t_f *loc_id, _fcd object_name, size_t_f *namelen, int_f *index_type, int_f *order, + H5O_iterate_t op, void *op_data, hid_t_f *lapl_id ); +H5_FCDLL int_f nh5oget_info_c (hid_t_f *object_id, H5O_info_t_f *object_info); +H5_FCDLL int_f nh5oget_info_by_idx_c (hid_t_f *loc_id, _fcd group_name, size_t_f *namelen, + int_f *index_field, int_f *order, hsize_t_f *n, hid_t_f *lapl_id, H5O_info_t_f *object_info); +H5_FCDLL int_f nh5oget_info_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, + H5O_info_t_f *object_info); +H5_FCDLL int_f nh5ocopy_c (hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_name_len, + hid_t_f *dst_loc_id, _fcd dst_name, size_t_f *dst_name_len, + hid_t_f *ocpypl_id, hid_t_f *lcpl_id ); +H5_FCDLL int_f nh5odecr_refcount_c (hid_t_f *object_id); +H5_FCDLL int_f nh5oincr_refcount_c (hid_t_f *object_id); +H5_FCDLL int_f nh5oexists_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id); +H5_FCDLL int_f nh5oset_comment_c (hid_t_f *object_id, _fcd comment, size_t_f *commentlen); +H5_FCDLL int_f nh5oset_comment_by_name_c (hid_t_f *object_id, _fcd name, size_t_f *namelen, _fcd comment, size_t_f *commentlen, hid_t_f *lapl_id); +H5_FCDLL int_f nh5oopen_by_idx_c (hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, + int_f *index_type, int_f *order, hsize_t_f *n, hid_t_f *obj_id, hid_t_f *lapl_id); +H5_FCDLL int_f nh5oget_comment_c (hid_t_f *object_id, _fcd comment, size_t_f *commentsize, hssize_t_f *bufsize); +H5_FCDLL int_f nh5oget_comment_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *name_size, + _fcd comment, size_t_f *commentsize, size_t_f *bufsize, hid_t_f *lapl_id); +/* + * Functions from H5Pf.c + */ +#define nh5pcreate_c H5_FC_FUNC_(h5pcreate_c, H5PCREATE_C) +#define nh5pclose_c H5_FC_FUNC_(h5pclose_c, H5PCLOSE_C) +#define nh5pcopy_c H5_FC_FUNC_(h5pcopy_c, H5PCOPY_C) +#define nh5pequal_c H5_FC_FUNC_(h5pequal_c, H5PEQUAL_C) +#define nh5pget_class_c H5_FC_FUNC_(h5pget_class_c, H5PGET_CLASS_C) +#define nh5pset_deflate_c H5_FC_FUNC_(h5pset_deflate_c, H5PSET_DEFLATE_C) +#define nh5pset_preserve_c H5_FC_FUNC_(h5pset_preserve_c, H5PSET_PRESERVE_C) +#define nh5pget_preserve_c H5_FC_FUNC_(h5pget_preserve_c, H5PGET_PRESERVE_C) +#define nh5pset_chunk_c H5_FC_FUNC_(h5pset_chunk_c, H5PSET_CHUNK_C) +#define nh5pget_chunk_c H5_FC_FUNC_(h5pget_chunk_c, H5PGET_CHUNK_C) +#define nh5pset_file_image_c H5_FC_FUNC_(h5pset_file_image_c,H5PSET_FILE_IMAGE_C) +#define nh5pset_fill_valuec_c H5_FC_FUNC_(h5pset_fill_valuec_c, H5PSET_FILL_VALUEC_C) +#define nh5pset_fill_value_c H5_FC_FUNC_(h5pset_fill_value_c, H5PSET_FILL_VALUE_C) +#define nh5pset_fill_value_integer_c H5_FC_FUNC_(h5pset_fill_value_integer_c, H5PSET_FILL_VALUE_INTEGER_C) +#define nh5pset_fill_value_real_c H5_FC_FUNC_(h5pset_fill_value_real_c, H5PSET_FILL_VALUE_REAL_C) +#define nh5pset_fill_value_double_c H5_FC_FUNC_(h5pset_fill_value_double_c, H5PSET_FILL_VALUE_DOUBLE_C) +#define nh5pget_file_image_c H5_FC_FUNC_(h5pget_file_image_c,H5PGET_FILE_IMAGE_C) +#define nh5pget_fill_valuec_c H5_FC_FUNC_(h5pget_fill_valuec_c, H5PGET_FILL_VALUEC_C) +#define nh5pget_fill_value_c H5_FC_FUNC_(h5pget_fill_value_c, H5PGET_FILL_VALUE_C) +#define nh5pget_fill_value_integer_c H5_FC_FUNC_(h5pget_fill_value_integer_c, H5PGET_FILL_VALUE_INTEGER_C) +#define nh5pget_fill_value_real_c H5_FC_FUNC_(h5pget_fill_value_real_c, H5PGET_FILL_VALUE_REAL_C) +#define nh5pget_fill_value_double_c H5_FC_FUNC_(h5pget_fill_value_double_c, H5PGET_FILL_VALUE_DOUBLE_C) +#define nh5pget_version_c H5_FC_FUNC_(h5pget_version_c, H5PGET_VERSION_C) +#define nh5pget_userblock_c H5_FC_FUNC_(h5pget_userblock_c, H5PGET_USERBLOCK_C) +#define nh5pset_userblock_c H5_FC_FUNC_(h5pset_userblock_c, H5PSET_USERBLOCK_C) +#define nh5pset_sizes_c H5_FC_FUNC_(h5pset_sizes_c, H5PSET_SIZES_C) +#define nh5pget_sizes_c H5_FC_FUNC_(h5pget_sizes_c, H5PGET_SIZES_C) +#define nh5pget_sym_k_c H5_FC_FUNC_(h5pget_sym_k_c, H5PGET_SYM_K_C) +#define nh5pset_sym_k_c H5_FC_FUNC_(h5pset_sym_k_c, H5PSET_SYM_K_C) +#define nh5pget_istore_k_c H5_FC_FUNC_(h5pget_istore_k_c, H5PGET_ISTORE_K_C) +#define nh5pset_istore_k_c H5_FC_FUNC_(h5pset_istore_k_c, H5PSET_ISTORE_K_C) +#define nh5pget_driver_c H5_FC_FUNC_(h5pget_driver_c, H5PGET_DRIVER_C) +#define nh5pset_fapl_stdio_c H5_FC_FUNC_(h5pset_fapl_stdio_c, H5PSET_FAPL_STDIO_C) +#define nh5pget_fapl_stdio_c H5_FC_FUNC_(h5pget_fapl_stdio_c, H5PGET_FAPL_STDIO_C) +#define nh5pset_fapl_sec2_c H5_FC_FUNC_(h5pset_fapl_sec2_c, H5PSET_FAPL_SEC2_C) +#define nh5pget_fapl_sec2_c H5_FC_FUNC_(h5pget_fapl_sec2_c, H5PGET_FAPL_SEC2_C) +#define nh5pset_alignment_c H5_FC_FUNC_(h5pset_alignment_c, H5PSET_ALIGNMENT_C) +#define nh5pget_alignment_c H5_FC_FUNC_(h5pget_alignment_c, H5PGET_ALIGNMENT_C) +#define nh5pset_fapl_core_c H5_FC_FUNC_(h5pset_fapl_core_c, H5PSET_FAPL_CORE_C) +#define nh5pget_fapl_core_c H5_FC_FUNC_(h5pget_fapl_core_c, H5PGET_FAPL_CORE_C) +#define nh5pset_fapl_family_c H5_FC_FUNC_(h5pset_fapl_family_c, H5PSET_FAPL_FAMILY_C) +#define nh5pget_fapl_family_c H5_FC_FUNC_(h5pget_fapl_family_c, H5PGET_FAPL_FAMILY_C) +#define nh5pset_cache_c H5_FC_FUNC_(h5pset_cache_c, H5PSET_CACHE_C) +#define nh5pget_cache_c H5_FC_FUNC_(h5pget_cache_c, H5PGET_CACHE_C) +#define nh5pset_fapl_split_c H5_FC_FUNC_(h5pset_fapl_split_c, H5PSET_FAPL_SPLIT_C) +#define nh5pget_fapl_split_c H5_FC_FUNC_(h5pget_fapl_split_c, H5PGET_FAPL_SPLIT_C) +#define nh5pset_gc_references_c H5_FC_FUNC_(h5pset_gc_references_c, H5PSET_GC_REFERENCES_C) +#define nh5pget_gc_references_c H5_FC_FUNC_(h5pget_gc_references_c, H5PGET_GC_REFERENCES_C) +#define nh5pset_layout_c H5_FC_FUNC_(h5pset_layout_c, H5PSET_LAYOUT_C) +#define nh5pget_layout_c H5_FC_FUNC_(h5pget_layout_c, H5PGET_LAYOUT_C) +#define nh5pset_filter_c H5_FC_FUNC_(h5pset_filter_c, H5PSET_FILTER_C) +#define nh5premove_filter_c H5_FC_FUNC_(h5premove_filter_c, H5PREMOVE_FILTER_C) +#define nh5pmodify_filter_c H5_FC_FUNC_(h5pmodify_filter_c, H5PMODIFY_FILTER_C) +#define nh5pget_nfilters_c H5_FC_FUNC_(h5pget_nfilters_c, H5PGET_NFILTERS_C) +#define nh5pget_filter_c H5_FC_FUNC_(h5pget_filter_c, H5PGET_FILTER_C) +#define nh5pget_filter_by_id_c H5_FC_FUNC_(h5pget_filter_by_id_c, H5PGET_FILTER_BY_ID_C) +#define nh5pset_external_c H5_FC_FUNC_(h5pset_external_c, H5PSET_EXTERNAL_C) +#define nh5pget_external_count_c H5_FC_FUNC_(h5pget_external_count_c, H5PGET_EXTERNAL_COUNT_C) +#define nh5pget_external_c H5_FC_FUNC_(h5pget_external_c, H5PGET_EXTERNAL_C) +#define nh5pget_btree_ratios_c H5_FC_FUNC_(h5pget_btree_ratios_c, H5PGET_BTREE_RATIOS_C) +#define nh5pset_btree_ratios_c H5_FC_FUNC_(h5pset_btree_ratios_c, H5PSET_BTREE_RATIOS_C) +#define nh5pset_fapl_mpio_c H5_FC_FUNC_(h5pset_fapl_mpio_c, H5PSET_FAPL_MPIO_C) +#define nh5pget_fapl_mpio_c H5_FC_FUNC_(h5pget_fapl_mpio_c, H5PGET_FAPL_MPIO_C) +#define nh5pset_dxpl_mpio_c H5_FC_FUNC_(h5pset_dxpl_mpio_c, H5PSET_DXPL_MPIO_C) +#define nh5pget_dxpl_mpio_c H5_FC_FUNC_(h5pget_dxpl_mpio_c, H5PGET_DXPL_MPIO_C) +#define nh5pget_fclose_degree_c H5_FC_FUNC_(h5pget_fclose_degree_c, H5PGET_FCLOSE_DEGREE_C) +#define nh5pset_fclose_degree_c H5_FC_FUNC_(h5pset_fclose_degree_c, H5PSET_FCLOSE_DEGREE_C) +#define nh5pset_buffer_c H5_FC_FUNC_(h5pset_buffer_c, H5PSET_BUFFER_C) +#define nh5pget_buffer_c H5_FC_FUNC_(h5pget_buffer_c, H5PGET_BUFFER_C) +#define nh5pfill_value_defined_c H5_FC_FUNC_(h5pfill_value_defined_c, H5PFILL_VALUE_DEFINED_C) +#define nh5pset_alloc_time_c H5_FC_FUNC_(h5pset_alloc_time_c, H5PSET_ALLOC_TIME_C) +#define nh5pget_alloc_time_c H5_FC_FUNC_(h5pget_alloc_time_c, H5PGET_ALLOC_TIME_C) +#define nh5pset_fill_time_c H5_FC_FUNC_(h5pset_fill_time_c, H5PSET_FILL_TIME_C) +#define nh5pget_fill_time_c H5_FC_FUNC_(h5pget_fill_time_c, H5PGET_FILL_TIME_C) +#define nh5pset_meta_block_size_c H5_FC_FUNC_(h5pset_meta_block_size_c, H5PSET_META_BLOCK_SIZE_C) +#define nh5pget_meta_block_size_c H5_FC_FUNC_(h5pget_meta_block_size_c, H5PGET_META_BLOCK_SIZE_C) +#define nh5pset_sieve_buf_size_c H5_FC_FUNC_(h5pset_sieve_buf_size_c, H5PSET_SIEVE_BUF_SIZE_C) +#define nh5pget_sieve_buf_size_c H5_FC_FUNC_(h5pget_sieve_buf_size_c, H5PGET_SIEVE_BUF_SIZE_C) +#define nh5pset_hyper_vector_size_c H5_FC_FUNC_(h5pset_hyper_vector_size_c, H5PSET_HYPER_VECTOR_SIZE_C) +#define nh5pget_hyper_vector_size_c H5_FC_FUNC_(h5pget_hyper_vector_size_c, H5PGET_HYPER_VECTOR_SIZE_C) +#define nh5pset_small_data_block_size_c H5_FC_FUNC_(h5pset_small_data_block_size_c, H5PSET_SMALL_DATA_BLOCK_SIZE_C) +#define nh5pget_small_data_block_size_c H5_FC_FUNC_(h5pget_small_data_block_size_c, H5PGET_SMALL_DATA_BLOCK_SIZE_C) +#define nh5pcreate_class_c H5_FC_FUNC_(h5pcreate_class_c, H5PCREATE_CLASS_C) +#define nh5pregister_c H5_FC_FUNC_(h5pregister_c, H5PREGISTER_C) +#define nh5pregister_integer_c H5_FC_FUNC_(h5pregister_integer_c, H5PREGISTER_INTEGER_C) +#define nh5pregister_real_c H5_FC_FUNC_(h5pregister_real_c, H5PREGISTER_REAL_C) +#define nh5pregister_double_c H5_FC_FUNC_(h5pregister_double_c, H5PREGISTER_DOUBLE_C) +#define nh5pregisterc_c H5_FC_FUNC_(h5pregisterc_c, H5PREGISTERC_C) +#define nh5pinsert_c H5_FC_FUNC_(h5pinsert_c, H5PINSERT_C) +#define nh5pinsert_integer_c H5_FC_FUNC_(h5pinsert_integer_c, H5PINSERT_INTEGER_C) +#define nh5pinsert_real_c H5_FC_FUNC_(h5pinsert_real_c, H5PINSERT_REAL_C) +#define nh5pinsert_double_c H5_FC_FUNC_(h5pinsert_double_c, H5PINSERT_DOUBLE_C) +#define nh5pinsertc_c H5_FC_FUNC_(h5pinsertc_c, H5PINSERTC_C) +#define nh5pset_c H5_FC_FUNC_(h5pset_c, H5PSET_C) +#define nh5pset_integer_c H5_FC_FUNC_(h5pset_integer_c, H5PSET_INTEGER_C) +#define nh5pset_real_c H5_FC_FUNC_(h5pset_real_c, H5PSET_REAL_C) +#define nh5pset_double_c H5_FC_FUNC_(h5pset_double_c, H5PSET_DOUBLE_C) +#define nh5psetc_c H5_FC_FUNC_(h5psetc_c, H5PSETC_C) +#define nh5pget_c H5_FC_FUNC_(h5pget_c, H5PGET_C) +#define nh5pget_integer_c H5_FC_FUNC_(h5pget_integer_c, H5PGET_INTEGER_C) +#define nh5pget_real_c H5_FC_FUNC_(h5pget_real_c, H5PGET_REAL_C) +#define nh5pget_double_c H5_FC_FUNC_(h5pget_double_c, H5PGET_DOUBLE_C) +#define nh5pgetc_c H5_FC_FUNC_(h5pgetc_c, H5PGETC_C) +#define nh5pexist_c H5_FC_FUNC_(h5pexist_c, H5PEXIST_C) +#define nh5pget_size_c H5_FC_FUNC_(h5pget_size_c, H5PGET_SIZE_C) +#define nh5pget_nprops_c H5_FC_FUNC_(h5pget_nprops_c, H5PGET_NPROPS_C) +#define nh5pget_class_parent_c H5_FC_FUNC_(h5pget_class_parent_c, H5PGET_CLASS_PARENT_C) +#define nh5pisa_class_c H5_FC_FUNC_(h5pisa_class_c, H5PISA_CLASS_C) +#define nh5pcopy_prop_c H5_FC_FUNC_(h5pcopy_prop_c, H5PCOPY_PROP_C) +#define nh5premove_c H5_FC_FUNC_(h5premove_c, H5PREMOVE_C) +#define nh5punregister_c H5_FC_FUNC_(h5punregister_c, H5PUNREGISTER_C) +#define nh5pclose_class_c H5_FC_FUNC_(h5pclose_class_c, H5PCLOSE_CLASS_C) +#define nh5pget_class_name_c H5_FC_FUNC_(h5pget_class_name_c, H5PGET_CLASS_NAME_C) +#define nh5pset_shuffle_c H5_FC_FUNC_(h5pset_shuffle_c, H5PSET_SHUFFLE_C) +#define nh5pset_fletcher32_c H5_FC_FUNC_(h5pset_fletcher32_c, H5PSET_FLETCHER32_C) +#define nh5pset_edc_check_c H5_FC_FUNC_(h5pset_edc_check_c, H5PSET_EDC_CHECK_C) +#define nh5pget_edc_check_c H5_FC_FUNC_(h5pget_edc_check_c, H5PGET_EDC_CHECK_C) +#define nh5pset_family_offset_c H5_FC_FUNC_(h5pset_family_offset_c, H5PSET_FAMILY_OFFSET_C) +#define nh5pget_fapl_multi_c H5_FC_FUNC_(h5pget_fapl_multi_c, H5PGET_FAPL_MULTI_C) +#define nh5pset_fapl_multi_c H5_FC_FUNC_(h5pset_fapl_multi_c, H5PSET_FAPL_MULTI_C) +#define nh5pset_fapl_multi_sc H5_FC_FUNC_(h5pset_fapl_multi_sc, H5PSET_FAPL_MULTI_SC) +#define nh5pset_szip_c H5_FC_FUNC_(h5pset_szip_c, H5PSET_SZIP_C) +#define nh5pall_filters_avail_c H5_FC_FUNC_(h5pall_filters_avail_c, H5PALL_FILTERS_AVAIL_C) +#define nh5pget_attr_phase_change_c H5_FC_FUNC_(h5pget_attr_phase_change_c, H5PGET_ATTR_PHASE_CHANGE_C) +#define nh5pset_attr_creation_order_c H5_FC_FUNC_(h5pset_attr_creation_order_c, H5PSET_ATTR_CREATION_ORDER_C) +#define nh5pset_shared_mesg_nindexes_c H5_FC_FUNC_(h5pset_shared_mesg_nindexes_c, H5PSET_SHARED_MESG_NINDEXES_C) +#define nh5pset_shared_mesg_index_c H5_FC_FUNC_(h5pset_shared_mesg_index_c,H5PSET_SHARED_MESG_INDEX_C) +#define nh5pget_attr_creation_order_c H5_FC_FUNC_(h5pget_attr_creation_order_c,H5PGET_ATTR_CREATION_ORDER_C) +#define nh5pset_libver_bounds_c H5_FC_FUNC_(h5pset_libver_bounds_c,H5PSET_LIBVER_BOUNDS_C) +#define nh5pset_link_creation_order_c H5_FC_FUNC_(h5pset_link_creation_order_c, H5PSET_LINK_CREATION_ORDER_C) +#define nh5pget_link_phase_change_c H5_FC_FUNC_(h5pget_link_phase_change_c, H5PGET_LINK_PHASE_CHANGE_C) +#define nh5pget_obj_track_times_c H5_FC_FUNC_(h5pget_obj_track_times_c, H5PGET_OBJ_TRACK_TIMES_C) +#define nh5pset_obj_track_times_c H5_FC_FUNC_(h5pset_obj_track_times_c, H5PSET_OBJ_TRACK_TIMES_C) +#define nh5pset_create_inter_group_c H5_FC_FUNC_(h5pset_create_inter_group_c,H5PSET_CREATE_INTER_GROUP_C) +#define nh5pget_create_inter_group_c H5_FC_FUNC_(h5pget_create_inter_group_c,H5PGET_CREATE_INTER_GROUP_C) +#define nh5pget_link_creation_order_c H5_FC_FUNC_(h5pget_link_creation_order_c,H5PGET_LINK_CREATION_ORDER_C) +#define nh5pset_char_encoding_c H5_FC_FUNC_(h5pset_char_encoding_c, H5PSET_CHAR_ENCODING_C) +#define nh5pget_char_encoding_c H5_FC_FUNC_(h5pget_char_encoding_c, H5PGET_CHAR_ENCODING_C) +#define nh5pset_copy_object_c H5_FC_FUNC_(h5pset_copy_object_c, H5PSET_COPY_OBJECT_C) +#define nh5pget_copy_object_c H5_FC_FUNC_(h5pget_copy_object_c, H5PGET_COPY_OBJECT_C) +#define nh5pget_data_transform_c H5_FC_FUNC_(h5pget_data_transform_c, H5PGET_DATA_TRANSFORM_C) +#define nh5pset_data_transform_c H5_FC_FUNC_(h5pset_data_transform_c, H5PSET_DATA_TRANSFORM_C) +#define nh5pget_local_heap_size_hint_c H5_FC_FUNC_(h5pget_local_heap_size_hint_c, H5PGET_LOCAL_HEAP_SIZE_HINT_C) +#define nh5pget_est_link_info_c H5_FC_FUNC_(h5pget_est_link_info_c,H5PGET_EST_LINK_INFO_C) +#define nh5pset_est_link_info_c H5_FC_FUNC_(h5pset_est_link_info_c,H5PSET_EST_LINK_INFO_C) +#define nh5pset_local_heap_size_hint_c H5_FC_FUNC_(h5pset_local_heap_size_hint_c, H5PSET_LOCAL_HEAP_SIZE_HINT_C) +#define nh5pset_link_phase_change_c H5_FC_FUNC_(h5pset_link_phase_change_c, H5PSET_LINK_PHASE_CHANGE_C) +#define nh5pset_fapl_direct_c H5_FC_FUNC_(h5pset_fapl_direct_c, H5PSET_FAPL_DIRECT_C) +#define nh5pget_fapl_direct_c H5_FC_FUNC_(h5pget_fapl_direct_c, H5PGET_FAPL_DIRECT_C) +#define nh5pset_attr_phase_change_c H5_FC_FUNC_(h5pset_attr_phase_change_c, H5PSET_ATTR_PHASE_CHANGE_C) +#define nh5pset_nbit_c H5_FC_FUNC_(h5pset_nbit_c, H5PSET_NBIT_C) +#define nh5pset_scaleoffset_c H5_FC_FUNC_(h5pset_scaleoffset_c, H5PSET_SCALEOFFSET_C) +#define nh5pset_nlinks_c H5_FC_FUNC_(h5pset_nlinks_c, H5PSET_NLINKS_C) +#define nh5pget_nlinks_c H5_FC_FUNC_(h5pget_nlinks_c, H5PGET_NLINKS_C) +#define nh5pset_chunk_cache_c H5_FC_FUNC_(h5pset_chunk_cache_c, H5PSET_CHUNK_CACHE_C) +#define nh5pget_chunk_cache_c H5_FC_FUNC_(h5pget_chunk_cache_c, H5PGET_CHUNK_CACHE_C) +#define nh5pget_mpio_actual_io_mode_c H5_FC_FUNC_(h5pget_mpio_actual_io_mode_c, H5PGET_MPIO_ACTUAL_IO_MODE_C) + +H5_FCDLL int_f nh5pcreate_c ( hid_t_f *cls, hid_t_f *prp_id ); +H5_FCDLL int_f nh5pclose_c ( hid_t_f *prp_id ); +H5_FCDLL int_f nh5pcopy_c ( hid_t_f *prp_id , hid_t_f *new_prp_id); +H5_FCDLL int_f nh5pequal_c ( hid_t_f *plist1_id , hid_t_f *plist2_id, int_f *c_flag); +H5_FCDLL int_f nh5pget_class_c ( hid_t_f *prp_id , int_f *classtype); +H5_FCDLL int_f nh5pset_deflate_c ( hid_t_f *prp_id , int_f *level); +H5_FCDLL int_f nh5pset_chunk_c ( hid_t_f *prp_id, int_f *rank, hsize_t_f *dims ); +H5_FCDLL int_f nh5pget_chunk_c ( hid_t_f *prp_id, int_f *max_rank, hsize_t_f *dims ); +H5_FCDLL int_f nh5pset_file_image_c (hid_t_f *fapl_id, void *buf_ptr, size_t_f *buf_len); +H5_FCDLL int_f nh5pset_fill_valuec_c (hid_t_f *prp_id, hid_t_f *type_id, _fcd fillvalue); +H5_FCDLL int_f nh5pset_fill_value_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue); +H5_FCDLL int_f nh5pset_fill_value_integer_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue); +H5_FCDLL int_f nh5pset_fill_value_real_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue); +H5_FCDLL int_f nh5pset_fill_value_double_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue); +H5_FCDLL int_f nh5pget_file_image_c (hid_t_f *fapl_id, void **buf_ptr, size_t_f *buf_len); +H5_FCDLL int_f nh5pget_fill_valuec_c (hid_t_f *prp_id, hid_t_f *type_id, _fcd fillvalue); +H5_FCDLL int_f nh5pget_fill_value_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue); +H5_FCDLL int_f nh5pget_fill_value_integer_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue); +H5_FCDLL int_f nh5pget_fill_value_real_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue); +H5_FCDLL int_f nh5pget_fill_value_double_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue); +H5_FCDLL int_f nh5pset_preserve_c ( hid_t_f *prp_id , int_f *flag); +H5_FCDLL int_f nh5pget_preserve_c ( hid_t_f *prp_id , int_f *flag); +H5_FCDLL int_f nh5pget_version_c (hid_t_f *prp_id, int_f * boot,int_f * freelist, int_f * stab, int_f *shhdr); +H5_FCDLL int_f nh5pset_userblock_c (hid_t_f *prp_id, hsize_t_f * size); +H5_FCDLL int_f nh5pget_userblock_c (hid_t_f *prp_id, hsize_t_f * size); +H5_FCDLL int_f nh5pget_sizes_c (hid_t_f *prp_id, size_t_f * sizeof_addr, size_t_f * sizeof_size); +H5_FCDLL int_f nh5pset_sizes_c (hid_t_f *prp_id, size_t_f * sizeof_addr, size_t_f * sizeof_size); +H5_FCDLL int_f nh5pset_sym_k_c (hid_t_f *prp_id, int_f* ik, int_f* lk); +H5_FCDLL int_f nh5pget_sym_k_c (hid_t_f *prp_id, int_f* ik, int_f* lk); +H5_FCDLL int_f nh5pset_istore_k_c (hid_t_f *prp_id, int_f* ik); +H5_FCDLL int_f nh5pget_istore_k_c (hid_t_f *prp_id, int_f* ik); +H5_FCDLL int_f nh5pget_driver_c (hid_t_f *prp_id, hid_t_f*driver); +H5_FCDLL int_f nh5pset_fapl_stdio_c (hid_t_f *prp_id); +H5_FCDLL int_f nh5pget_fapl_stdio_c (hid_t_f *prp_id, int_f* io); +H5_FCDLL int_f nh5pset_fapl_sec2_c (hid_t_f *prp_id); +H5_FCDLL int_f nh5pget_fapl_sec2_c (hid_t_f *prp_id, int_f* sec2); +H5_FCDLL int_f nh5pset_alignment_c(hid_t_f *prp_id, hsize_t_f* threshold, hsize_t_f* alignment); +H5_FCDLL int_f nh5pget_alignment_c(hid_t_f *prp_id, hsize_t_f* threshold, hsize_t_f* alignment); +H5_FCDLL int_f nh5pget_fapl_core_c (hid_t_f *prp_id, size_t_f* increment, int_f *flag); +H5_FCDLL int_f nh5pset_fapl_core_c (hid_t_f *prp_id, size_t_f* increment, int_f *flag); +H5_FCDLL int_f nh5pset_fapl_family_c (hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist ); +H5_FCDLL int_f nh5pget_fapl_family_c (hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist ); +H5_FCDLL int_f nh5pset_cache_c(hid_t_f *prp_id, int_f* mdc_nelmts, size_t_f* rdcc_nelmts, size_t_f* rdcc_nbytes, real_f* rdcc_w0); +H5_FCDLL int_f nh5pget_cache_c(hid_t_f *prp_id, int_f* mdc_nelmts, size_t_f* rdcc_nelmts, size_t_f* rdcc_nbytes, real_f* rdcc_w0); +H5_FCDLL int_f nh5pget_fapl_split_c(hid_t_f *prp_id, size_t_f* meta_ext_size , _fcd meta_ext, hid_t_f* meta_plist, size_t_f* raw_ext_size, _fcd raw_ext, hid_t_f * raw_plist); +H5_FCDLL int_f nh5pset_fapl_split_c(hid_t_f *prp_id, int_f* meta_len, _fcd meta_ext, hid_t_f* meta_plist, int_f* raw_len, _fcd raw_ext, hid_t_f * raw_plist); +H5_FCDLL int_f nh5pset_gc_references_c(hid_t_f *prp_id, int_f* gc_references); +H5_FCDLL int_f nh5pget_gc_references_c(hid_t_f *prp_id, int_f* gc_references); +H5_FCDLL int_f nh5pset_layout_c (hid_t_f *prp_id, int_f* layout); +H5_FCDLL int_f nh5pget_layout_c (hid_t_f *prp_id, int_f* layout); +H5_FCDLL int_f nh5pset_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values ); +H5_FCDLL int_f nh5premove_filter_c (hid_t_f *prp_id, int_f* filter); +H5_FCDLL int_f nh5pmodify_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values ); +H5_FCDLL int_f nh5pget_nfilters_c (hid_t_f *prp_id, int_f* nfilters); +H5_FCDLL int_f nh5pget_filter_c(hid_t_f *prp_id, int_f* filter_number, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values, size_t_f *namelen, _fcd name, int_f* filter_id); +H5_FCDLL int_f nh5pget_filter_by_id_c(hid_t_f *prp_id, int_f* filter_id, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values, size_t_f *namelen, _fcd name); +H5_FCDLL int_f nh5pset_external_c (hid_t_f *prp_id, _fcd name, int_f* namelen, off_t_f* offset, hsize_t_f*bytes); +H5_FCDLL int_f nh5pget_external_count_c (hid_t_f *prp_id, int_f* count); +H5_FCDLL int_f nh5pget_external_c(hid_t_f *prp_id, int_f *idx, size_t_f* name_size, _fcd name, off_t_f* offset, hsize_t_f*bytes); +H5_FCDLL int_f nh5pget_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* middle, real_f* right); +H5_FCDLL int_f nh5pset_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* middle, real_f* right); +H5_FCDLL int_f nh5pget_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info); +H5_FCDLL int_f nh5pset_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info); +H5_FCDLL int_f nh5pget_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode); +H5_FCDLL int_f nh5pset_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode); +H5_FCDLL int_f nh5pset_fclose_degree_c(hid_t_f *fapl, int_f *degree); +H5_FCDLL int_f nh5pget_fclose_degree_c(hid_t_f *fapl, int_f *degree); +H5_FCDLL int_f nh5pget_buffer_c(hid_t_f *plist, hsize_t_f *size); +H5_FCDLL int_f nh5pset_buffer_c(hid_t_f *plist, hsize_t_f *size); +H5_FCDLL int_f nh5pset_alloc_time_c(hid_t_f *plist, int_f *flag); +H5_FCDLL int_f nh5pget_alloc_time_c(hid_t_f *plist, int_f *flag); +H5_FCDLL int_f nh5pset_fill_time_c(hid_t_f *plist, int_f *flag); +H5_FCDLL int_f nh5pget_fill_time_c(hid_t_f *plist, int_f *flag); +H5_FCDLL int_f nh5pset_meta_block_size_c(hid_t_f *plist, hsize_t_f *size); +H5_FCDLL int_f nh5pget_meta_block_size_c(hid_t_f *plist, hsize_t_f *size); +H5_FCDLL int_f nh5pset_sieve_buf_size_c(hid_t_f *plist, size_t_f *size); +H5_FCDLL int_f nh5pget_sieve_buf_size_c(hid_t_f *plist, size_t_f *size); +H5_FCDLL int_f nh5pset_small_data_block_size_c(hid_t_f *plist, hsize_t_f *size); +H5_FCDLL int_f nh5pget_small_data_block_size_c(hid_t_f *plist, hsize_t_f *size); +H5_FCDLL int_f nh5pset_hyper_vector_size_c(hid_t_f *plist, size_t_f *size); +H5_FCDLL int_f nh5pget_hyper_vector_size_c(hid_t_f *plist, size_t_f *size); +H5_FCDLL int_f nh5pcreate_class_c(hid_t_f *parent, _fcd name, int_f *name_len, hid_t_f *cls, + H5P_cls_create_func_t create, void *create_data, + H5P_cls_copy_func_t copy, void *copy_data, + H5P_cls_close_func_t close, void *close_data); +H5_FCDLL int_f nh5pregister_c(hid_t_f *cls, _fcd name, int_f * name_len, size_t_f *size, void *value); +H5_FCDLL int_f nh5pregister_integer_c(hid_t_f *cls, _fcd name, int_f * name_len, size_t_f *size, void *value); +H5_FCDLL int_f nh5pregister_real_c(hid_t_f *cls, _fcd name, int_f * name_len, size_t_f *size, void *value); +H5_FCDLL int_f nh5pregister_double_c(hid_t_f *cls, _fcd name, int_f * name_len, size_t_f *size, void *value); +H5_FCDLL int_f nh5pregisterc_c(hid_t_f *cls, _fcd name, int_f * name_len, size_t_f *size, _fcd value, int_f *value_len); +H5_FCDLL int_f nh5pinsert_c(hid_t_f *plist, _fcd name, int_f *name_len, size_t_f *size, void *value); +H5_FCDLL int_f nh5pinsert_integer_c(hid_t_f *plist, _fcd name, int_f *name_len, size_t_f *size, void *value); +H5_FCDLL int_f nh5pinsert_real_c(hid_t_f *plist, _fcd name, int_f *name_len, size_t_f *size, void *value); +H5_FCDLL int_f nh5pinsert_double_c(hid_t_f *plist, _fcd name, int_f *name_len, size_t_f *size, void *value); +H5_FCDLL int_f nh5pinsertc_c(hid_t_f *plist, _fcd name, int_f *name_len, size_t_f *size, _fcd value, int_f *value_len); +H5_FCDLL int_f nh5pset_c(hid_t_f *prp_id, _fcd name, int_f *name_len, void *value); +H5_FCDLL int_f nh5pset_integer_c(hid_t_f *prp_id, _fcd name, int_f *name_len, void *value); +H5_FCDLL int_f nh5pset_real_c(hid_t_f *prp_id, _fcd name, int_f *name_len, void *value); +H5_FCDLL int_f nh5pset_double_c(hid_t_f *prp_id, _fcd name, int_f *name_len, void *value); +H5_FCDLL int_f nh5psetc_c(hid_t_f *prp_id, _fcd name, int_f *name_len, _fcd value, int_f *value_len); +H5_FCDLL int_f nh5pget_c(hid_t_f *prp_id, _fcd name, int_f *name_len, void *value); +H5_FCDLL int_f nh5pget_double_c(hid_t_f *prp_id, _fcd name, int_f *name_len, void *value); +H5_FCDLL int_f nh5pget_integer_c(hid_t_f *prp_id, _fcd name, int_f *name_len, void *value); +H5_FCDLL int_f nh5pget_real_c(hid_t_f *prp_id, _fcd name, int_f *name_len, void *value); +H5_FCDLL int_f nh5pgetc_c(hid_t_f *prp_id, _fcd name, int_f *name_len, _fcd value, int_f *value_len); +H5_FCDLL int_f nh5pexist_c(hid_t_f *prp_id, _fcd name, int_f *name_len); +H5_FCDLL int_f nh5pget_size_c(hid_t_f *prp_id, _fcd name, int_f *name_len, size_t_f *size); +H5_FCDLL int_f nh5pget_nprops_c(hid_t_f *prp_id, size_t_f *nprops); +H5_FCDLL int_f nh5pget_class_parent_c(hid_t_f *prp_id, hid_t_f *parent_id); +H5_FCDLL int_f nh5pisa_class_c(hid_t_f *plist, hid_t_f *pclass); +H5_FCDLL int_f nh5pcopy_prop_c(hid_t_f *dst_id, hid_t_f *src_id, _fcd name, int_f *name_len); +H5_FCDLL int_f nh5premove_c(hid_t_f *plid, _fcd name, int_f *name_len); +H5_FCDLL int_f nh5punregister_c(hid_t_f *cls, _fcd name, int_f *name_len); +H5_FCDLL int_f nh5pclose_class_c(hid_t_f * cls); +H5_FCDLL int_f nh5pget_class_name_c(hid_t_f *prp_id, _fcd name, int_f *name_len); +H5_FCDLL int_f nh5pset_shuffle_c ( hid_t_f *prp_id); +H5_FCDLL int_f nh5pset_fletcher32_c ( hid_t_f *prp_id ); +H5_FCDLL int_f nh5pset_edc_check_c ( hid_t_f *prp_id, int_f *flag ); +H5_FCDLL int_f nh5pget_edc_check_c ( hid_t_f *prp_id, int_f *flag ); +H5_FCDLL int_f nh5pset_family_offset_c ( hid_t_f *prp_id , hsize_t_f *offset); +H5_FCDLL int_f nh5pget_fapl_multi_c ( hid_t_f *prp_id , int_f *mem_map, hid_t_f *memb_fapl, _fcd memb_name, int_f *len, int_f *lenmax, real_f *memb_addr, int_f *flag, int_f *maxlen_out); +H5_FCDLL int_f nh5pset_fapl_multi_c ( hid_t_f *prp_id , int_f *mem_map, hid_t_f *memb_fapl, _fcd memb_name, int_f *len, int_f *lenmax, real_f *memb_addr, int_f *flag); +H5_FCDLL int_f nh5pset_fapl_multi_sc ( hid_t_f *prp_id , int_f *flag); +H5_FCDLL int_f nh5pset_szip_c ( hid_t_f *prp_id , int_f *options_mask, int_f *pixels_per_block); +H5_FCDLL int_f nh5pall_filters_avail_c ( hid_t_f *prp_id , int_f *status); +H5_FCDLL int_f nh5pfill_value_defined_c ( hid_t_f *prp_id , int_f *flag); +H5_FCDLL int_f nh5pget_attr_phase_change_c (hid_t_f *ocpl_id, int_f *max_compact, int_f *min_dense ); +H5_FCDLL int_f nh5pset_attr_creation_order_c(hid_t_f *ocpl_id, int_f *crt_order_flags ); +H5_FCDLL int_f nh5pset_shared_mesg_nindexes_c(hid_t_f *plist_id, int_f *nindexes ); +H5_FCDLL int_f nh5pset_shared_mesg_index_c(hid_t_f *fcpl_id, int_f *index_num, int_f *mesg_type_flags, int_f *min_mesg_size); +H5_FCDLL int_f nh5pget_attr_creation_order_c(hid_t_f *ocpl_id, int_f *crt_order_flags); +H5_FCDLL int_f nh5pset_libver_bounds_c(hid_t_f *fapl_id, int_f *low, int_f *high); +H5_FCDLL int_f nh5pset_link_creation_order_c(hid_t_f *gcpl_id, int_f *crt_order_flags); +H5_FCDLL int_f nh5pget_link_phase_change_c(hid_t_f *gcpl_id, int_f *max_compact, int_f *min_dense ); +H5_FCDLL int_f nh5pget_obj_track_times_c(hid_t_f *plist_id, int_f *flag); +H5_FCDLL int_f nh5pset_obj_track_times_c(hid_t_f *plist_id, int_f *flag); +H5_FCDLL int_f nh5pset_create_inter_group_c(hid_t_f *lcpl_id, int_f *crt_intermed_group); +H5_FCDLL int_f nh5pget_create_inter_group_c(hid_t_f *lcpl_id, int_f *crt_intermed_group); +H5_FCDLL int_f nh5pget_link_creation_order_c(hid_t_f *gcpl_id, int_f *crt_order_flags); +H5_FCDLL int_f nh5pset_char_encoding_c(hid_t_f *plist_id, int_f *encoding); +H5_FCDLL int_f nh5pget_char_encoding_c(hid_t_f *plist_id, int_f *encoding); +H5_FCDLL int_f nh5pset_copy_object_c(hid_t_f *ocp_plist_id, int_f *copy_options); +H5_FCDLL int_f nh5pget_copy_object_c(hid_t_f *ocp_plist_id, int_f *copy_options); +H5_FCDLL int_f nh5pget_data_transform_c(hid_t_f *plist_id, _fcd expression, int_f *expression_len, size_t_f *size); +H5_FCDLL int_f nh5pset_data_transform_c(hid_t_f *plist_id, _fcd expression, int_f *expression_len); +H5_FCDLL int_f nh5pget_local_heap_size_hint_c(hid_t_f *gcpl_id, size_t_f *size_hint); +H5_FCDLL int_f nh5pget_est_link_info_c(hid_t_f *gcpl_id, int_f *est_num_entries, int_f *est_name_len); +H5_FCDLL int_f nh5pset_local_heap_size_hint_c(hid_t_f *gcpl_id, size_t_f *size_hint); +H5_FCDLL int_f nh5pset_est_link_info_c(hid_t_f *gcpl_id, int_f *est_num_entries, int_f *est_name_len); +H5_FCDLL int_f nh5pset_link_phase_change_c(hid_t_f *gcpl_id, int_f *max_compact, int_f *min_dense ); +H5_FCDLL int_f nh5pset_fapl_direct_c(hid_t_f *fapl_id, size_t_f *alignment, size_t_f *block_size, size_t_f *cbuf_size ); +H5_FCDLL int_f nh5pget_fapl_direct_c(hid_t_f *fapl_id, size_t_f *alignment, size_t_f *block_size, size_t_f *cbuf_size ); +H5_FCDLL int_f nh5pset_attr_phase_change_c (hid_t_f *ocpl_id, int_f *max_compact, int_f *min_dense ); +H5_FCDLL int_f nh5pset_nbit_c(hid_t_f *plist_id ); +H5_FCDLL int_f nh5pset_scaleoffset_c(hid_t_f *plist_id, int_f *scale_type, int_f *scale_factor ); +H5_FCDLL int_f nh5pset_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks); +H5_FCDLL int_f nh5pget_nlinks_c(hid_t_f *lapl_id, size_t_f *nlinks); +H5_FCDLL int_f nh5pset_chunk_cache_c(hid_t_f *dapl_id, size_t_f *rdcc_nslots, size_t_f *rdcc_nbytes, real_f *rdcc_w0); +H5_FCDLL int_f nh5pget_chunk_cache_c(hid_t_f *dapl_id, size_t_f *rdcc_nslots, size_t_f *rdcc_nbytes, real_f *rdcc_w0); +H5_FCDLL int_f nh5pget_mpio_actual_io_mode_c(hid_t_f *dxpl_id, int_f *actual_io_mode); +/* + * Functions frome H5Rf.c + */ +#define nh5rcreate_object_c H5_FC_FUNC_(h5rcreate_object_c, H5RCREATE_OBJECT_C) +#define nh5rcreate_region_c H5_FC_FUNC_(h5rcreate_region_c, H5RCREATE_REGION_C) +#define nh5rcreate_ptr_c H5_FC_FUNC_(h5rcreate_ptr_c, H5RCREATE_PTR_C) +#define nh5rdereference_region_c H5_FC_FUNC_(h5rdereference_region_c, H5RDEREFERENCE_REGION_C) +#define nh5rdereference_object_c H5_FC_FUNC_(h5rdereference_object_c, H5RDEREFERENCE_OBJECT_C) +#define nh5rdereference_ptr_c H5_FC_FUNC_(h5rdereference_ptr_c, H5RDEREFERENCE_PTR_C) +#define nh5rget_region_region_c H5_FC_FUNC_(h5rget_region_region_c, H5RGET_REGION_REGION_C) +#define nh5rget_region_ptr_c H5_FC_FUNC_(h5rget_region_ptr_c, H5RGET_REGION_PTR_C) +#define nh5rget_object_type_obj_c H5_FC_FUNC_(h5rget_object_type_obj_c, H5RGET_OBJECT_TYPE_OBJ_C) +#define nh5rget_name_object_c H5_FC_FUNC_(h5rget_name_object_c, H5RGET_NAME_OBJECT_C) +#define nh5rget_name_region_c H5_FC_FUNC_(h5rget_name_region_c, H5RGET_NAME_REGION_C) +#define nh5rget_name_ptr_c H5_FC_FUNC_(h5rget_name_ptr_c, H5RGET_NAME_PTR_C) +#define nh5rget_obj_type_c H5_FC_FUNC_(h5rget_obj_type_c, H5RGET_OBJ_TYPE_C) + + +H5_FCDLL int_f nh5rcreate_object_c (haddr_t_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen); +H5_FCDLL int_f nh5rcreate_region_c (int_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *space_id); +H5_FCDLL int_f nh5rcreate_ptr_c (void *ref, hid_t_f *loc_id, _fcd name, int_f *namelen, int_f *ref_type, hid_t_f *space_id); +H5_FCDLL int_f nh5rdereference_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *obj_id); +H5_FCDLL int_f nh5rdereference_object_c (hid_t_f *dset_id, haddr_t_f *ref, hid_t_f *obj_id); +H5_FCDLL int_f nh5rdereference_ptr_c (hid_t_f *obj_id, int_f *ref_type, void *ref, hid_t_f *ref_obj_id); +H5_FCDLL int_f nh5rget_region_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *space_id); +H5_FCDLL int_f nh5rget_region_ptr_c(hid_t_f *dset_id, void *ref, hid_t_f *space_id); +H5_FCDLL int_f nh5rget_object_type_obj_c (hid_t_f *dset_id, haddr_t_f *ref, int_f *obj_type); +H5_FCDLL int_f nh5rget_name_object_c (hid_t_f *loc_id, haddr_t_f *ref, _fcd name, size_t_f *name_len, size_t_f *size_default); +H5_FCDLL int_f nh5rget_name_region_c (hid_t_f *loc_id, int_f *ref, _fcd name, size_t_f *name_len, size_t_f *size_default); +H5_FCDLL int_f nh5rget_name_ptr_c (hid_t_f *loc_id, int_f *ref_type, void *ref, _fcd name, size_t_f *name_len, size_t_f *size_default); +H5_FCDLL int_f nh5rget_obj_type_c (hid_t_f *loc_id, int_f *ref_type, void *ref, int_f *obj_type); +/* + * Functions from H5If.c + */ +#define nh5iget_type_c H5_FC_FUNC_(h5iget_type_c, H5IGET_TYPE_C) +#define nh5iget_name_c H5_FC_FUNC_(h5iget_name_c, H5IGET_NAME_C) +#define nh5iinc_ref_c H5_FC_FUNC_(h5iinc_ref_c, H5IINC_REF_C) +#define nh5idec_ref_c H5_FC_FUNC_(h5idec_ref_c, H5IDEC_REF_C) +#define nh5iget_ref_c H5_FC_FUNC_(h5iget_ref_c, H5IGET_REF_C) +#define nh5iget_file_id_c H5_FC_FUNC_(h5iget_file_id_c, H5IGET_FILE_ID_C) +#define nh5iis_valid_c H5_FC_FUNC_(h5iis_valid_c, H5IIS_VALID_C) + +H5_FCDLL int_f nh5iget_type_c(hid_t_f *obj_id, int_f *type); +H5_FCDLL int_f nh5iget_name_c(hid_t_f *obj_id, _fcd buf, size_t_f *buf_size, size_t_f *name_size); +H5_FCDLL int_f nh5iinc_ref_c(hid_t_f *obj_id, int_f *ref_count); +H5_FCDLL int_f nh5idec_ref_c(hid_t_f *obj_id, int_f *ref_count); +H5_FCDLL int_f nh5iget_ref_c(hid_t_f *obj_id, int_f *ref_count); +H5_FCDLL int_f nh5iget_file_id_c(hid_t_f *obj_id, hid_t_f *file_id); +H5_FCDLL int_f nh5iis_valid_c(hid_t_f *obj_id, int_f *c_valid); + +/* + * Functions from H5Ef.c + */ +#define nh5eclear_c H5_FC_FUNC_(h5eclear_c, H5ECLEAR_C) +#define nh5eprint_c1 H5_FC_FUNC_(h5eprint_c1, H5EPRINT_C1) +#define nh5eprint_c2 H5_FC_FUNC_(h5eprint_c2, H5EPRINT_C2) +#define nh5eget_major_c H5_FC_FUNC_(h5eget_major_c, H5EGET_MAJOR_C) +#define nh5eget_minor_c H5_FC_FUNC_(h5eget_minor_c, H5EGET_MINOR_C) +#define nh5eset_auto_c H5_FC_FUNC_(h5eset_auto_c, H5ESET_AUTO_C) +#define nh5eset_auto2_c H5_FC_FUNC_(h5eset_auto2_c, H5ESET_AUTO2_C) +#define nprocess_buffer H5_FC_FUNC_(process_buffer, PROCESS_BUFFER) + + +H5_FCDLL int_f nh5eclear_c(hid_t_f *estack_id); +H5_FCDLL int_f nh5eprint_c1(_fcd name, int_f* namelen); +H5_FCDLL int_f nh5eprint_c2(void); +H5_FCDLL int_f nh5eget_major_c(int_f* error_no, _fcd name, size_t_f* namelen); +H5_FCDLL int_f nh5eget_minor_c(int_f* error_no, _fcd name, size_t_f* namelen); +H5_FCDLL int_f nh5eset_auto_c(int_f* printflag); +H5_FCDLL int_f nh5eset_auto2_c(int_f* printflag, hid_t_f *estack_id, H5E_auto2_t func, void *client_data); +H5_FCDLL int_f nprocess_buffer(hid_t_f *estack_id,void **buffer); + +/* + * Functions from H5f.c + */ +#define nh5open_c H5_FC_FUNC_(h5open_c, H5OPEN_C) +#define nh5close_c H5_FC_FUNC_(h5close_c, H5CLOSE_C) +#define nh5init_types_c H5_FC_FUNC_(h5init_types_c, H5INIT_TYPES_C) +#define nh5close_types_c H5_FC_FUNC_(h5close_types_c, H5CLOSE_TYPES_C) +#define nh5init_flags_c H5_FC_FUNC_(h5init_flags_c, H5INIT_FLAGS_C) +#define nh5init1_flags_c H5_FC_FUNC_(h5init1_flags_c, H5INIT1_FLAGS_C) +#define nh5get_libversion_c H5_FC_FUNC_(h5get_libversion_c, H5GET_LIBVERSION_C) +#define nh5check_version_c H5_FC_FUNC_(h5check_version_c, H5CHECK_VERSION_C) +#define nh5garbage_collect_c H5_FC_FUNC_(h5garbage_collect_c, H5GARBAGE_COLLECT_C) +#define nh5dont_atexit_c H5_FC_FUNC_(h5dont_atexit_c, H5DONT_ATEXIT_C) + + +H5_FCDLL int_f nh5open_c(void); +H5_FCDLL int_f nh5close_c(void); +H5_FCDLL int_f nh5init_types_c(hid_t_f *types, hid_t_f *floatingtypes, hid_t_f *integertypes); +H5_FCDLL int_f nh5close_types_c(hid_t_f *types, int_f *lentypes, hid_t_f *floatingtypes, int_f *floatinglen, hid_t_f *integertypes, int_f *integerlen); +H5_FCDLL int_f nh5init_flags_c(int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags, + int_f *h5fd_flags, hid_t_f *h5fd_hid_flags, + int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags, + hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, int_f *h5s_flags, + hsize_t_f *h5s_hsize_flags, int_f *h5t_flags, int_f *h5z_flags, int_f *h5_generic_flags); +H5_FCDLL int_f nh5init1_flags_c(int_f *h5lib_flags); +H5_FCDLL int_f nh5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum); +H5_FCDLL int_f nh5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum); +H5_FCDLL int_f nh5garbage_collect_c(void); +H5_FCDLL int_f nh5dont_atexit_c(void); + +/* + * Functions from H5Zf.c + */ +#define nh5zunregister_c H5_FC_FUNC_(h5zunregister_c, H5ZUNREGISTER_C) +#define nh5zfilter_avail_c H5_FC_FUNC_(h5zfilter_avail_c, H5ZFILTER_AVAIL_C) +#define nh5zget_filter_info_c H5_FC_FUNC_(h5zget_filter_info_c, H5ZGET_FILTER_INFO_C) + + +H5_FCDLL int_f nh5zunregister_c (int_f *filter); +H5_FCDLL int_f nh5zfilter_avail_c (int_f *filter, int_f *flag); +H5_FCDLL int_f nh5zget_filter_info_c (int_f *filter, int_f *flag); + + +/* + * Functions from H5Lf.c + */ +#define nh5lcopy_c H5_FC_FUNC_(h5lcopy_c, H5LCOPY_C) +#define nh5lcreate_external_c H5_FC_FUNC_(h5lcreate_external_c, H5LCREATE_EXTERNAL_C) +#define nh5lcreate_hard_c H5_FC_FUNC_(h5lcreate_hard_c, H5LCREATE_HARD_C) +#define nh5lcreate_soft_c H5_FC_FUNC_(h5lcreate_soft_c, H5LCREATE_SOFT_C) +#define nh5ldelete_c H5_FC_FUNC_(h5ldelete_c, H5LDELETE_C) +#define nh5ldelete_by_idx_c H5_FC_FUNC_(h5ldelete_by_idx_c, H5LDELETE_BY_IDX_C) +#define nh5lexists_c H5_FC_FUNC_(h5lexists_c, H5LEXISTS_C) +#define nh5lget_info_c H5_FC_FUNC_(h5lget_info_c, H5LGET_INFO_C) +#define nh5lget_info_by_idx_c H5_FC_FUNC_(h5lget_info_by_idx_c, H5LGET_INFO_BY_IDX_C) +#define nh5lis_registered_c H5_FC_FUNC_(h5lis_registered_c, H5LIS_REGISTERED_C) +#define nh5lmove_c H5_FC_FUNC_(h5lmove_c, H5LMOVE_C) +#define nh5lget_name_by_idx_c H5_FC_FUNC_(h5lget_name_by_idx_c, H5LGET_NAME_BY_IDX_C) +#define nh5lget_val_c H5_FC_FUNC_(h5lget_val_c, H5LGET_VAL_C) +#define nh5literate_c H5_FC_FUNC_(h5literate_c, H5LITERATE_C) +#define nh5literate_by_name_c H5_FC_FUNC_(h5literate_by_name_c, H5LITERATE_BY_NAME_C) + +H5_FCDLL int_f nh5lcopy_c(hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_namelen, hid_t_f *dest_loc_id, + _fcd dest_name, size_t_f *dest_namelen, + hid_t_f *lcpl_id, hid_t_f *lapl_id); +H5_FCDLL int_f nh5lcreate_external_c(_fcd file_name, size_t_f *file_namelen, _fcd obj_name, size_t_f *obj_namelen, + hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen, + hid_t_f *lcpl_id, hid_t_f *lapl_id); +H5_FCDLL int_f nh5lcreate_hard_c(hid_t_f *obj_loc_id, _fcd obj_name, size_t_f *obj_namelen, + hid_t_f *link_loc_id, + _fcd link_name, size_t_f *link_namelen, + hid_t_f *lcpl_id, hid_t_f *lapl_id ); +H5_FCDLL int_f nh5lcreate_soft_c(_fcd target_path, size_t_f *target_path_len, + hid_t_f *link_loc_id, + _fcd link_name, size_t_f *link_name_len, + hid_t_f *lcpl_id, hid_t_f *lapl_id ); +H5_FCDLL int_f nh5ldelete_c( hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id ); +H5_FCDLL int_f nh5ldelete_by_idx_c (hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, + int_f *index_field, int_f *order, hsize_t_f *n, hid_t_f *lapl_id); +H5_FCDLL int_f nh5lexists_c (hid_t_f *loc_id, _fcd name, size_t_f *namelen, hid_t_f *lapl_id, int_f *link_exists); +H5_FCDLL int_f nh5lget_info_c (hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen, + int_f *cset, int_f *corder, int_f *corder_valid, int_f *link_type, + haddr_t_f *address, size_t_f *val_size, + hid_t_f *lapl_id); +H5_FCDLL int_f nh5lget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, + int_f *index_field, int_f *order, hsize_t_f *n, + int_f *link_type, int_f *corder_valid, int_f *corder, int_f *cset, haddr_t_f *address, size_t_f *val_size, hid_t_f *lapl_id); +H5_FCDLL int_f nh5lis_registered_c(int_f *link_cls_id); +H5_FCDLL int_f nh5lmove_c(hid_t_f *src_loc_id, _fcd src_name, size_t_f *src_namelen, hid_t_f *dest_loc_id, + _fcd dest_name, size_t_f *dest_namelen, hid_t_f *lcpl_id, hid_t_f *lapl_id); +H5_FCDLL int_f nh5lget_name_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen, + int_f *index_field, int_f *order, hsize_t_f *n, + size_t_f *size, _fcd name, hid_t_f *lapl_id); +H5_FCDLL int_f nh5lget_val_c(hid_t_f *link_loc_id, _fcd link_name, size_t_f *link_namelen, size_t_f *size, + void *linkval_buff, hid_t_f *lapl_id) ; + +H5_FCDLL int_f nh5literate_c(hid_t_f *group_id, int_f *index_type, int_f *order, hsize_t_f *idx, H5L_iterate_t op, void *op_data ); +H5_FCDLL int_f nh5literate_by_name_c(hid_t_f *loc_id, _fcd name, size_t_f *namelen, int_f *index_type, int_f *order, hsize_t_f *idx, H5L_iterate_t op, void *op_data, hid_t_f *lapl_id); + + +#endif /* _H5f90proto_H */ diff --git a/Resources/windows-libs/HDF5/include/H5fortran_types.f90 b/Resources/windows-libs/HDF5/include/H5fortran_types.f90 new file mode 100644 index 0000000000000000000000000000000000000000..ac24534ae6f8f2a53a10263550be2355d9ba8231 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5fortran_types.f90 @@ -0,0 +1,43 @@ +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! +! This file is automatically generated and contains HDF5 Fortran90 type definitions. +! + MODULE H5FORTRAN_TYPES + ! + ! HDF5 integers + ! + INTEGER, PARAMETER :: HADDR_T = 8 + INTEGER, PARAMETER :: HSIZE_T = 8 + INTEGER, PARAMETER :: HSSIZE_T = 8 + INTEGER, PARAMETER :: OFF_T = 4 + INTEGER, PARAMETER :: SIZE_T = 8 + INTEGER, PARAMETER :: Fortran_INTEGER = 4 + INTEGER, PARAMETER :: Fortran_INTEGER_1 = 1 + INTEGER, PARAMETER :: Fortran_INTEGER_2 = 2 + INTEGER, PARAMETER :: Fortran_INTEGER_4 = 4 + INTEGER, PARAMETER :: Fortran_INTEGER_8 = 8 + INTEGER, PARAMETER :: Fortran_REAL_4 = 4 + INTEGER, PARAMETER :: Fortran_REAL_8 = 8 + INTEGER, PARAMETER :: Fortran_REAL_16 = 8 + INTEGER, PARAMETER :: HID_T = 4 + INTEGER, PARAMETER :: Fortran_REAL = 4 + INTEGER, PARAMETER :: Fortran_DOUBLE = 8 + INTEGER, PARAMETER :: H5R_DSET_REG_REF_BUF_SIZE_F = 12 + + INTEGER(SIZE_T), PARAMETER :: OBJECT_NAMELEN_DEFAULT_F = -1 + + END MODULE H5FORTRAN_TYPES diff --git a/Resources/windows-libs/HDF5/include/H5overflow.h b/Resources/windows-libs/HDF5/include/H5overflow.h new file mode 100644 index 0000000000000000000000000000000000000000..f4064f439639654a7c97934da129e07d09eaf8cb --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5overflow.h @@ -0,0 +1,1939 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* Generated automatically by bin/make_overflow -- do not edit */ +/* Add new types to H5overflow.txt file */ + + +#ifndef _H5overflow_H +#define _H5overflow_H + + +/* Each type in this file is tested for assignment to the other types, + * and range checks are defined for bad assignments at run-time. + */ + +/* Assignment checks for unsigned */ + +/* src: unsigned, dst: int */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_INT + #define ASSIGN_unsigned_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_INT + #define ASSIGN_unsigned_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_INT */ + #define ASSIGN_unsigned_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: int */ + +/* src: unsigned, dst: uint8_t */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_UINT8_T + #define ASSIGN_unsigned_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_UINT8_T + #define ASSIGN_unsigned_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_UINT8_T */ + #define ASSIGN_unsigned_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: uint8_t */ + +/* src: unsigned, dst: uint16_t */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_UINT16_T + #define ASSIGN_unsigned_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_UINT16_T + #define ASSIGN_unsigned_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_UINT16_T */ + #define ASSIGN_unsigned_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: uint16_t */ + +/* src: unsigned, dst: uint32_t */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_UINT32_T + #define ASSIGN_unsigned_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_UINT32_T + #define ASSIGN_unsigned_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_UINT32_T */ + #define ASSIGN_unsigned_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: uint32_t */ + +/* src: unsigned, dst: uint64_t */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_UINT64_T + #define ASSIGN_unsigned_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_UINT64_T + #define ASSIGN_unsigned_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_UINT64_T */ + #define ASSIGN_unsigned_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: uint64_t */ + +/* src: unsigned, dst: ptrdiff_t */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_unsigned_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_unsigned_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_unsigned_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: ptrdiff_t */ + +/* src: unsigned, dst: size_t */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_SIZE_T + #define ASSIGN_unsigned_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_SIZE_T + #define ASSIGN_unsigned_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_SIZE_T */ + #define ASSIGN_unsigned_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: size_t */ + +/* src: unsigned, dst: ssize_t */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_SSIZE_T + #define ASSIGN_unsigned_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_SSIZE_T + #define ASSIGN_unsigned_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_unsigned_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: ssize_t */ + +/* src: unsigned, dst: haddr_t */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_HADDR_T + #define ASSIGN_unsigned_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_HADDR_T + #define ASSIGN_unsigned_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_HADDR_T */ + #define ASSIGN_unsigned_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: haddr_t */ + +/* src: unsigned, dst: hsize_t */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_HSIZE_T + #define ASSIGN_unsigned_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_HSIZE_T + #define ASSIGN_unsigned_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_unsigned_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: hsize_t */ + +/* src: unsigned, dst: hssize_t */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_HSSIZE_T + #define ASSIGN_unsigned_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_HSSIZE_T + #define ASSIGN_unsigned_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_unsigned_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: hssize_t */ + +/* src: unsigned, dst: h5_stat_size_t */ +#if H5_SIZEOF_UNSIGNED < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_unsigned_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UNSIGNED > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_unsigned_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UNSIGNED == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_unsigned_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: unsigned dst: h5_stat_size_t */ + + +/* Assignment checks for int */ + +/* src: int, dst: unsigned */ +#if H5_SIZEOF_INT < H5_SIZEOF_UNSIGNED + #define ASSIGN_int_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_UNSIGNED + #define ASSIGN_int_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_int_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: unsigned */ + +/* src: int, dst: uint8_t */ +#if H5_SIZEOF_INT < H5_SIZEOF_UINT8_T + #define ASSIGN_int_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_UINT8_T + #define ASSIGN_int_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_UINT8_T */ + #define ASSIGN_int_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: uint8_t */ + +/* src: int, dst: uint16_t */ +#if H5_SIZEOF_INT < H5_SIZEOF_UINT16_T + #define ASSIGN_int_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_UINT16_T + #define ASSIGN_int_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_UINT16_T */ + #define ASSIGN_int_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: uint16_t */ + +/* src: int, dst: uint32_t */ +#if H5_SIZEOF_INT < H5_SIZEOF_UINT32_T + #define ASSIGN_int_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_UINT32_T + #define ASSIGN_int_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_UINT32_T */ + #define ASSIGN_int_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: uint32_t */ + +/* src: int, dst: uint64_t */ +#if H5_SIZEOF_INT < H5_SIZEOF_UINT64_T + #define ASSIGN_int_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_UINT64_T + #define ASSIGN_int_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_UINT64_T */ + #define ASSIGN_int_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: uint64_t */ + +/* src: int, dst: ptrdiff_t */ +#if H5_SIZEOF_INT < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_int_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_int_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_int_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: ptrdiff_t */ + +/* src: int, dst: size_t */ +#if H5_SIZEOF_INT < H5_SIZEOF_SIZE_T + #define ASSIGN_int_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_SIZE_T + #define ASSIGN_int_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_SIZE_T */ + #define ASSIGN_int_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: size_t */ + +/* src: int, dst: ssize_t */ +#if H5_SIZEOF_INT < H5_SIZEOF_SSIZE_T + #define ASSIGN_int_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_SSIZE_T + #define ASSIGN_int_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_int_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: ssize_t */ + +/* src: int, dst: haddr_t */ +#if H5_SIZEOF_INT < H5_SIZEOF_HADDR_T + #define ASSIGN_int_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_HADDR_T + #define ASSIGN_int_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_HADDR_T */ + #define ASSIGN_int_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: haddr_t */ + +/* src: int, dst: hsize_t */ +#if H5_SIZEOF_INT < H5_SIZEOF_HSIZE_T + #define ASSIGN_int_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_HSIZE_T + #define ASSIGN_int_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_int_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: hsize_t */ + +/* src: int, dst: hssize_t */ +#if H5_SIZEOF_INT < H5_SIZEOF_HSSIZE_T + #define ASSIGN_int_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_HSSIZE_T + #define ASSIGN_int_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_int_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: hssize_t */ + +/* src: int, dst: h5_stat_size_t */ +#if H5_SIZEOF_INT < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_int_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_INT > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_int_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_INT == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_int_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: int dst: h5_stat_size_t */ + + +/* Assignment checks for uint8_t */ + +/* src: uint8_t, dst: unsigned */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_UNSIGNED + #define ASSIGN_uint8_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_UNSIGNED + #define ASSIGN_uint8_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_uint8_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: unsigned */ + +/* src: uint8_t, dst: int */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_INT + #define ASSIGN_uint8_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_INT + #define ASSIGN_uint8_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_INT */ + #define ASSIGN_uint8_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: int */ + +/* src: uint8_t, dst: uint16_t */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_UINT16_T + #define ASSIGN_uint8_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_UINT16_T + #define ASSIGN_uint8_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_UINT16_T */ + #define ASSIGN_uint8_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: uint16_t */ + +/* src: uint8_t, dst: uint32_t */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_UINT32_T + #define ASSIGN_uint8_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_UINT32_T + #define ASSIGN_uint8_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_UINT32_T */ + #define ASSIGN_uint8_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: uint32_t */ + +/* src: uint8_t, dst: uint64_t */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_UINT64_T + #define ASSIGN_uint8_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_UINT64_T + #define ASSIGN_uint8_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_UINT64_T */ + #define ASSIGN_uint8_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: uint64_t */ + +/* src: uint8_t, dst: ptrdiff_t */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_uint8_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_uint8_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_uint8_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: ptrdiff_t */ + +/* src: uint8_t, dst: size_t */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_SIZE_T + #define ASSIGN_uint8_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_SIZE_T + #define ASSIGN_uint8_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_SIZE_T */ + #define ASSIGN_uint8_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: size_t */ + +/* src: uint8_t, dst: ssize_t */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_SSIZE_T + #define ASSIGN_uint8_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_SSIZE_T + #define ASSIGN_uint8_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_uint8_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: ssize_t */ + +/* src: uint8_t, dst: haddr_t */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_HADDR_T + #define ASSIGN_uint8_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_HADDR_T + #define ASSIGN_uint8_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_HADDR_T */ + #define ASSIGN_uint8_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: haddr_t */ + +/* src: uint8_t, dst: hsize_t */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_HSIZE_T + #define ASSIGN_uint8_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_HSIZE_T + #define ASSIGN_uint8_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_uint8_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: hsize_t */ + +/* src: uint8_t, dst: hssize_t */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_HSSIZE_T + #define ASSIGN_uint8_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_HSSIZE_T + #define ASSIGN_uint8_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_uint8_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: hssize_t */ + +/* src: uint8_t, dst: h5_stat_size_t */ +#if H5_SIZEOF_UINT8_T < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_uint8_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT8_T > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_uint8_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT8_T == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_uint8_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint8_t dst: h5_stat_size_t */ + + +/* Assignment checks for uint16_t */ + +/* src: uint16_t, dst: unsigned */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_UNSIGNED + #define ASSIGN_uint16_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_UNSIGNED + #define ASSIGN_uint16_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_uint16_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: unsigned */ + +/* src: uint16_t, dst: int */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_INT + #define ASSIGN_uint16_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_INT + #define ASSIGN_uint16_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_INT */ + #define ASSIGN_uint16_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: int */ + +/* src: uint16_t, dst: uint8_t */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_UINT8_T + #define ASSIGN_uint16_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_UINT8_T + #define ASSIGN_uint16_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_UINT8_T */ + #define ASSIGN_uint16_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: uint8_t */ + +/* src: uint16_t, dst: uint32_t */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_UINT32_T + #define ASSIGN_uint16_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_UINT32_T + #define ASSIGN_uint16_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_UINT32_T */ + #define ASSIGN_uint16_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: uint32_t */ + +/* src: uint16_t, dst: uint64_t */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_UINT64_T + #define ASSIGN_uint16_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_UINT64_T + #define ASSIGN_uint16_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_UINT64_T */ + #define ASSIGN_uint16_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: uint64_t */ + +/* src: uint16_t, dst: ptrdiff_t */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_uint16_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_uint16_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_uint16_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: ptrdiff_t */ + +/* src: uint16_t, dst: size_t */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_SIZE_T + #define ASSIGN_uint16_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_SIZE_T + #define ASSIGN_uint16_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_SIZE_T */ + #define ASSIGN_uint16_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: size_t */ + +/* src: uint16_t, dst: ssize_t */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_SSIZE_T + #define ASSIGN_uint16_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_SSIZE_T + #define ASSIGN_uint16_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_uint16_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: ssize_t */ + +/* src: uint16_t, dst: haddr_t */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_HADDR_T + #define ASSIGN_uint16_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_HADDR_T + #define ASSIGN_uint16_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_HADDR_T */ + #define ASSIGN_uint16_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: haddr_t */ + +/* src: uint16_t, dst: hsize_t */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_HSIZE_T + #define ASSIGN_uint16_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_HSIZE_T + #define ASSIGN_uint16_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_uint16_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: hsize_t */ + +/* src: uint16_t, dst: hssize_t */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_HSSIZE_T + #define ASSIGN_uint16_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_HSSIZE_T + #define ASSIGN_uint16_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_uint16_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: hssize_t */ + +/* src: uint16_t, dst: h5_stat_size_t */ +#if H5_SIZEOF_UINT16_T < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_uint16_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT16_T > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_uint16_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT16_T == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_uint16_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint16_t dst: h5_stat_size_t */ + + +/* Assignment checks for uint32_t */ + +/* src: uint32_t, dst: unsigned */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_UNSIGNED + #define ASSIGN_uint32_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_UNSIGNED + #define ASSIGN_uint32_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_uint32_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: unsigned */ + +/* src: uint32_t, dst: int */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_INT + #define ASSIGN_uint32_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_INT + #define ASSIGN_uint32_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_INT */ + #define ASSIGN_uint32_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: int */ + +/* src: uint32_t, dst: uint8_t */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_UINT8_T + #define ASSIGN_uint32_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_UINT8_T + #define ASSIGN_uint32_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_UINT8_T */ + #define ASSIGN_uint32_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: uint8_t */ + +/* src: uint32_t, dst: uint16_t */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_UINT16_T + #define ASSIGN_uint32_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_UINT16_T + #define ASSIGN_uint32_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_UINT16_T */ + #define ASSIGN_uint32_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: uint16_t */ + +/* src: uint32_t, dst: uint64_t */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_UINT64_T + #define ASSIGN_uint32_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_UINT64_T + #define ASSIGN_uint32_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_UINT64_T */ + #define ASSIGN_uint32_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: uint64_t */ + +/* src: uint32_t, dst: ptrdiff_t */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_uint32_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_uint32_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_uint32_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: ptrdiff_t */ + +/* src: uint32_t, dst: size_t */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_SIZE_T + #define ASSIGN_uint32_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_SIZE_T + #define ASSIGN_uint32_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_SIZE_T */ + #define ASSIGN_uint32_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: size_t */ + +/* src: uint32_t, dst: ssize_t */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_SSIZE_T + #define ASSIGN_uint32_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_SSIZE_T + #define ASSIGN_uint32_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_uint32_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: ssize_t */ + +/* src: uint32_t, dst: haddr_t */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_HADDR_T + #define ASSIGN_uint32_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_HADDR_T + #define ASSIGN_uint32_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_HADDR_T */ + #define ASSIGN_uint32_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: haddr_t */ + +/* src: uint32_t, dst: hsize_t */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_HSIZE_T + #define ASSIGN_uint32_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_HSIZE_T + #define ASSIGN_uint32_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_uint32_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: hsize_t */ + +/* src: uint32_t, dst: hssize_t */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_HSSIZE_T + #define ASSIGN_uint32_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_HSSIZE_T + #define ASSIGN_uint32_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_uint32_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: hssize_t */ + +/* src: uint32_t, dst: h5_stat_size_t */ +#if H5_SIZEOF_UINT32_T < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_uint32_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT32_T > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_uint32_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT32_T == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_uint32_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint32_t dst: h5_stat_size_t */ + + +/* Assignment checks for uint64_t */ + +/* src: uint64_t, dst: unsigned */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_UNSIGNED + #define ASSIGN_uint64_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_UNSIGNED + #define ASSIGN_uint64_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_uint64_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: unsigned */ + +/* src: uint64_t, dst: int */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_INT + #define ASSIGN_uint64_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_INT + #define ASSIGN_uint64_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_INT */ + #define ASSIGN_uint64_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: int */ + +/* src: uint64_t, dst: uint8_t */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_UINT8_T + #define ASSIGN_uint64_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_UINT8_T + #define ASSIGN_uint64_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_UINT8_T */ + #define ASSIGN_uint64_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: uint8_t */ + +/* src: uint64_t, dst: uint16_t */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_UINT16_T + #define ASSIGN_uint64_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_UINT16_T + #define ASSIGN_uint64_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_UINT16_T */ + #define ASSIGN_uint64_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: uint16_t */ + +/* src: uint64_t, dst: uint32_t */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_UINT32_T + #define ASSIGN_uint64_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_UINT32_T + #define ASSIGN_uint64_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_UINT32_T */ + #define ASSIGN_uint64_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: uint32_t */ + +/* src: uint64_t, dst: ptrdiff_t */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_uint64_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_uint64_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_uint64_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: ptrdiff_t */ + +/* src: uint64_t, dst: size_t */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_SIZE_T + #define ASSIGN_uint64_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_SIZE_T + #define ASSIGN_uint64_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_SIZE_T */ + #define ASSIGN_uint64_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: size_t */ + +/* src: uint64_t, dst: ssize_t */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_SSIZE_T + #define ASSIGN_uint64_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_SSIZE_T + #define ASSIGN_uint64_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_uint64_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: ssize_t */ + +/* src: uint64_t, dst: haddr_t */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_HADDR_T + #define ASSIGN_uint64_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_HADDR_T + #define ASSIGN_uint64_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_HADDR_T */ + #define ASSIGN_uint64_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: haddr_t */ + +/* src: uint64_t, dst: hsize_t */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_HSIZE_T + #define ASSIGN_uint64_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_HSIZE_T + #define ASSIGN_uint64_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_uint64_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: hsize_t */ + +/* src: uint64_t, dst: hssize_t */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_HSSIZE_T + #define ASSIGN_uint64_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_HSSIZE_T + #define ASSIGN_uint64_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_uint64_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: hssize_t */ + +/* src: uint64_t, dst: h5_stat_size_t */ +#if H5_SIZEOF_UINT64_T < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_uint64_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_UINT64_T > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_uint64_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_UINT64_T == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_uint64_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: uint64_t dst: h5_stat_size_t */ + + +/* Assignment checks for ptrdiff_t */ + +/* src: ptrdiff_t, dst: unsigned */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_UNSIGNED + #define ASSIGN_ptrdiff_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_UNSIGNED + #define ASSIGN_ptrdiff_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_ptrdiff_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: unsigned */ + +/* src: ptrdiff_t, dst: int */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_INT + #define ASSIGN_ptrdiff_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_INT + #define ASSIGN_ptrdiff_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_INT */ + #define ASSIGN_ptrdiff_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: int */ + +/* src: ptrdiff_t, dst: uint8_t */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_UINT8_T + #define ASSIGN_ptrdiff_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_UINT8_T + #define ASSIGN_ptrdiff_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_UINT8_T */ + #define ASSIGN_ptrdiff_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: uint8_t */ + +/* src: ptrdiff_t, dst: uint16_t */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_UINT16_T + #define ASSIGN_ptrdiff_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_UINT16_T + #define ASSIGN_ptrdiff_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_UINT16_T */ + #define ASSIGN_ptrdiff_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: uint16_t */ + +/* src: ptrdiff_t, dst: uint32_t */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_UINT32_T + #define ASSIGN_ptrdiff_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_UINT32_T + #define ASSIGN_ptrdiff_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_UINT32_T */ + #define ASSIGN_ptrdiff_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: uint32_t */ + +/* src: ptrdiff_t, dst: uint64_t */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_UINT64_T + #define ASSIGN_ptrdiff_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_UINT64_T + #define ASSIGN_ptrdiff_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_UINT64_T */ + #define ASSIGN_ptrdiff_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: uint64_t */ + +/* src: ptrdiff_t, dst: size_t */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_SIZE_T + #define ASSIGN_ptrdiff_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_SIZE_T + #define ASSIGN_ptrdiff_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_SIZE_T */ + #define ASSIGN_ptrdiff_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: size_t */ + +/* src: ptrdiff_t, dst: ssize_t */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_SSIZE_T + #define ASSIGN_ptrdiff_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_SSIZE_T + #define ASSIGN_ptrdiff_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_ptrdiff_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: ssize_t */ + +/* src: ptrdiff_t, dst: haddr_t */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_HADDR_T + #define ASSIGN_ptrdiff_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_HADDR_T + #define ASSIGN_ptrdiff_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_HADDR_T */ + #define ASSIGN_ptrdiff_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: haddr_t */ + +/* src: ptrdiff_t, dst: hsize_t */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_HSIZE_T + #define ASSIGN_ptrdiff_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_HSIZE_T + #define ASSIGN_ptrdiff_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_ptrdiff_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: hsize_t */ + +/* src: ptrdiff_t, dst: hssize_t */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_HSSIZE_T + #define ASSIGN_ptrdiff_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_HSSIZE_T + #define ASSIGN_ptrdiff_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_ptrdiff_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: hssize_t */ + +/* src: ptrdiff_t, dst: h5_stat_size_t */ +#if H5_SIZEOF_PTRDIFF_T < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_ptrdiff_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_PTRDIFF_T > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_ptrdiff_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_PTRDIFF_T == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_ptrdiff_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ptrdiff_t dst: h5_stat_size_t */ + + +/* Assignment checks for size_t */ + +/* src: size_t, dst: unsigned */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_UNSIGNED + #define ASSIGN_size_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_UNSIGNED + #define ASSIGN_size_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_size_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: unsigned */ + +/* src: size_t, dst: int */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_INT + #define ASSIGN_size_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_INT + #define ASSIGN_size_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_INT */ + #define ASSIGN_size_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: int */ + +/* src: size_t, dst: uint8_t */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_UINT8_T + #define ASSIGN_size_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_UINT8_T + #define ASSIGN_size_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_UINT8_T */ + #define ASSIGN_size_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: uint8_t */ + +/* src: size_t, dst: uint16_t */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_UINT16_T + #define ASSIGN_size_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_UINT16_T + #define ASSIGN_size_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_UINT16_T */ + #define ASSIGN_size_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: uint16_t */ + +/* src: size_t, dst: uint32_t */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_UINT32_T + #define ASSIGN_size_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_UINT32_T + #define ASSIGN_size_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_UINT32_T */ + #define ASSIGN_size_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: uint32_t */ + +/* src: size_t, dst: uint64_t */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_UINT64_T + #define ASSIGN_size_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_UINT64_T + #define ASSIGN_size_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_UINT64_T */ + #define ASSIGN_size_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: uint64_t */ + +/* src: size_t, dst: ptrdiff_t */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_size_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_size_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_size_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: ptrdiff_t */ + +/* src: size_t, dst: ssize_t */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_SSIZE_T + #define ASSIGN_size_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_SSIZE_T + #define ASSIGN_size_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_size_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: ssize_t */ + +/* src: size_t, dst: haddr_t */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_HADDR_T + #define ASSIGN_size_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_HADDR_T + #define ASSIGN_size_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_HADDR_T */ + #define ASSIGN_size_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: haddr_t */ + +/* src: size_t, dst: hsize_t */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_HSIZE_T + #define ASSIGN_size_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_HSIZE_T + #define ASSIGN_size_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_size_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: hsize_t */ + +/* src: size_t, dst: hssize_t */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_HSSIZE_T + #define ASSIGN_size_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_HSSIZE_T + #define ASSIGN_size_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_size_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: hssize_t */ + +/* src: size_t, dst: h5_stat_size_t */ +#if H5_SIZEOF_SIZE_T < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_size_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SIZE_T > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_size_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SIZE_T == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_size_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: size_t dst: h5_stat_size_t */ + + +/* Assignment checks for ssize_t */ + +/* src: ssize_t, dst: unsigned */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_UNSIGNED + #define ASSIGN_ssize_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_UNSIGNED + #define ASSIGN_ssize_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_ssize_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: unsigned */ + +/* src: ssize_t, dst: int */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_INT + #define ASSIGN_ssize_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_INT + #define ASSIGN_ssize_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_INT */ + #define ASSIGN_ssize_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: int */ + +/* src: ssize_t, dst: uint8_t */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_UINT8_T + #define ASSIGN_ssize_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_UINT8_T + #define ASSIGN_ssize_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_UINT8_T */ + #define ASSIGN_ssize_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: uint8_t */ + +/* src: ssize_t, dst: uint16_t */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_UINT16_T + #define ASSIGN_ssize_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_UINT16_T + #define ASSIGN_ssize_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_UINT16_T */ + #define ASSIGN_ssize_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: uint16_t */ + +/* src: ssize_t, dst: uint32_t */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_UINT32_T + #define ASSIGN_ssize_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_UINT32_T + #define ASSIGN_ssize_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_UINT32_T */ + #define ASSIGN_ssize_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: uint32_t */ + +/* src: ssize_t, dst: uint64_t */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_UINT64_T + #define ASSIGN_ssize_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_UINT64_T + #define ASSIGN_ssize_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_UINT64_T */ + #define ASSIGN_ssize_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: uint64_t */ + +/* src: ssize_t, dst: ptrdiff_t */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_ssize_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_ssize_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_ssize_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: ptrdiff_t */ + +/* src: ssize_t, dst: size_t */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_SIZE_T + #define ASSIGN_ssize_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_SIZE_T + #define ASSIGN_ssize_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_SIZE_T */ + #define ASSIGN_ssize_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: size_t */ + +/* src: ssize_t, dst: haddr_t */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_HADDR_T + #define ASSIGN_ssize_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_HADDR_T + #define ASSIGN_ssize_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_HADDR_T */ + #define ASSIGN_ssize_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: haddr_t */ + +/* src: ssize_t, dst: hsize_t */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_HSIZE_T + #define ASSIGN_ssize_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_HSIZE_T + #define ASSIGN_ssize_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_ssize_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: hsize_t */ + +/* src: ssize_t, dst: hssize_t */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_HSSIZE_T + #define ASSIGN_ssize_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_HSSIZE_T + #define ASSIGN_ssize_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_ssize_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: hssize_t */ + +/* src: ssize_t, dst: h5_stat_size_t */ +#if H5_SIZEOF_SSIZE_T < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_ssize_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_SSIZE_T > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_ssize_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_SSIZE_T == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_ssize_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: ssize_t dst: h5_stat_size_t */ + + +/* Assignment checks for haddr_t */ + +/* src: haddr_t, dst: unsigned */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_UNSIGNED + #define ASSIGN_haddr_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_UNSIGNED + #define ASSIGN_haddr_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_haddr_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: unsigned */ + +/* src: haddr_t, dst: int */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_INT + #define ASSIGN_haddr_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_INT + #define ASSIGN_haddr_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_INT */ + #define ASSIGN_haddr_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: int */ + +/* src: haddr_t, dst: uint8_t */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_UINT8_T + #define ASSIGN_haddr_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_UINT8_T + #define ASSIGN_haddr_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_UINT8_T */ + #define ASSIGN_haddr_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: uint8_t */ + +/* src: haddr_t, dst: uint16_t */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_UINT16_T + #define ASSIGN_haddr_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_UINT16_T + #define ASSIGN_haddr_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_UINT16_T */ + #define ASSIGN_haddr_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: uint16_t */ + +/* src: haddr_t, dst: uint32_t */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_UINT32_T + #define ASSIGN_haddr_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_UINT32_T + #define ASSIGN_haddr_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_UINT32_T */ + #define ASSIGN_haddr_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: uint32_t */ + +/* src: haddr_t, dst: uint64_t */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_UINT64_T + #define ASSIGN_haddr_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_UINT64_T + #define ASSIGN_haddr_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_UINT64_T */ + #define ASSIGN_haddr_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: uint64_t */ + +/* src: haddr_t, dst: ptrdiff_t */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_haddr_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_haddr_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_haddr_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: ptrdiff_t */ + +/* src: haddr_t, dst: size_t */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_SIZE_T + #define ASSIGN_haddr_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_SIZE_T + #define ASSIGN_haddr_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_SIZE_T */ + #define ASSIGN_haddr_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: size_t */ + +/* src: haddr_t, dst: ssize_t */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_SSIZE_T + #define ASSIGN_haddr_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_SSIZE_T + #define ASSIGN_haddr_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_haddr_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: ssize_t */ + +/* src: haddr_t, dst: hsize_t */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_HSIZE_T + #define ASSIGN_haddr_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_HSIZE_T + #define ASSIGN_haddr_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_haddr_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: hsize_t */ + +/* src: haddr_t, dst: hssize_t */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_HSSIZE_T + #define ASSIGN_haddr_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_HSSIZE_T + #define ASSIGN_haddr_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_haddr_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: hssize_t */ + +/* src: haddr_t, dst: h5_stat_size_t */ +#if H5_SIZEOF_HADDR_T < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_haddr_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HADDR_T > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_haddr_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HADDR_T == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_haddr_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: haddr_t dst: h5_stat_size_t */ + + +/* Assignment checks for hsize_t */ + +/* src: hsize_t, dst: unsigned */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_UNSIGNED + #define ASSIGN_hsize_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_UNSIGNED + #define ASSIGN_hsize_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_hsize_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: unsigned */ + +/* src: hsize_t, dst: int */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_INT + #define ASSIGN_hsize_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_INT + #define ASSIGN_hsize_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_INT */ + #define ASSIGN_hsize_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: int */ + +/* src: hsize_t, dst: uint8_t */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_UINT8_T + #define ASSIGN_hsize_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_UINT8_T + #define ASSIGN_hsize_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_UINT8_T */ + #define ASSIGN_hsize_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: uint8_t */ + +/* src: hsize_t, dst: uint16_t */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_UINT16_T + #define ASSIGN_hsize_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_UINT16_T + #define ASSIGN_hsize_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_UINT16_T */ + #define ASSIGN_hsize_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: uint16_t */ + +/* src: hsize_t, dst: uint32_t */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_UINT32_T + #define ASSIGN_hsize_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_UINT32_T + #define ASSIGN_hsize_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_UINT32_T */ + #define ASSIGN_hsize_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: uint32_t */ + +/* src: hsize_t, dst: uint64_t */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_UINT64_T + #define ASSIGN_hsize_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_UINT64_T + #define ASSIGN_hsize_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_UINT64_T */ + #define ASSIGN_hsize_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: uint64_t */ + +/* src: hsize_t, dst: ptrdiff_t */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_hsize_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_hsize_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_hsize_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: ptrdiff_t */ + +/* src: hsize_t, dst: size_t */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_SIZE_T + #define ASSIGN_hsize_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_SIZE_T + #define ASSIGN_hsize_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_SIZE_T */ + #define ASSIGN_hsize_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: size_t */ + +/* src: hsize_t, dst: ssize_t */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_SSIZE_T + #define ASSIGN_hsize_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_SSIZE_T + #define ASSIGN_hsize_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_hsize_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: ssize_t */ + +/* src: hsize_t, dst: haddr_t */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_HADDR_T + #define ASSIGN_hsize_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_HADDR_T + #define ASSIGN_hsize_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_HADDR_T */ + #define ASSIGN_hsize_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: haddr_t */ + +/* src: hsize_t, dst: hssize_t */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_HSSIZE_T + #define ASSIGN_hsize_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_HSSIZE_T + #define ASSIGN_hsize_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_hsize_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: hssize_t */ + +/* src: hsize_t, dst: h5_stat_size_t */ +#if H5_SIZEOF_HSIZE_T < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_hsize_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSIZE_T > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_hsize_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSIZE_T == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_hsize_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hsize_t dst: h5_stat_size_t */ + + +/* Assignment checks for hssize_t */ + +/* src: hssize_t, dst: unsigned */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_UNSIGNED + #define ASSIGN_hssize_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_UNSIGNED + #define ASSIGN_hssize_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_hssize_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: unsigned */ + +/* src: hssize_t, dst: int */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_INT + #define ASSIGN_hssize_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_INT + #define ASSIGN_hssize_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_INT */ + #define ASSIGN_hssize_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: int */ + +/* src: hssize_t, dst: uint8_t */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_UINT8_T + #define ASSIGN_hssize_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_UINT8_T + #define ASSIGN_hssize_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_UINT8_T */ + #define ASSIGN_hssize_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: uint8_t */ + +/* src: hssize_t, dst: uint16_t */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_UINT16_T + #define ASSIGN_hssize_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_UINT16_T + #define ASSIGN_hssize_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_UINT16_T */ + #define ASSIGN_hssize_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: uint16_t */ + +/* src: hssize_t, dst: uint32_t */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_UINT32_T + #define ASSIGN_hssize_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_UINT32_T + #define ASSIGN_hssize_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_UINT32_T */ + #define ASSIGN_hssize_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: uint32_t */ + +/* src: hssize_t, dst: uint64_t */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_UINT64_T + #define ASSIGN_hssize_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_UINT64_T + #define ASSIGN_hssize_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_UINT64_T */ + #define ASSIGN_hssize_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: uint64_t */ + +/* src: hssize_t, dst: ptrdiff_t */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_hssize_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_hssize_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_hssize_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: ptrdiff_t */ + +/* src: hssize_t, dst: size_t */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_SIZE_T + #define ASSIGN_hssize_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_SIZE_T + #define ASSIGN_hssize_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_SIZE_T */ + #define ASSIGN_hssize_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: size_t */ + +/* src: hssize_t, dst: ssize_t */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_SSIZE_T + #define ASSIGN_hssize_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_SSIZE_T + #define ASSIGN_hssize_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_hssize_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: ssize_t */ + +/* src: hssize_t, dst: haddr_t */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_HADDR_T + #define ASSIGN_hssize_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_HADDR_T + #define ASSIGN_hssize_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_HADDR_T */ + #define ASSIGN_hssize_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: haddr_t */ + +/* src: hssize_t, dst: hsize_t */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_HSIZE_T + #define ASSIGN_hssize_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_HSIZE_T + #define ASSIGN_hssize_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_hssize_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: hsize_t */ + +/* src: hssize_t, dst: h5_stat_size_t */ +#if H5_SIZEOF_HSSIZE_T < H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_hssize_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_HSSIZE_T > H5_SIZEOF_H5_STAT_SIZE_T + #define ASSIGN_hssize_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_HSSIZE_T == H5_SIZEOF_H5_STAT_SIZE_T */ + #define ASSIGN_hssize_t_TO_h5_stat_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SIGNED_TO_UNSIGNED(dst, dsttype, src, srctype) +#endif /* src: hssize_t dst: h5_stat_size_t */ + + +/* Assignment checks for h5_stat_size_t */ + +/* src: h5_stat_size_t, dst: unsigned */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_UNSIGNED + #define ASSIGN_h5_stat_size_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_UNSIGNED + #define ASSIGN_h5_stat_size_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_UNSIGNED */ + #define ASSIGN_h5_stat_size_t_TO_unsigned(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: unsigned */ + +/* src: h5_stat_size_t, dst: int */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_INT + #define ASSIGN_h5_stat_size_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_INT + #define ASSIGN_h5_stat_size_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_INT */ + #define ASSIGN_h5_stat_size_t_TO_int(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: int */ + +/* src: h5_stat_size_t, dst: uint8_t */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_UINT8_T + #define ASSIGN_h5_stat_size_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_UINT8_T + #define ASSIGN_h5_stat_size_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_UINT8_T */ + #define ASSIGN_h5_stat_size_t_TO_uint8_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: uint8_t */ + +/* src: h5_stat_size_t, dst: uint16_t */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_UINT16_T + #define ASSIGN_h5_stat_size_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_UINT16_T + #define ASSIGN_h5_stat_size_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_UINT16_T */ + #define ASSIGN_h5_stat_size_t_TO_uint16_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: uint16_t */ + +/* src: h5_stat_size_t, dst: uint32_t */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_UINT32_T + #define ASSIGN_h5_stat_size_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_UINT32_T + #define ASSIGN_h5_stat_size_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_UINT32_T */ + #define ASSIGN_h5_stat_size_t_TO_uint32_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: uint32_t */ + +/* src: h5_stat_size_t, dst: uint64_t */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_UINT64_T + #define ASSIGN_h5_stat_size_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_UINT64_T + #define ASSIGN_h5_stat_size_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_UINT64_T */ + #define ASSIGN_h5_stat_size_t_TO_uint64_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: uint64_t */ + +/* src: h5_stat_size_t, dst: ptrdiff_t */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_PTRDIFF_T + #define ASSIGN_h5_stat_size_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_PTRDIFF_T + #define ASSIGN_h5_stat_size_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_PTRDIFF_T */ + #define ASSIGN_h5_stat_size_t_TO_ptrdiff_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: ptrdiff_t */ + +/* src: h5_stat_size_t, dst: size_t */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_SIZE_T + #define ASSIGN_h5_stat_size_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_SIZE_T + #define ASSIGN_h5_stat_size_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_SIZE_T */ + #define ASSIGN_h5_stat_size_t_TO_size_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: size_t */ + +/* src: h5_stat_size_t, dst: ssize_t */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_SSIZE_T + #define ASSIGN_h5_stat_size_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_SSIZE_T + #define ASSIGN_h5_stat_size_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_SSIZE_T */ + #define ASSIGN_h5_stat_size_t_TO_ssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: ssize_t */ + +/* src: h5_stat_size_t, dst: haddr_t */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_HADDR_T + #define ASSIGN_h5_stat_size_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_HADDR_T + #define ASSIGN_h5_stat_size_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_HADDR_T */ + #define ASSIGN_h5_stat_size_t_TO_haddr_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: haddr_t */ + +/* src: h5_stat_size_t, dst: hsize_t */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_HSIZE_T + #define ASSIGN_h5_stat_size_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_HSIZE_T + #define ASSIGN_h5_stat_size_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_HSIZE_T */ + #define ASSIGN_h5_stat_size_t_TO_hsize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_SAME_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: hsize_t */ + +/* src: h5_stat_size_t, dst: hssize_t */ +#if H5_SIZEOF_H5_STAT_SIZE_T < H5_SIZEOF_HSSIZE_T + #define ASSIGN_h5_stat_size_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_LARGER_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#elif H5_SIZEOF_H5_STAT_SIZE_T > H5_SIZEOF_HSSIZE_T + #define ASSIGN_h5_stat_size_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SMALLER_SIZE(dst, dsttype, src, srctype) +#else /* H5_SIZEOF_H5_STAT_SIZE_T == H5_SIZEOF_HSSIZE_T */ + #define ASSIGN_h5_stat_size_t_TO_hssize_t(dst, dsttype, src, srctype) \ + ASSIGN_TO_SAME_SIZE_UNSIGNED_TO_SIGNED(dst, dsttype, src, srctype) +#endif /* src: h5_stat_size_t dst: hssize_t */ + +#endif /* H5overflow_H */ + diff --git a/Resources/windows-libs/HDF5/include/H5pubconf.h b/Resources/windows-libs/HDF5/include/H5pubconf.h new file mode 100644 index 0000000000000000000000000000000000000000..fd3704a2de0e71de3c98bde5c5e0aad8961dee20 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5pubconf.h @@ -0,0 +1,801 @@ +/* H5pubconf.h Generated By CMake during the configuration */ + +#ifndef H5_CONFIG_H_ +#define H5_CONFIG_H_ + +/* Define if the Windows virtual file driver should be compiled */ +#define H5_HAVE_WINDOWS 1 + +/* Define if using MinGW */ +/* #undef H5_HAVE_MINGW */ + +/* Define if on the Windows platform and default WIN32 API */ +#define H5_HAVE_WIN32_API 1 + +/* Define if using a Windows compiler (i.e. Visual Studio) */ +#define H5_HAVE_VISUAL_STUDIO 1 + +/* Defined if HDF5 was built with CMake AND build as a shared library */ +#define H5_BUILT_AS_DYNAMIC_LIB 1 + +/* Defined if HDF5 was built with CMake AND build as a static library */ +/* #undef H5_BUILT_AS_STATIC_LIB */ + +/* Defined if HDF5 CPP was built with CMake AND build as a shared library */ +/* #undef H5_CPP_BUILT_AS_DYNAMIC_LIB */ + +/* Defined if HDF5 CPP was built with CMake AND build as a static library */ +/* #undef H5_CPP_BUILT_AS_STATIC_LIB */ + +/* Defined if HDF5 HL was built with CMake AND build as a shared library */ +/* #undef H5_HL_BUILT_AS_DYNAMIC_LIB */ + +/* Defined if HDF5 HL was built with CMake AND build as a static library */ +/* #undef H5_HL_BUILT_AS_STATIC_LIB */ + +/* Define if building universal (internal helper macro) */ +/* #undef H5_AC_APPLE_UNIVERSAL_BUILD */ + +/* Define if your system generates wrong code for log2 routine. */ +/* #undef H5_BAD_LOG2_CODE_GENERATED */ + +/* Define if the memory buffers being written to disk should be cleared before + writing. */ +#define H5_CLEAR_MEMORY 1 + +/* Define if your system can handle converting denormalized floating-point + values. */ +#define H5_CONVERT_DENORMAL_FLOAT 1 + +/* Define if C++ compiler recognizes offsetof */ +/* #undef H5_CXX_HAVE_OFFSETOF */ + +/* Define the default plugins path to compile */ +#define H5_DEFAULT_PLUGINDIR "%ALLUSERSPROFILE%/hdf5/lib/plugin" + +/* Define the default virtual file driver to compile */ +#define H5_DEFAULT_VFD H5FD_SEC2 + +/* Define if `dev_t' is a scalar */ +/* #undef H5_DEV_T_IS_SCALAR */ + +/* Define to dummy `main' function (if any) required to link to the Fortran + libraries. */ +/* #undef H5_FC_DUMMY_MAIN */ + +/* Define if F77 and FC dummy `main' functions are identical. */ +/* #undef H5_FC_DUMMY_MAIN_EQ_F77 */ + +/* Define to a macro mangling the given C identifier (in lower and upper + case), which must not contain underscores, for linking with Fortran. */ +#define H5_FC_FUNC(name,NAME) NAME + +/* As FC_FUNC, but for C identifiers containing underscores. */ +#define H5_FC_FUNC_(name,NAME) NAME + +/* Define if your system can handle overflow converting floating-point to + integer values. */ +#define H5_FP_TO_INTEGER_OVERFLOW_WORKS 1 + +/* Define if your system roundup accurately converting floating-point to + unsigned long long values. */ +#define H5_FP_TO_ULLONG_ACCURATE 1 + +/* Define if your system has right maximum convert floating-point to unsigned + long long values. */ +/* #undef H5_FP_TO_ULLONG_RIGHT_MAXIMUM */ + +/* Define if gettimeofday() populates the tz pointer passed in */ +#define H5_GETTIMEOFDAY_GIVES_TZ 1 + +/* Define to 1 if you have the `alarm' function. */ +/* #undef H5_HAVE_ALARM */ + +/* Define if the __attribute__(()) extension is present */ +/* #undef H5_HAVE_ATTRIBUTE */ + +/* Define to 1 if you have the `BSDgettimeofday' function. */ +/* #undef H5_HAVE_BSDGETTIMEOFDAY */ + +/* Define if the compiler understands C99 designated initialization of structs + and unions */ +/* #undef H5_HAVE_C99_DESIGNATED_INITIALIZER */ + +/* Define if the compiler understands the __func__ keyword */ +/* #undef H5_HAVE_C99_FUNC */ + +/* Define to 1 if you have the `clock_gettime' function. */ +/* #undef H5_HAVE_CLOCK_GETTIME */ + +/* Define if the function stack tracing code is to be compiled in */ +/* #undef H5_HAVE_CODESTACK */ + +/* Define if Darwin or Mac OS X */ +/* #undef H5_HAVE_DARWIN */ + +/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't. + */ +#define H5_HAVE_DECL_TZNAME 1 + +/* Define to 1 if you have the `difftime' function. */ +#define H5_HAVE_DIFFTIME 1 + +/* Define if the direct I/O virtual file driver should be compiled */ +/* #undef H5_HAVE_DIRECT */ + +/* Define to 1 if you have the <dirent.h> header file. */ +/* #undef H5_HAVE_DIRENT_H */ + +/* Define to 1 if you have the <dlfcn.h> header file. */ +/* #undef H5_HAVE_DLFCN_H */ + +/* Define to 1 if you have the <dmalloc.h> header file. */ +/* #undef H5_HAVE_DMALLOC_H */ + +/* Define if library information should be embedded in the executables */ +#define H5_HAVE_EMBEDDED_LIBINFO 1 + +/* Define to 1 if you have the <features.h> header file. */ +/* #undef H5_HAVE_FEATURES_H */ + +/* Define if support for deflate (zlib) filter is enabled */ +#define H5_HAVE_FILTER_DEFLATE 1 + +/* Define if support for Fletcher32 checksum is enabled */ +#define H5_HAVE_FILTER_FLETCHER32 1 + +/* Define if support for nbit filter is enabled */ +#define H5_HAVE_FILTER_NBIT 1 + +/* Define if support for scaleoffset filter is enabled */ +#define H5_HAVE_FILTER_SCALEOFFSET 1 + +/* Define if support for shuffle filter is enabled */ +#define H5_HAVE_FILTER_SHUFFLE 1 + +/* Define if support for szip filter is enabled */ +#define H5_HAVE_FILTER_SZIP 1 + +/* Define to 1 if you have the `fork' function. */ +/* #undef H5_HAVE_FORK */ + +/* Define to 1 if you have the `frexpf' function. */ +/* #undef H5_HAVE_FREXPF */ + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef H5_HAVE_FREXPL */ + +/* Define to 1 if you have the `fseeko' function. */ +/* #undef H5_HAVE_FSEEKO */ + +/* Define to 1 if you have the `fseeko64' function. */ +/* #undef H5_HAVE_FSEEKO64 */ + +/* Define to 1 if you have the `fstat64' function. */ +/* #undef H5_HAVE_FSTAT64 */ + +/* Define to 1 if you have the `ftello' function. */ +/* #undef H5_HAVE_FTELLO */ + +/* Define to 1 if you have the `ftello64' function. */ +/* #undef H5_HAVE_FTELLO64 */ + +/* Define to 1 if you have the `ftruncate64' function. */ +/* #undef H5_HAVE_FTRUNCATE64 */ + +/* Define if the compiler understands the __FUNCTION__ keyword */ +#define H5_HAVE_FUNCTION 1 + +/* Define to 1 if you have the `GetConsoleScreenBufferInfo' function. */ +#define H5_HAVE_GETCONSOLESCREENBUFFERINFO 1 + +/* Define to 1 if you have the `gethostname' function. */ +#define H5_HAVE_GETHOSTNAME 1 + +/* Define to 1 if you have the `getpwuid' function. */ +/* #undef H5_HAVE_GETPWUID */ + +/* Define to 1 if you have the `getrusage' function. */ +/* #undef H5_HAVE_GETRUSAGE */ + +/* Define to 1 if you have the `gettextinfo' function. */ +/* #undef H5_HAVE_GETTEXTINFO */ + +/* Define to 1 if you have the `gettimeofday' function. */ +#define H5_HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have the `gettimeofday' function declared in time.h . */ +/* #undef H5_HAVE_TIME_GETTIMEOFDAY */ + +/* Define to 1 if you have the `gettimeofday' function declared in sys/time.h . */ +/* #undef H5_HAVE_SYS_TIME_GETTIMEOFDAY */ + +/* Define to 1 if you have the `get_fpc_csr' function. */ +/* #undef H5_HAVE_GET_FPC_CSR */ + +/* Define if library will contain instrumentation to detect correct + optimization operation */ +/* #undef H5_HAVE_INSTRUMENTED_LIBRARY */ + +/* Define to 1 if you have the <inttypes.h> header file. */ +/* #undef H5_HAVE_INTTYPES_H */ + +/* Define to 1 if you have the `ioctl' function. */ +/* #undef H5_HAVE_IOCTL */ + +/* Define to 1 if you have the <io.h> header file. */ +#define H5_HAVE_IO_H 1 + +/* Define to 1 if you have the `dl' library (-ldl). */ +/* #undef H5_HAVE_LIBDL */ + +/* Define to 1 if you have the `dmalloc' library (-ldmalloc). */ +/* #undef H5_HAVE_LIBDMALLOC */ + +/* Define to 1 if you have the `lmpe' library (-llmpe). */ +/* #undef H5_HAVE_LIBLMPE */ + +/* Define to 1 if you have the `m' library (-lm). */ +#define H5_HAVE_LIBM 1 + +/* Define to 1 if you have the `mpe' library (-lmpe). */ +/* #undef H5_HAVE_LIBMPE */ + +/* Define to 1 if you have the `mpi' library (-lmpi). */ +/* #undef H5_HAVE_LIBMPI */ + +/* Define to 1 if you have the `mpich' library (-lmpich). */ +/* #undef H5_HAVE_LIBMPICH */ + +/* Define to 1 if you have the `mpio' library (-lmpio). */ +/* #undef H5_HAVE_LIBMPIO */ + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +/* #undef H5_HAVE_LIBNSL */ + +/* Define to 1 if you have the `pthread' library (-lpthread). */ +/* #undef H5_HAVE_LIBPTHREAD */ + +/* Define to 1 if you have the `socket' library (-lsocket). */ +/* #undef H5_HAVE_LIBSOCKET */ + +/* Define to 1 if you have the `sz' library (-lsz). */ +#define H5_HAVE_LIBSZ 1 + +/* Define to 1 if you have the `ws2_32' library (-lws2_32). */ +#define H5_HAVE_LIBWS2_32 1 + +/* Define to 1 if you have the `z' library (-lz). */ +#define H5_HAVE_LIBZ 1 + +/* Define to 1 if you have the `longjmp' function. */ +#define H5_HAVE_LONGJMP 1 + +/* Define to 1 if you have the `lseek64' function. */ +/* #undef H5_HAVE_LSEEK64 */ + +/* Define to 1 if you have the `lstat' function. */ +/* #undef H5_HAVE_LSTAT */ + +/* Define to 1 if you have the <mach/mach_time.h> header file. */ +/* #undef H5_HAVE_MACH_MACH_TIME_H */ + +/* Define to 1 if you have the <memory.h> header file. */ +#define H5_HAVE_MEMORY_H 1 + +/* Define if we have MPE support */ +/* #undef H5_HAVE_MPE */ + +/* Define to 1 if you have the <mpe.h> header file. */ +/* #undef H5_HAVE_MPE_H */ + +/* Define if MPI_File_get_size works correctly */ +/* #undef H5_HAVE_MPI_GET_SIZE */ + +/* Define if `MPI_Comm_c2f' and `MPI_Comm_f2c' exists */ +/* #undef H5_HAVE_MPI_MULTI_LANG_Comm */ + +/* Define if `MPI_Info_c2f' and `MPI_Info_f2c' exists */ +/* #undef H5_HAVE_MPI_MULTI_LANG_Info */ + +/* Define if we have parallel support */ +/* #undef H5_HAVE_PARALLEL */ + +/* Define to 1 if you have the <pthread.h> header file. */ +/* #undef H5_HAVE_PTHREAD_H */ + +/* Define to 1 if you have the 'InitOnceExecuteOnce' function. */ +/* #undef H5_HAVE_WIN_THREADS */ + +/* Define to 1 if you have the `random' function. */ +/* #undef H5_HAVE_RANDOM */ + +/* Define to 1 if you have the `rand_r' function. */ +/* #undef H5_HAVE_RAND_R */ + +/* Define to 1 if you have the `sigsetjmp' function. */ +#define H5_HAVE_SETJMP 1 + +/* Define to 1 if you have the <setjmp.h> header file. */ +#define H5_HAVE_SETJMP_H 1 + +/* Define to 1 if you have the `setsysinfo' function. */ +/* #undef H5_HAVE_SETSYSINFO */ + +/* Define to 1 if you have the `sigaction' function. */ +/* #undef H5_HAVE_SIGACTION */ + +/* Define to 1 if you have the `siglongjmp' function. */ +/* #undef H5_HAVE_SIGLONGJMP */ + +/* Define to 1 if you have the `signal' function. */ +#define H5_HAVE_SIGNAL 1 + +/* Define to 1 if you have the `sigprocmask' function. */ +/* #undef H5_HAVE_SIGPROCMASK */ + +/* Define to 1 if you have the `sigsetjmp' function. */ +/* #undef H5_HAVE_SIGSETJMP */ + +/* Define to 1 if you have the `snprintf' function. */ +/* #undef H5_HAVE_SNPRINTF */ + +/* Define to 1 if you have the `srandom' function. */ +/* #undef H5_HAVE_SRANDOM */ + +/* Define to 1 if you have the `stat64' function. */ +/* #undef H5_HAVE_STAT64 */ + +/* Define if `struct stat' has the `st_blocks' field */ +/* #undef H5_HAVE_STAT_ST_BLOCKS */ + +/* Define to 1 if you have the <stddef.h> header file. */ +#define H5_HAVE_STDDEF_H 1 + +/* Define to 1 if you have the <stdint.h> header file. */ +#define H5_HAVE_STDINT_H 1 + +/* Define to 1 if you have the <stdint.h> header file for Cplusplus. */ +#define H5_HAVE_STDINT_H_CXX 1 + +/* Define to 1 if you have the <stdlib.h> header file. */ +#define H5_HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strdup' function. */ +#define H5_HAVE_STRDUP 1 + +/* Define to 1 if you have the <strings.h> header file. */ +/* #undef H5_HAVE_STRINGS_H */ + +/* Define to 1 if you have the <string.h> header file. */ +#define H5_HAVE_STRING_H 1 + +/* Define if `struct text_info' is defined */ +/* #undef H5_HAVE_STRUCT_TEXT_INFO */ + +/* Define if `struct timezone' is defined */ +/* #undef H5_HAVE_STRUCT_TIMEZONE */ + +/* Define to 1 if `tm_zone' is a member of `struct tm'. */ +/* #undef H5_HAVE_STRUCT_TM_TM_ZONE */ + +/* Define if `struct videoconfig' is defined */ +/* #undef H5_HAVE_STRUCT_VIDEOCONFIG */ + +/* Define to 1 if you have the `symlink' function. */ +/* #undef H5_HAVE_SYMLINK */ + +/* Define to 1 if you have the `system' function. */ +#define H5_HAVE_SYSTEM 1 + +/* Define to 1 if you have the <sys/fpu.h> header file. */ +/* #undef H5_HAVE_SYS_FPU_H */ + +/* Define to 1 if you have the <sys/ioctl.h> header file. */ +/* #undef H5_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the <sys/proc.h> header file. */ +/* #undef H5_HAVE_SYS_PROC_H */ + +/* Define to 1 if you have the <sys/resource.h> header file. */ +/* #undef H5_HAVE_SYS_RESOURCE_H */ + +/* Define to 1 if you have the <sys/socket.h> header file. */ +/* #undef H5_HAVE_SYS_SOCKET_H */ + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#define H5_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the <sys/sysinfo.h> header file. */ +/* #undef H5_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the <sys/timeb.h> header file. */ +#define H5_HAVE_SYS_TIMEB_H 1 + +/* Define to 1 if you have the <time.h> header file. */ +#define H5_HAVE_TIME_H 1 + +/* Define to 1 if you have the <sys/time.h> header file. */ +/* #undef H5_HAVE_SYS_TIME_H */ + +/* Define to 1 if you have the <sys/types.h> header file. */ +#define H5_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the <szlib.h> header file. */ +#define H5_HAVE_SZLIB_H 1 + +/* Define if we have thread safe support */ +/* #undef H5_HAVE_THREADSAFE */ + +/* Define if `timezone' is a global variable */ +#define H5_HAVE_TIMEZONE 1 + +/* Define if the ioctl TIOCGETD is defined */ +/* #undef H5_HAVE_TIOCGETD */ + +/* Define if the ioctl TIOGWINSZ is defined */ +/* #undef H5_HAVE_TIOCGWINSZ */ + +/* Define to 1 if you have the `tmpfile' function. */ +#define H5_HAVE_TMPFILE 1 + +/* Define if `tm_gmtoff' is a member of `struct tm' */ +/* #undef H5_HAVE_TM_GMTOFF */ + +/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE' instead. */ +/* #undef H5_HAVE_TM_ZONE */ + +/* Define to 1 if you don't have `tm_zone' but do have the external array + `tzname'. */ +/* #undef H5_HAVE_TZNAME */ + +/* Define to 1 if you have the <unistd.h> header file. */ +/* #undef H5_HAVE_UNISTD_H */ + +/* Define to 1 if you have the `vasprintf' function. */ +/* #undef H5_HAVE_VASPRINTF */ + +/* Define to 1 if you have the `vsnprintf' function. */ +#define H5_HAVE_VSNPRINTF 1 + +/* Define to 1 if you have the `waitpid' function. */ +/* #undef H5_HAVE_WAITPID */ + +/* Define if your system has window style path name. */ +#define H5_HAVE_WINDOW_PATH 1 + +/* Define to 1 if you have the <winsock.h> header file. */ +#define H5_HAVE_WINSOCK2_H 1 + +/* Define to 1 if you have the <zlib.h> header file. */ +#define H5_HAVE_ZLIB_H 1 + +/* Define to 1 if you have the `_getvideoconfig' function. */ +/* #undef H5_HAVE__GETVIDEOCONFIG */ + +/* Define to 1 if you have the `_scrsize' function. */ +/* #undef H5_HAVE__SCRSIZE */ + +/* Define if `__tm_gmtoff' is a member of `struct tm' */ +/* #undef H5_HAVE___TM_GMTOFF */ + +/* Define if your system can't handle converting floating-point values to long + long. */ +/* #undef H5_HW_FP_TO_LLONG_NOT_WORKS */ + +/* Define if HDF5's high-level library headers should be included in hdf5.h */ +#define H5_INCLUDE_HL 1 + +/* Define if your system can accurately convert from integers to long double + values. */ +#define H5_INTEGER_TO_LDOUBLE_ACCURATE 1 + +/* Define if your system can convert long double to integers accurately. */ +#define H5_LDOUBLE_TO_INTEGER_ACCURATE 1 + +/* Define if your system can convert from long double to integer values. */ +/* #undef H5_LDOUBLE_TO_INTEGER_WORKS */ + +/* Define if your system can convert long double to (unsigned) long long + values correctly. */ +#define H5_LDOUBLE_TO_LLONG_ACCURATE 1 + +/* Define if your system converts long double to (unsigned) long values with + special algorithm. */ +/* #undef H5_LDOUBLE_TO_LONG_SPECIAL */ + +/* Define if your system can convert long double to unsigned int values + correctly. */ +#define H5_LDOUBLE_TO_UINT_ACCURATE 1 + +/* Define if your system can compile long long to floating-point casts. */ +#define H5_LLONG_TO_FP_CAST_WORKS 1 + +/* Define if your system can convert (unsigned) long long to long double + values correctly. */ +#define H5_LLONG_TO_LDOUBLE_CORRECT 1 + +/* Define if your system can convert (unsigned) long to long double values + with special algorithm. */ +/* #undef H5_LONG_TO_LDOUBLE_SPECIAL */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +/* #undef H5_LT_OBJDIR */ + +/* Define if the metadata trace file code is to be compiled in */ +/* #undef H5_METADATA_TRACE_FILE */ + +/* Define if your system's `MPI_File_set_size' function works for files over + 2GB. */ +/* #undef H5_MPI_FILE_SET_SIZE_BIG */ + +/* Define if we can violate pointer alignment restrictions */ +#define H5_NO_ALIGNMENT_RESTRICTIONS 1 + +/* Define if deprecated public API symbols are disabled */ +/* #undef H5_NO_DEPRECATED_SYMBOLS */ + +/* Define if shared writing must be disabled (CodeWarrior only) */ +/* #undef H5_NO_SHARED_WRITING */ + +/* Name of package */ +#define H5_PACKAGE "hdf5" + +/* Define to the address where bug reports for this package should be sent. */ +#define H5_PACKAGE_BUGREPORT "help@hdfgroup.org" + +/* Define to the full name of this package. */ +#define H5_PACKAGE_NAME "HDF5" + +/* Define to the full name and version of this package. */ +#define H5_PACKAGE_STRING "HDF5 1.8.13" + +/* Define to the one symbol short name of this package. */ +#define H5_PACKAGE_TARNAME "hdf5" + +/* Define to the home page for this package. */ +#define H5_PACKAGE_URL "http://www.hdfgroup.org" + +/* Define to the version of this package. */ +#define H5_PACKAGE_VERSION "1.8.13" + +/* Width for printf() for type `long long' or `__int64', use `ll' */ +#define H5_PRINTF_LL_WIDTH "ll" + +/* The size of `char', as computed by sizeof. */ +#define H5_SIZEOF_CHAR 1 + +/* The size of `double', as computed by sizeof. */ +#define H5_SIZEOF_DOUBLE 8 + +/* The size of `float', as computed by sizeof. */ +#define H5_SIZEOF_FLOAT 4 + +/* The size of `int', as computed by sizeof. */ +#define H5_SIZEOF_INT 4 + +/* The size of `int16_t', as computed by sizeof. */ +#define H5_SIZEOF_INT16_T 2 + +/* The size of `int32_t', as computed by sizeof. */ +#define H5_SIZEOF_INT32_T 4 + +/* The size of `int64_t', as computed by sizeof. */ +#define H5_SIZEOF_INT64_T 8 + +/* The size of `int8_t', as computed by sizeof. */ +#define H5_SIZEOF_INT8_T 1 + +/* The size of `int_fast16_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_FAST16_T 4 + +/* The size of `int_fast32_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_FAST32_T 4 + +/* The size of `int_fast64_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_FAST64_T 8 + +/* The size of `int_fast8_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_FAST8_T 1 + +/* The size of `int_least16_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_LEAST16_T 2 + +/* The size of `int_least32_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_LEAST32_T 4 + +/* The size of `int_least64_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_LEAST64_T 8 + +/* The size of `int_least8_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_LEAST8_T 1 + +#if !defined(__APPLE__) +/* The size of `size_t', as computed by sizeof. */ +#define H5_SIZEOF_SIZE_T 8 + +/* The size of `ssize_t', as computed by sizeof. */ +/* #undef H5_SIZEOF_SSIZE_T */ + +/* The size of `long', as computed by sizeof. */ +#define H5_SIZEOF_LONG 4 + +#else + # if defined(__LP64__) && __LP64__ + #define H5_SIZEOF_LONG 8 + #define H5_SIZEOF_SIZE_T 8 + #define H5_SIZEOF_SSIZE_T 8 + # else + #define H5_SIZEOF_LONG 4 + #define H5_SIZEOF_SIZE_T 4 + #define H5_SIZEOF_SSIZE_T 4 + # endif + +#endif + +/* The size of `long double', as computed by sizeof. */ +#define H5_SIZEOF_LONG_DOUBLE 8 + +/* Define size of long long and/or __int64 bit integer type only if the type + exists. */ +#if !defined(__APPLE__) + #define H5_SIZEOF_LONG_LONG 8 +#else + #define H5_SIZEOF_LONG_LONG 8 +#endif + +/* The size of `off64_t', as computed by sizeof. */ +/* #undef H5_SIZEOF_OFF64_T */ + +/* The size of `off_t', as computed by sizeof. */ +#define H5_SIZEOF_OFF_T 4 + +/* The size of `ptrdiff_t', as computed by sizeof. */ +/* #undef H5_SIZEOF_PTRDIFF_T */ + +/* The size of `short', as computed by sizeof. */ +#define H5_SIZEOF_SHORT 2 + +/* The size of `uint16_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT16_T 2 + +/* The size of `uint32_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT32_T 4 + +/* The size of `uint64_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT64_T 8 + +/* The size of `uint8_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT8_T 1 + +/* The size of `uint_fast16_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_FAST16_T 4 + +/* The size of `uint_fast32_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_FAST32_T 4 + +/* The size of `uint_fast64_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_FAST64_T 8 + +/* The size of `uint_fast8_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_FAST8_T 1 + +/* The size of `uint_least16_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_LEAST16_T 2 + +/* The size of `uint_least32_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_LEAST32_T 4 + +/* The size of `uint_least64_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_LEAST64_T 8 + +/* The size of `uint_least8_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_LEAST8_T 1 + +/* The size of `unsigned', as computed by sizeof. */ +#define H5_SIZEOF_UNSIGNED 4 + +/* The size of `__int64', as computed by sizeof. */ +#define H5_SIZEOF___INT64 8 + +/* Define to 1 if you have the ANSI C header files. */ +#define H5_STDC_HEADERS 1 + +/* Define if strict file format checks are enabled */ +/* #undef H5_STRICT_FORMAT_CHECKS */ + +/* Define if your system supports pthread_attr_setscope(&attribute, + PTHREAD_SCOPE_SYSTEM) call. */ +/* #undef H5_SYSTEM_SCOPE_THREADS */ + +/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ +/* #undef H5_TIME_WITH_SYS_TIME */ + +/* Define to 1 if your <sys/time.h> declares `struct tm'. */ +/* #undef H5_TM_IN_SYS_TIME */ + +/* Define if your system can compile unsigned long long to floating-point + casts. */ +#define H5_ULLONG_TO_FP_CAST_WORKS 1 + +/* Define if your system can convert unsigned long long to long double with + correct precision. */ +/* #undef H5_ULLONG_TO_LDOUBLE_PRECISION */ + +/* Define if your system accurately converting unsigned long to float values. + */ +#define H5_ULONG_TO_FLOAT_ACCURATE 1 + +/* Define if your system can accurately convert unsigned (long) long values to + floating-point values. */ +#define H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE 1 + +/* Define using v1.6 public API symbols by default */ +/* #undef H5_USE_16_API_DEFAULT */ + +/* Define if a memory checking tool will be used on the library, to cause + library to be very picky about memory operations and also disable the + internal free list manager code. */ +/* #undef H5_USING_MEMCHECKER */ + +/* Version number of package */ +#define H5_VERSION "1.8.13" + +/* Define if vsnprintf() returns the correct value for formatted strings that + don't fit into size allowed */ +/* #undef H5_VSNPRINTF_WORKS */ + +/* Data accuracy is prefered to speed during data conversions */ +#define H5_WANT_DATA_ACCURACY 1 + +/* Check exception handling functions during data conversions */ +#define H5_WANT_DCONV_EXCEPTION 1 + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if !defined(__APPLE__) +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#else +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#endif + +/* #undef WORDS_BIGENDIAN */ + +/* Number of bits in a file offset, on hosts where this is settable. */ +/* #undef H5__FILE_OFFSET_BITS */ + +/* Define for large files, on AIX-style hosts. */ +/* #undef H5__LARGE_FILES */ + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef H5_const */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#define H5_inline __inline +#endif + +/* Define to `long int' if <sys/types.h> does not define. */ +/* #undef H5_off_t */ + +/* Define to `long' if <sys/types.h> does not define. */ +/* #undef H5_ptrdiff_t */ + +/* Define to `unsigned long' if <sys/types.h> does not define. */ +/* #undef H5_size_t */ + +/* Define to `long' if <sys/types.h> does not define. */ +/* #undef H5_ssize_t */ + +#if defined(__cplusplus) && defined(inline) +#undef inline +#endif + +#endif diff --git a/Resources/windows-libs/HDF5/include/H5public.h b/Resources/windows-libs/HDF5/include/H5public.h new file mode 100644 index 0000000000000000000000000000000000000000..aaf0d749847fc8628e2f83328cbe7a8e864203b4 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5public.h @@ -0,0 +1,343 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the HDF5 module. + */ +#ifndef _H5public_H +#define _H5public_H + +/* Include files for public use... */ +/* + * Since H5pubconf.h is a generated header file, it is messy to try + * to put a #ifndef _H5pubconf_H ... #endif guard in it. + * HDF5 has set an internal rule that it is being included here. + * Source files should NOT include H5pubconf.h directly but include + * it via H5public.h. The #ifndef _H5public_H guard above would + * prevent repeated include. + */ +#include "H5pubconf.h" /*from configure */ + +/* API Version macro wrapper definitions */ +#include "H5version.h" + +#ifdef H5_HAVE_FEATURES_H +#include <features.h> /*for setting POSIX, BSD, etc. compatibility */ +#endif +#ifdef H5_HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif +#ifdef H5_STDC_HEADERS +# include <limits.h> /*for H5T_NATIVE_CHAR defn in H5Tpublic.h */ +#endif +#ifndef __cplusplus +# ifdef H5_HAVE_STDINT_H +# include <stdint.h> /*for C9x types */ +# endif +#else +# ifdef H5_HAVE_STDINT_H_CXX +# include <stdint.h> /*for C9x types when include from C++ */ +# endif +#endif +#ifdef H5_HAVE_INTTYPES_H +# include <inttypes.h> /* For uint64_t on some platforms */ +#endif +#ifdef H5_HAVE_STDDEF_H +# include <stddef.h> +#endif +#ifdef H5_HAVE_PARALLEL +# include <mpi.h> +#ifndef MPI_FILE_NULL /*MPIO may be defined in mpi.h already */ +# include <mpio.h> +#endif +#endif + + +/* Include the Windows API adapter header early */ +#include "H5api_adpt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Macros for enabling/disabling particular GCC warnings */ +/* (see the following web-sites for more info: + * http://www.dbp-consulting.com/tutorials/SuppressingGCCWarnings.html + * http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas + */ +/* These pragmas are only implemented usefully in gcc 4.6+ */ +#if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406 + #define H5_GCC_DIAG_STR(s) #s + #define H5_GCC_DIAG_JOINSTR(x,y) H5_GCC_DIAG_STR(x ## y) + #define H5_GCC_DIAG_DO_PRAGMA(x) _Pragma (#x) + #define H5_GCC_DIAG_PRAGMA(x) H5_GCC_DIAG_DO_PRAGMA(GCC diagnostic x) + + #define H5_GCC_DIAG_OFF(x) H5_GCC_DIAG_PRAGMA(push) H5_GCC_DIAG_PRAGMA(ignored H5_GCC_DIAG_JOINSTR(-W,x)) + #define H5_GCC_DIAG_ON(x) H5_GCC_DIAG_PRAGMA(pop) +#else + #define H5_GCC_DIAG_OFF(x) + #define H5_GCC_DIAG_ON(x) +#endif + +/* Version numbers */ +#define H5_VERS_MAJOR 1 /* For major interface/format changes */ +#define H5_VERS_MINOR 8 /* For minor interface/format changes */ +#define H5_VERS_RELEASE 13 /* For tweaks, bug-fixes, or development */ +#define H5_VERS_SUBRELEASE "" /* For pre-releases like snap0 */ + /* Empty string for real releases. */ +#define H5_VERS_INFO "HDF5 library version: 1.8.13" /* Full version string */ + +#define H5check() H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR, \ + H5_VERS_RELEASE) + +/* macros for comparing the version */ +#define H5_VERSION_GE(Maj,Min,Rel) \ + (((H5_VERS_MAJOR==Maj) && (H5_VERS_MINOR==Min) && (H5_VERS_RELEASE>=Rel)) || \ + ((H5_VERS_MAJOR==Maj) && (H5_VERS_MINOR>Min)) || \ + (H5_VERS_MAJOR>Maj)) + +#define H5_VERSION_LE(Maj,Min,Rel) \ + (((H5_VERS_MAJOR==Maj) && (H5_VERS_MINOR==Min) && (H5_VERS_RELEASE<=Rel)) || \ + ((H5_VERS_MAJOR==Maj) && (H5_VERS_MINOR<Min)) || \ + (H5_VERS_MAJOR<Maj)) + +/* + * Status return values. Failed integer functions in HDF5 result almost + * always in a negative value (unsigned failing functions sometimes return + * zero for failure) while successfull return is non-negative (often zero). + * The negative failure value is most commonly -1, but don't bet on it. The + * proper way to detect failure is something like: + * + * if((dset = H5Dopen2(file, name)) < 0) + * fprintf(stderr, "unable to open the requested dataset\n"); + */ +typedef int herr_t; + + +/* + * Boolean type. Successful return values are zero (false) or positive + * (true). The typical true value is 1 but don't bet on it. Boolean + * functions cannot fail. Functions that return `htri_t' however return zero + * (false), positive (true), or negative (failure). The proper way to test + * for truth from a htri_t function is: + * + * if ((retval = H5Tcommitted(type))>0) { + * printf("data type is committed\n"); + * } else if (!retval) { + * printf("data type is not committed\n"); + * } else { + * printf("error determining whether data type is committed\n"); + * } + */ +typedef unsigned int hbool_t; +typedef int htri_t; + +/* Define the ssize_t type if it not is defined */ +#if H5_SIZEOF_SSIZE_T==0 +/* Undefine this size, we will re-define it in one of the sections below */ +#undef H5_SIZEOF_SSIZE_T +#if H5_SIZEOF_SIZE_T==H5_SIZEOF_INT +typedef int ssize_t; +# define H5_SIZEOF_SSIZE_T H5_SIZEOF_INT +#elif H5_SIZEOF_SIZE_T==H5_SIZEOF_LONG +typedef long ssize_t; +# define H5_SIZEOF_SSIZE_T H5_SIZEOF_LONG +#elif H5_SIZEOF_SIZE_T==H5_SIZEOF_LONG_LONG +typedef long long ssize_t; +# define H5_SIZEOF_SSIZE_T H5_SIZEOF_LONG_LONG +#else /* Can't find matching type for ssize_t */ +# error "nothing appropriate for ssize_t" +#endif +#endif + +/* + * The sizes of file objects have their own types defined here, use a 64-bit + * type. + */ +#if H5_SIZEOF_LONG_LONG >= 8 +H5_GCC_DIAG_OFF(long-long) +typedef unsigned long long hsize_t; +typedef signed long long hssize_t; +H5_GCC_DIAG_ON(long-long) +# define H5_SIZEOF_HSIZE_T H5_SIZEOF_LONG_LONG +# define H5_SIZEOF_HSSIZE_T H5_SIZEOF_LONG_LONG +#else +# error "nothing appropriate for hsize_t" +#endif + +/* + * File addresses have their own types. + */ +#if H5_SIZEOF_INT64_T>=8 + typedef uint64_t haddr_t; +# define HADDR_UNDEF ((haddr_t)(int64_t)(-1)) +# define H5_SIZEOF_HADDR_T H5_SIZEOF_INT64_T +# ifdef H5_HAVE_PARALLEL +# define HADDR_AS_MPI_TYPE MPI_LONG_LONG_INT +# endif /* H5_HAVE_PARALLEL */ +#elif H5_SIZEOF_INT>=8 + typedef unsigned haddr_t; +# define HADDR_UNDEF ((haddr_t)(-1)) +# define H5_SIZEOF_HADDR_T H5_SIZEOF_INT +# ifdef H5_HAVE_PARALLEL +# define HADDR_AS_MPI_TYPE MPI_UNSIGNED +# endif /* H5_HAVE_PARALLEL */ +#elif H5_SIZEOF_LONG>=8 + typedef unsigned long haddr_t; +# define HADDR_UNDEF ((haddr_t)(long)(-1)) +# define H5_SIZEOF_HADDR_T H5_SIZEOF_LONG +# ifdef H5_HAVE_PARALLEL +# define HADDR_AS_MPI_TYPE MPI_UNSIGNED_LONG +# endif /* H5_HAVE_PARALLEL */ +#elif H5_SIZEOF_LONG_LONG>=8 + typedef unsigned long long haddr_t; +# define HADDR_UNDEF ((haddr_t)(long long)(-1)) +# define H5_SIZEOF_HADDR_T H5_SIZEOF_LONG_LONG +# ifdef H5_HAVE_PARALLEL +# define HADDR_AS_MPI_TYPE MPI_LONG_LONG_INT +# endif /* H5_HAVE_PARALLEL */ +#else +# error "nothing appropriate for haddr_t" +#endif +#if H5_SIZEOF_HADDR_T ==H5_SIZEOF_INT +# define H5_PRINTF_HADDR_FMT "%u" +#elif H5_SIZEOF_HADDR_T ==H5_SIZEOF_LONG +# define H5_PRINTF_HADDR_FMT "%lu" +#elif H5_SIZEOF_HADDR_T ==H5_SIZEOF_LONG_LONG +# define H5_PRINTF_HADDR_FMT "%" H5_PRINTF_LL_WIDTH "u" +#else +# error "nothing appropriate for H5_PRINTF_HADDR_FMT" +#endif +#define HADDR_MAX (HADDR_UNDEF-1) + +/* uint32_t type is used for creation order field for messages. It may be + * defined in Posix.1g, otherwise it is defined here. + */ +#if H5_SIZEOF_UINT32_T>=4 +#elif H5_SIZEOF_SHORT>=4 + typedef short uint32_t; +# undef H5_SIZEOF_UINT32_T +# define H5_SIZEOF_UINT32_T H5_SIZEOF_SHORT +#elif H5_SIZEOF_INT>=4 + typedef unsigned int uint32_t; +# undef H5_SIZEOF_UINT32_T +# define H5_SIZEOF_UINT32_T H5_SIZEOF_INT +#elif H5_SIZEOF_LONG>=4 + typedef unsigned long uint32_t; +# undef H5_SIZEOF_UINT32_T +# define H5_SIZEOF_UINT32_T H5_SIZEOF_LONG +#else +# error "nothing appropriate for uint32_t" +#endif + +/* int64_t type is used for creation order field for links. It may be + * defined in Posix.1g, otherwise it is defined here. + */ +#if H5_SIZEOF_INT64_T>=8 +#elif H5_SIZEOF_INT>=8 + typedef int int64_t; +# undef H5_SIZEOF_INT64_T +# define H5_SIZEOF_INT64_T H5_SIZEOF_INT +#elif H5_SIZEOF_LONG>=8 + typedef long int64_t; +# undef H5_SIZEOF_INT64_T +# define H5_SIZEOF_INT64_T H5_SIZEOF_LONG +#elif H5_SIZEOF_LONG_LONG>=8 + typedef long long int64_t; +# undef H5_SIZEOF_INT64_T +# define H5_SIZEOF_INT64_T H5_SIZEOF_LONG_LONG +#else +# error "nothing appropriate for int64_t" +#endif + +/* uint64_t type is used for fields for H5O_info_t. It may be + * defined in Posix.1g, otherwise it is defined here. + */ +#if H5_SIZEOF_UINT64_T>=8 +#elif H5_SIZEOF_INT>=8 + typedef unsigned uint64_t; +# undef H5_SIZEOF_UINT64_T +# define H5_SIZEOF_UINT64_T H5_SIZEOF_INT +#elif H5_SIZEOF_LONG>=8 + typedef unsigned long uint64_t; +# undef H5_SIZEOF_UINT64_T +# define H5_SIZEOF_UINT64_T H5_SIZEOF_LONG +#elif H5_SIZEOF_LONG_LONG>=8 + typedef unsigned long long uint64_t; +# undef H5_SIZEOF_UINT64_T +# define H5_SIZEOF_UINT64_T H5_SIZEOF_LONG_LONG +#else +# error "nothing appropriate for uint64_t" +#endif + +/* Default value for all property list classes */ +#define H5P_DEFAULT 0 + +/* Common iteration orders */ +typedef enum { + H5_ITER_UNKNOWN = -1, /* Unknown order */ + H5_ITER_INC, /* Increasing order */ + H5_ITER_DEC, /* Decreasing order */ + H5_ITER_NATIVE, /* No particular order, whatever is fastest */ + H5_ITER_N /* Number of iteration orders */ +} H5_iter_order_t; + +/* Iteration callback values */ +/* (Actually, any postive value will cause the iterator to stop and pass back + * that positive value to the function that called the iterator) + */ +#define H5_ITER_ERROR (-1) +#define H5_ITER_CONT (0) +#define H5_ITER_STOP (1) + +/* + * The types of indices on links in groups/attributes on objects. + * Primarily used for "<do> <foo> by index" routines and for iterating over + * links in groups/attributes on objects. + */ +typedef enum H5_index_t { + H5_INDEX_UNKNOWN = -1, /* Unknown index type */ + H5_INDEX_NAME, /* Index on names */ + H5_INDEX_CRT_ORDER, /* Index on creation order */ + H5_INDEX_N /* Number of indices defined */ +} H5_index_t; + +/* + * Storage info struct used by H5O_info_t and H5F_info_t + */ +typedef struct H5_ih_info_t { + hsize_t index_size; /* btree and/or list */ + hsize_t heap_size; +} H5_ih_info_t; + +/* Functions in H5.c */ +H5_DLL herr_t H5open(void); +H5_DLL herr_t H5close(void); +H5_DLL herr_t H5dont_atexit(void); +H5_DLL herr_t H5garbage_collect(void); +H5_DLL herr_t H5set_free_list_limits (int reg_global_lim, int reg_list_lim, + int arr_global_lim, int arr_list_lim, int blk_global_lim, + int blk_list_lim); +H5_DLL herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, + unsigned *relnum); +H5_DLL herr_t H5check_version(unsigned majnum, unsigned minnum, + unsigned relnum); +H5_DLL herr_t H5free_memory(void *mem); + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/Resources/windows-libs/HDF5/include/H5version.h b/Resources/windows-libs/HDF5/include/H5version.h new file mode 100644 index 0000000000000000000000000000000000000000..58de2abafd097fe62acc19bf2799aa8a5011a90f --- /dev/null +++ b/Resources/windows-libs/HDF5/include/H5version.h @@ -0,0 +1,419 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* Generated automatically by bin/make_vers -- do not edit */ +/* Add new versioned symbols to H5vers.txt file */ + + +#ifndef _H5version_H +#define _H5version_H + +/* Issue error if contradicting macros have been defined. */ +#if defined(H5_USE_16_API) && defined(H5_NO_DEPRECATED_SYMBOLS) +#error "Can't choose old API versions when deprecated APIs are disabled" +#endif /* defined(H5_USE_16_API) && defined(H5_NO_DEPRECATED_SYMBOLS) */ + + +/* If a particular "global" version of the library's interfaces is chosen, + * set the versions for the API symbols affected. + * + * Note: If an application has already chosen a particular version for an + * API symbol, the individual API version macro takes priority. + */ +#if defined(H5_USE_16_API_DEFAULT) && !defined(H5_USE_16_API) +#define H5_USE_16_API 1 +#endif /* H5_USE_16_API_DEFAULT && !H5_USE_16_API */ + +#ifdef H5_USE_16_API + +/*************/ +/* Functions */ +/*************/ + +#if !defined(H5Acreate_vers) +#define H5Acreate_vers 1 +#endif /* !defined(H5Acreate_vers) */ + +#if !defined(H5Aiterate_vers) +#define H5Aiterate_vers 1 +#endif /* !defined(H5Aiterate_vers) */ + +#if !defined(H5Dcreate_vers) +#define H5Dcreate_vers 1 +#endif /* !defined(H5Dcreate_vers) */ + +#if !defined(H5Dopen_vers) +#define H5Dopen_vers 1 +#endif /* !defined(H5Dopen_vers) */ + +#if !defined(H5Eclear_vers) +#define H5Eclear_vers 1 +#endif /* !defined(H5Eclear_vers) */ + +#if !defined(H5Eget_auto_vers) +#define H5Eget_auto_vers 1 +#endif /* !defined(H5Eget_auto_vers) */ + +#if !defined(H5Eprint_vers) +#define H5Eprint_vers 1 +#endif /* !defined(H5Eprint_vers) */ + +#if !defined(H5Epush_vers) +#define H5Epush_vers 1 +#endif /* !defined(H5Epush_vers) */ + +#if !defined(H5Eset_auto_vers) +#define H5Eset_auto_vers 1 +#endif /* !defined(H5Eset_auto_vers) */ + +#if !defined(H5Ewalk_vers) +#define H5Ewalk_vers 1 +#endif /* !defined(H5Ewalk_vers) */ + +#if !defined(H5Gcreate_vers) +#define H5Gcreate_vers 1 +#endif /* !defined(H5Gcreate_vers) */ + +#if !defined(H5Gopen_vers) +#define H5Gopen_vers 1 +#endif /* !defined(H5Gopen_vers) */ + +#if !defined(H5Pget_filter_vers) +#define H5Pget_filter_vers 1 +#endif /* !defined(H5Pget_filter_vers) */ + +#if !defined(H5Pget_filter_by_id_vers) +#define H5Pget_filter_by_id_vers 1 +#endif /* !defined(H5Pget_filter_by_id_vers) */ + +#if !defined(H5Pinsert_vers) +#define H5Pinsert_vers 1 +#endif /* !defined(H5Pinsert_vers) */ + +#if !defined(H5Pregister_vers) +#define H5Pregister_vers 1 +#endif /* !defined(H5Pregister_vers) */ + +#if !defined(H5Rget_obj_type_vers) +#define H5Rget_obj_type_vers 1 +#endif /* !defined(H5Rget_obj_type_vers) */ + +#if !defined(H5Tarray_create_vers) +#define H5Tarray_create_vers 1 +#endif /* !defined(H5Tarray_create_vers) */ + +#if !defined(H5Tcommit_vers) +#define H5Tcommit_vers 1 +#endif /* !defined(H5Tcommit_vers) */ + +#if !defined(H5Tget_array_dims_vers) +#define H5Tget_array_dims_vers 1 +#endif /* !defined(H5Tget_array_dims_vers) */ + +#if !defined(H5Topen_vers) +#define H5Topen_vers 1 +#endif /* !defined(H5Topen_vers) */ + +/************/ +/* Typedefs */ +/************/ + +#if !defined(H5E_auto_t_vers) +#define H5E_auto_t_vers 1 +#endif /* !defined(H5E_auto_t_vers) */ + +#if !defined(H5Z_class_t_vers) +#define H5Z_class_t_vers 1 +#endif /* !defined(H5Z_class_t_vers) */ + +#endif /* H5_USE_16_API */ + + +/* Choose the correct version of each API symbol, defaulting to the latest + * version of each. The "best" name for API parameters/data structures + * that have changed definitions is also set. An error is issued for + * specifying an invalid API version. + */ + +/*************/ +/* Functions */ +/*************/ + +#if !defined(H5Acreate_vers) || H5Acreate_vers == 2 +#ifndef H5Acreate_vers +#define H5Acreate_vers 2 +#endif /* H5Acreate_vers */ +#define H5Acreate H5Acreate2 +#elif H5Acreate_vers == 1 +#define H5Acreate H5Acreate1 +#else /* H5Acreate_vers */ +#error "H5Acreate_vers set to invalid value" +#endif /* H5Acreate_vers */ + +#if !defined(H5Aiterate_vers) || H5Aiterate_vers == 2 +#ifndef H5Aiterate_vers +#define H5Aiterate_vers 2 +#endif /* H5Aiterate_vers */ +#define H5Aiterate H5Aiterate2 +#define H5A_operator_t H5A_operator2_t +#elif H5Aiterate_vers == 1 +#define H5Aiterate H5Aiterate1 +#define H5A_operator_t H5A_operator1_t +#else /* H5Aiterate_vers */ +#error "H5Aiterate_vers set to invalid value" +#endif /* H5Aiterate_vers */ + +#if !defined(H5Dcreate_vers) || H5Dcreate_vers == 2 +#ifndef H5Dcreate_vers +#define H5Dcreate_vers 2 +#endif /* H5Dcreate_vers */ +#define H5Dcreate H5Dcreate2 +#elif H5Dcreate_vers == 1 +#define H5Dcreate H5Dcreate1 +#else /* H5Dcreate_vers */ +#error "H5Dcreate_vers set to invalid value" +#endif /* H5Dcreate_vers */ + +#if !defined(H5Dopen_vers) || H5Dopen_vers == 2 +#ifndef H5Dopen_vers +#define H5Dopen_vers 2 +#endif /* H5Dopen_vers */ +#define H5Dopen H5Dopen2 +#elif H5Dopen_vers == 1 +#define H5Dopen H5Dopen1 +#else /* H5Dopen_vers */ +#error "H5Dopen_vers set to invalid value" +#endif /* H5Dopen_vers */ + +#if !defined(H5Eclear_vers) || H5Eclear_vers == 2 +#ifndef H5Eclear_vers +#define H5Eclear_vers 2 +#endif /* H5Eclear_vers */ +#define H5Eclear H5Eclear2 +#elif H5Eclear_vers == 1 +#define H5Eclear H5Eclear1 +#else /* H5Eclear_vers */ +#error "H5Eclear_vers set to invalid value" +#endif /* H5Eclear_vers */ + +#if !defined(H5Eget_auto_vers) || H5Eget_auto_vers == 2 +#ifndef H5Eget_auto_vers +#define H5Eget_auto_vers 2 +#endif /* H5Eget_auto_vers */ +#define H5Eget_auto H5Eget_auto2 +#elif H5Eget_auto_vers == 1 +#define H5Eget_auto H5Eget_auto1 +#else /* H5Eget_auto_vers */ +#error "H5Eget_auto_vers set to invalid value" +#endif /* H5Eget_auto_vers */ + +#if !defined(H5Eprint_vers) || H5Eprint_vers == 2 +#ifndef H5Eprint_vers +#define H5Eprint_vers 2 +#endif /* H5Eprint_vers */ +#define H5Eprint H5Eprint2 +#elif H5Eprint_vers == 1 +#define H5Eprint H5Eprint1 +#else /* H5Eprint_vers */ +#error "H5Eprint_vers set to invalid value" +#endif /* H5Eprint_vers */ + +#if !defined(H5Epush_vers) || H5Epush_vers == 2 +#ifndef H5Epush_vers +#define H5Epush_vers 2 +#endif /* H5Epush_vers */ +#define H5Epush H5Epush2 +#elif H5Epush_vers == 1 +#define H5Epush H5Epush1 +#else /* H5Epush_vers */ +#error "H5Epush_vers set to invalid value" +#endif /* H5Epush_vers */ + +#if !defined(H5Eset_auto_vers) || H5Eset_auto_vers == 2 +#ifndef H5Eset_auto_vers +#define H5Eset_auto_vers 2 +#endif /* H5Eset_auto_vers */ +#define H5Eset_auto H5Eset_auto2 +#elif H5Eset_auto_vers == 1 +#define H5Eset_auto H5Eset_auto1 +#else /* H5Eset_auto_vers */ +#error "H5Eset_auto_vers set to invalid value" +#endif /* H5Eset_auto_vers */ + +#if !defined(H5Ewalk_vers) || H5Ewalk_vers == 2 +#ifndef H5Ewalk_vers +#define H5Ewalk_vers 2 +#endif /* H5Ewalk_vers */ +#define H5Ewalk H5Ewalk2 +#define H5E_error_t H5E_error2_t +#define H5E_walk_t H5E_walk2_t +#elif H5Ewalk_vers == 1 +#define H5Ewalk H5Ewalk1 +#define H5E_error_t H5E_error1_t +#define H5E_walk_t H5E_walk1_t +#else /* H5Ewalk_vers */ +#error "H5Ewalk_vers set to invalid value" +#endif /* H5Ewalk_vers */ + +#if !defined(H5Gcreate_vers) || H5Gcreate_vers == 2 +#ifndef H5Gcreate_vers +#define H5Gcreate_vers 2 +#endif /* H5Gcreate_vers */ +#define H5Gcreate H5Gcreate2 +#elif H5Gcreate_vers == 1 +#define H5Gcreate H5Gcreate1 +#else /* H5Gcreate_vers */ +#error "H5Gcreate_vers set to invalid value" +#endif /* H5Gcreate_vers */ + +#if !defined(H5Gopen_vers) || H5Gopen_vers == 2 +#ifndef H5Gopen_vers +#define H5Gopen_vers 2 +#endif /* H5Gopen_vers */ +#define H5Gopen H5Gopen2 +#elif H5Gopen_vers == 1 +#define H5Gopen H5Gopen1 +#else /* H5Gopen_vers */ +#error "H5Gopen_vers set to invalid value" +#endif /* H5Gopen_vers */ + +#if !defined(H5Pget_filter_vers) || H5Pget_filter_vers == 2 +#ifndef H5Pget_filter_vers +#define H5Pget_filter_vers 2 +#endif /* H5Pget_filter_vers */ +#define H5Pget_filter H5Pget_filter2 +#elif H5Pget_filter_vers == 1 +#define H5Pget_filter H5Pget_filter1 +#else /* H5Pget_filter_vers */ +#error "H5Pget_filter_vers set to invalid value" +#endif /* H5Pget_filter_vers */ + +#if !defined(H5Pget_filter_by_id_vers) || H5Pget_filter_by_id_vers == 2 +#ifndef H5Pget_filter_by_id_vers +#define H5Pget_filter_by_id_vers 2 +#endif /* H5Pget_filter_by_id_vers */ +#define H5Pget_filter_by_id H5Pget_filter_by_id2 +#elif H5Pget_filter_by_id_vers == 1 +#define H5Pget_filter_by_id H5Pget_filter_by_id1 +#else /* H5Pget_filter_by_id_vers */ +#error "H5Pget_filter_by_id_vers set to invalid value" +#endif /* H5Pget_filter_by_id_vers */ + +#if !defined(H5Pinsert_vers) || H5Pinsert_vers == 2 +#ifndef H5Pinsert_vers +#define H5Pinsert_vers 2 +#endif /* H5Pinsert_vers */ +#define H5Pinsert H5Pinsert2 +#elif H5Pinsert_vers == 1 +#define H5Pinsert H5Pinsert1 +#else /* H5Pinsert_vers */ +#error "H5Pinsert_vers set to invalid value" +#endif /* H5Pinsert_vers */ + +#if !defined(H5Pregister_vers) || H5Pregister_vers == 2 +#ifndef H5Pregister_vers +#define H5Pregister_vers 2 +#endif /* H5Pregister_vers */ +#define H5Pregister H5Pregister2 +#elif H5Pregister_vers == 1 +#define H5Pregister H5Pregister1 +#else /* H5Pregister_vers */ +#error "H5Pregister_vers set to invalid value" +#endif /* H5Pregister_vers */ + +#if !defined(H5Rget_obj_type_vers) || H5Rget_obj_type_vers == 2 +#ifndef H5Rget_obj_type_vers +#define H5Rget_obj_type_vers 2 +#endif /* H5Rget_obj_type_vers */ +#define H5Rget_obj_type H5Rget_obj_type2 +#elif H5Rget_obj_type_vers == 1 +#define H5Rget_obj_type H5Rget_obj_type1 +#else /* H5Rget_obj_type_vers */ +#error "H5Rget_obj_type_vers set to invalid value" +#endif /* H5Rget_obj_type_vers */ + +#if !defined(H5Tarray_create_vers) || H5Tarray_create_vers == 2 +#ifndef H5Tarray_create_vers +#define H5Tarray_create_vers 2 +#endif /* H5Tarray_create_vers */ +#define H5Tarray_create H5Tarray_create2 +#elif H5Tarray_create_vers == 1 +#define H5Tarray_create H5Tarray_create1 +#else /* H5Tarray_create_vers */ +#error "H5Tarray_create_vers set to invalid value" +#endif /* H5Tarray_create_vers */ + +#if !defined(H5Tcommit_vers) || H5Tcommit_vers == 2 +#ifndef H5Tcommit_vers +#define H5Tcommit_vers 2 +#endif /* H5Tcommit_vers */ +#define H5Tcommit H5Tcommit2 +#elif H5Tcommit_vers == 1 +#define H5Tcommit H5Tcommit1 +#else /* H5Tcommit_vers */ +#error "H5Tcommit_vers set to invalid value" +#endif /* H5Tcommit_vers */ + +#if !defined(H5Tget_array_dims_vers) || H5Tget_array_dims_vers == 2 +#ifndef H5Tget_array_dims_vers +#define H5Tget_array_dims_vers 2 +#endif /* H5Tget_array_dims_vers */ +#define H5Tget_array_dims H5Tget_array_dims2 +#elif H5Tget_array_dims_vers == 1 +#define H5Tget_array_dims H5Tget_array_dims1 +#else /* H5Tget_array_dims_vers */ +#error "H5Tget_array_dims_vers set to invalid value" +#endif /* H5Tget_array_dims_vers */ + +#if !defined(H5Topen_vers) || H5Topen_vers == 2 +#ifndef H5Topen_vers +#define H5Topen_vers 2 +#endif /* H5Topen_vers */ +#define H5Topen H5Topen2 +#elif H5Topen_vers == 1 +#define H5Topen H5Topen1 +#else /* H5Topen_vers */ +#error "H5Topen_vers set to invalid value" +#endif /* H5Topen_vers */ + +/************/ +/* Typedefs */ +/************/ + +#if !defined(H5E_auto_t_vers) || H5E_auto_t_vers == 2 +#ifndef H5E_auto_t_vers +#define H5E_auto_t_vers 2 +#endif /* H5E_auto_t_vers */ +#define H5E_auto_t H5E_auto2_t +#elif H5E_auto_t_vers == 1 +#define H5E_auto_t H5E_auto1_t +#else /* H5E_auto_t_vers */ +#error "H5E_auto_t_vers set to invalid value" +#endif /* H5E_auto_t_vers */ + + +#if !defined(H5Z_class_t_vers) || H5Z_class_t_vers == 2 +#ifndef H5Z_class_t_vers +#define H5Z_class_t_vers 2 +#endif /* H5Z_class_t_vers */ +#define H5Z_class_t H5Z_class2_t +#elif H5Z_class_t_vers == 1 +#define H5Z_class_t H5Z_class1_t +#else /* H5Z_class_t_vers */ +#error "H5Z_class_t_vers set to invalid value" +#endif /* H5Z_class_t_vers */ + +#endif /* H5version_H */ + diff --git a/Resources/windows-libs/HDF5/include/SZconfig.h b/Resources/windows-libs/HDF5/include/SZconfig.h new file mode 100644 index 0000000000000000000000000000000000000000..6e7766e5ebb212cbcdaf8899340523380d6aeb70 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/SZconfig.h @@ -0,0 +1,79 @@ +/* SZconfig.h.in. */ + +/* Define to 1 if you have the <dlfcn.h> header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +/* #undef HAVE_DOPRNT */ + +/* Define if encoding is enabled */ +#define HAVE_ENCODING 1 + +/* Define to 1 if you have the <fcntl.h> header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the <inttypes.h> header file. */ +/* #undef HAVE_INTTYPES_H */ + +/* Define to 1 if you have the <memory.h> header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +/* #undef HAVE_MEMSET */ + +/* Define to 1 if you have the <stdint.h> header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the <stdlib.h> header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the <strings.h> header file. */ +/* #undef HAVE_STRINGS_H */ + +/* Define to 1 if you have the <string.h> header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the <sys/types.h> header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the <unistd.h> header file. */ +/* #undef HAVE_UNISTD_H */ + +/* Define to 1 if you have the `vprintf' function. */ +/* #undef HAVE_VPRINTF */ + +/* Name of package */ +#define SZIP_PACKAGE "szip" + +/* Define to the address where bug reports for this package should be sent. */ +#define SZIP_PACKAGE_BUGREPORT "help@hdfgroup.org" + +/* Define to the full name of this package. */ +#define SZIP_PACKAGE_NAME "SZIP" + +/* Define to the full name and version of this package. */ +#define SZIP_PACKAGE_STRING "SZIP 2.1" + +/* Define to the one symbol short name of this package. */ +#define SZIP_PACKAGE_TARNAME "szip" + +/* Define to the version of this package. */ +#define SZIP_PACKAGE_VERSION "2.1" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "2.1" + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `unsigned int' if <sys/types.h> does not define. */ +/* #undef size_t */ + +/* Define if cmake is used and building dynamic libraries */ +#define SZ_BUILT_AS_DYNAMIC_LIB 1 diff --git a/Resources/windows-libs/HDF5/include/h5_dble_interface.mod b/Resources/windows-libs/HDF5/include/h5_dble_interface.mod new file mode 100644 index 0000000000000000000000000000000000000000..4e1b9b1d7538c829ffba6327e256f2a18678f0da Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5_dble_interface.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5a.mod b/Resources/windows-libs/HDF5/include/h5a.mod new file mode 100644 index 0000000000000000000000000000000000000000..0aa7f05e4fce1141e777d21bc86a8dc12cfd3def Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5a.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5a_provisional.mod b/Resources/windows-libs/HDF5/include/h5a_provisional.mod new file mode 100644 index 0000000000000000000000000000000000000000..1c2bf82c1279283a5901cea3caf674dcff17d87d Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5a_provisional.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5d.mod b/Resources/windows-libs/HDF5/include/h5d.mod new file mode 100644 index 0000000000000000000000000000000000000000..77303acbca928abd8c673607bf1d224e3a07ef30 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5d.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5d_provisional.mod b/Resources/windows-libs/HDF5/include/h5d_provisional.mod new file mode 100644 index 0000000000000000000000000000000000000000..c0d733d64673c0a863582e144fb37d3ba2f8d121 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5d_provisional.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5diff.h b/Resources/windows-libs/HDF5/include/h5diff.h new file mode 100644 index 0000000000000000000000000000000000000000..04b640f731671232899979d0822d4c5e72f796df --- /dev/null +++ b/Resources/windows-libs/HDF5/include/h5diff.h @@ -0,0 +1,200 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef H5DIFF_H__ +#define H5DIFF_H__ + +#include "hdf5.h" +#include "h5trav.h" + +/* + * Debug printf macros. The prefix allows output filtering by test scripts. + */ +#ifdef H5DIFF_DEBUG +#define h5difftrace(x) HDfprintf(stderr, "h5diff debug: " x) +#define h5diffdebug2(x1, x2) HDfprintf(stderr, "h5diff debug: " x1, x2) +#define h5diffdebug3(x1, x2, x3) HDfprintf(stderr, "h5diff debug: " x1, x2, x3) +#define h5diffdebug4(x1, x2, x3, x4) HDfprintf(stderr, "h5diff debug: " x1, x2, x3, x4) +#define h5diffdebug5(x1, x2, x3, x4, x5) HDfprintf(stderr, "h5diff debug: " x1, x2, x3, x4, x5) +#else +#define h5difftrace(x) +#define h5diffdebug2(x1, x2) +#define h5diffdebug3(x1, x2, x3) +#define h5diffdebug4(x1, x2, x3, x4) +#define h5diffdebug5(x1, x2, x3, x4, x5) +#endif + +#define MAX_FILENAME 1024 + +/*------------------------------------------------------------------------- + * This is used to pass multiple args into diff(). + * Passing this instead of several each arg provides smoother extensibility + * through its members along with MPI code for ph5diff + * as it doesn't require interface change. + *------------------------------------------------------------------------*/ +typedef struct { + h5trav_type_t type[2]; + hbool_t is_same_trgobj; +} diff_args_t; +/*------------------------------------------------------------------------- + * command line options + *------------------------------------------------------------------------- + */ +/* linked list to keep exclude path list */ +struct exclude_path_list { + char *obj_path; + h5trav_type_t obj_type; + struct exclude_path_list * next; +}; + +typedef struct { + int m_quiet; /* quiet mide: no output at all */ + int m_report; /* report mode: print the data */ + int m_verbose; /* verbose mode: print the data, list of objcets, warnings */ + int m_verbose_level; /* control verbose details */ + int d; /* delta, absolute value to compare */ + double delta; /* delta value */ + int p; /* relative error to compare*/ + int use_system_epsilon; /* flag to use system epsilon (1 or 0) */ + double percent; /* relative error value */ + int n; /* count, compare up to count */ + hsize_t count; /* count value */ + hbool_t follow_links; /* follow symbolic links */ + int no_dangle_links; /* return error when find dangling link */ + int err_stat; /* an error ocurred (1, error, 0, no error) */ + int cmn_objs; /* do we have common objects */ + int not_cmp; /* are the objects comparable */ + int contents; /* equal contents */ + int do_nans; /* consider Nans while diffing floats */ + int m_list_not_cmp; /* list not comparable messages */ + int exclude_path; /* exclude path to an object */ + struct exclude_path_list * exclude; /* keep exclude path list */ +} diff_opt_t; + + +/*------------------------------------------------------------------------- + * public functions + *------------------------------------------------------------------------- + */ + +#ifdef __cplusplus +extern "C" { +#endif + +H5TOOLS_DLL hsize_t h5diff(const char *fname1, + const char *fname2, + const char *objname1, + const char *objname2, + diff_opt_t *options); + +H5TOOLS_DLL hsize_t diff( hid_t file1_id, + const char *path1, + hid_t file2_id, + const char *path2, + diff_opt_t *options, + diff_args_t *argdata); + +#ifdef H5_HAVE_PARALLEL +H5TOOLS_DLL void phdiff_dismiss_workers(void); +H5TOOLS_DLL void print_manager_output(void); +#endif + +#ifdef __cplusplus +} +#endif + + + +/*------------------------------------------------------------------------- + * private functions + *------------------------------------------------------------------------- + */ + + +hsize_t diff_dataset( hid_t file1_id, + hid_t file2_id, + const char *obj1_name, + const char *obj2_name, + diff_opt_t *options); + +hsize_t diff_datasetid( hid_t dset1_id, + hid_t dset2_id, + const char *obj1_name, + const char *obj2_name, + diff_opt_t *options); + + +hsize_t diff_match( hid_t file1_id, const char *grp1, trav_info_t *info1, + hid_t file2_id, const char *grp2, trav_info_t *info2, + trav_table_t *table, diff_opt_t *options ); + +hsize_t diff_array( void *_mem1, + void *_mem2, + hsize_t nelmts, + hsize_t hyper_start, + int rank, + hsize_t *dims, + diff_opt_t *options, + const char *name1, + const char *name2, + hid_t m_type, + hid_t container1_id, + hid_t container2_id); /* dataset where the reference came from*/ + + +int diff_can_type( hid_t f_type1, /* file data type */ + hid_t f_type2, /* file data type */ + int rank1, + int rank2, + hsize_t *dims1, + hsize_t *dims2, + hsize_t *maxdim1, + hsize_t *maxdim2, + const char *obj1_name, + const char *obj2_name, + diff_opt_t *options, + int is_compound); + + +hsize_t diff_attr(hid_t loc1_id, + hid_t loc2_id, + const char *path1, + const char *path2, + diff_opt_t *options); + + +/*------------------------------------------------------------------------- + * utility functions + *------------------------------------------------------------------------- + */ + +/* in h5diff_util.c */ +void print_found(hsize_t nfound); +void print_type(hid_t type); +const char* diff_basename(const char *name); +const char* get_type(h5trav_type_t type); +const char* get_class(H5T_class_t tclass); +const char* get_sign(H5T_sign_t sign); +void print_dimensions (int rank, hsize_t *dims); +herr_t match_up_memsize (hid_t f_tid1_id, hid_t f_tid2_id, + hid_t *m_tid1, hid_t *m_tid2, + size_t *m_size1, size_t *m_size2); +/* in h5diff.c */ +int print_objname(diff_opt_t *options, hsize_t nfound); +void do_print_objname (const char *OBJ, const char *path1, const char *path2, diff_opt_t * opts); +void do_print_attrname (const char *attr, const char *path1, const char *path2); + +#endif /* H5DIFF_H__ */ + diff --git a/Resources/windows-libs/HDF5/include/h5ds.mod b/Resources/windows-libs/HDF5/include/h5ds.mod new file mode 100644 index 0000000000000000000000000000000000000000..172462d942aa97760ec0cc90ca35cc785c93d544 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5ds.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5e.mod b/Resources/windows-libs/HDF5/include/h5e.mod new file mode 100644 index 0000000000000000000000000000000000000000..a08fe9e00428119d11ed3f13d7b037a24c6b6cce Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5e.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5e_provisional.mod b/Resources/windows-libs/HDF5/include/h5e_provisional.mod new file mode 100644 index 0000000000000000000000000000000000000000..4d76e2de9db85ef4111861ebdeb8412e52d6f285 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5e_provisional.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5f.mod b/Resources/windows-libs/HDF5/include/h5f.mod new file mode 100644 index 0000000000000000000000000000000000000000..311f2778c17d73828824cb1204b9068dea0ed698 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5f.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5f_provisional.mod b/Resources/windows-libs/HDF5/include/h5f_provisional.mod new file mode 100644 index 0000000000000000000000000000000000000000..9b2251b192673f5c306098492aa0836605bc9bfb Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5f_provisional.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5fortran_types.mod b/Resources/windows-libs/HDF5/include/h5fortran_types.mod new file mode 100644 index 0000000000000000000000000000000000000000..ac331ec02a6761000c424776ad244fbae53f6f5b Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5fortran_types.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5g.mod b/Resources/windows-libs/HDF5/include/h5g.mod new file mode 100644 index 0000000000000000000000000000000000000000..2c88b9c0b6018255c1abf9c91f20d1807a658e66 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5g.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5global.mod b/Resources/windows-libs/HDF5/include/h5global.mod new file mode 100644 index 0000000000000000000000000000000000000000..55494c93b20dba4903073a360b20cbc104543ecc Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5global.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5i.mod b/Resources/windows-libs/HDF5/include/h5i.mod new file mode 100644 index 0000000000000000000000000000000000000000..9c42da8db9acb78a37a4e57eade8f89ec7bd4e65 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5i.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5im.mod b/Resources/windows-libs/HDF5/include/h5im.mod new file mode 100644 index 0000000000000000000000000000000000000000..49b556d6d1a82b1b3c84b072168622cdbcdd76f9 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5im.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5l.mod b/Resources/windows-libs/HDF5/include/h5l.mod new file mode 100644 index 0000000000000000000000000000000000000000..2836de733733352c884d79ae38554ce87e34a417 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5l.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5l_provisional.mod b/Resources/windows-libs/HDF5/include/h5l_provisional.mod new file mode 100644 index 0000000000000000000000000000000000000000..69057fc4724fb4acbebb522b22c35b46716ba902 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5l_provisional.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5lib.mod b/Resources/windows-libs/HDF5/include/h5lib.mod new file mode 100644 index 0000000000000000000000000000000000000000..06774ced6d8257339d2667b072a3a9e86303c156 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5lib.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5lib_provisional.mod b/Resources/windows-libs/HDF5/include/h5lib_provisional.mod new file mode 100644 index 0000000000000000000000000000000000000000..55ee636301db0016f47979a45c70bfb17c2a45fb Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5lib_provisional.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5lt.mod b/Resources/windows-libs/HDF5/include/h5lt.mod new file mode 100644 index 0000000000000000000000000000000000000000..e9a1a4a52cdb76109eaa9d1bac0a408f043b4ae2 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5lt.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5o.mod b/Resources/windows-libs/HDF5/include/h5o.mod new file mode 100644 index 0000000000000000000000000000000000000000..e93932a94a07bd5cb4c910cb5131faf2afcaff3e Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5o.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5o_provisional.mod b/Resources/windows-libs/HDF5/include/h5o_provisional.mod new file mode 100644 index 0000000000000000000000000000000000000000..f9f95654b2a752b78a1ff71ebb901a47703276e9 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5o_provisional.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5p.mod b/Resources/windows-libs/HDF5/include/h5p.mod new file mode 100644 index 0000000000000000000000000000000000000000..f7364ca42ec98ba4686f940c02f22b948832b265 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5p.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5p_provisional.mod b/Resources/windows-libs/HDF5/include/h5p_provisional.mod new file mode 100644 index 0000000000000000000000000000000000000000..cff2c6e5001ae606d7e36c388388179aa94ea428 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5p_provisional.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5r.mod b/Resources/windows-libs/HDF5/include/h5r.mod new file mode 100644 index 0000000000000000000000000000000000000000..f54aaeafdde3c0df3bb8359611a6632c05cc0dfd Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5r.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5r_provisional.mod b/Resources/windows-libs/HDF5/include/h5r_provisional.mod new file mode 100644 index 0000000000000000000000000000000000000000..67364ff2aa4effdb61cb1086a3ca7280502f4779 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5r_provisional.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5s.mod b/Resources/windows-libs/HDF5/include/h5s.mod new file mode 100644 index 0000000000000000000000000000000000000000..20198fc2202697b065fdf1d219e3441689b9a489 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5s.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5t.mod b/Resources/windows-libs/HDF5/include/h5t.mod new file mode 100644 index 0000000000000000000000000000000000000000..b07d198150effcbf9749395dc63f62d9bafa18aa Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5t.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5t_provisional.mod b/Resources/windows-libs/HDF5/include/h5t_provisional.mod new file mode 100644 index 0000000000000000000000000000000000000000..9eea045e554de23364ee78e405b2f10d9fd47751 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5t_provisional.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5tb.mod b/Resources/windows-libs/HDF5/include/h5tb.mod new file mode 100644 index 0000000000000000000000000000000000000000..b2a3d1f88bafab6e59bd3d9f81c414b5f4927733 Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5tb.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5test_kind_sizeof_mod.mod b/Resources/windows-libs/HDF5/include/h5test_kind_sizeof_mod.mod new file mode 100644 index 0000000000000000000000000000000000000000..9fd0b04f5a8d63917a549c28764d014d80a2359f Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5test_kind_sizeof_mod.mod differ diff --git a/Resources/windows-libs/HDF5/include/h5tools.h b/Resources/windows-libs/HDF5/include/h5tools.h new file mode 100644 index 0000000000000000000000000000000000000000..d6c3720b4b61a5afce56f4a95ca6ea5b2c69d883 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/h5tools.h @@ -0,0 +1,598 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke <matzke@llnl.gov> + * Thursday, July 23, 1998 + * + * Purpose: Support functions for the various tools. + */ +#ifndef H5TOOLS_H__ +#define H5TOOLS_H__ + +#include "hdf5.h" +#include "h5tools_error.h" + +#define ESCAPE_HTML 1 +#define OPT(X,S) ((X) ? (X) : (S)) +#define OPTIONAL_LINE_BREAK "\001" /* Special strings embedded in the output */ +#define START_OF_DATA 0x0001 +#define END_OF_DATA 0x0002 + +/* format for hsize_t */ +#define HSIZE_T_FORMAT "%" H5_PRINTF_LL_WIDTH "u" + +#define H5TOOLS_DUMP_MAX_RANK H5S_MAX_RANK + +/* Stream macros */ +#define FLUSHSTREAM(S) if(S != NULL) HDfflush(S) +#define PRINTSTREAM(S, F, ...) if(S != NULL) HDfprintf(S, F, __VA_ARGS__) +#define PRINTVALSTREAM(S, V) if(S != NULL) HDfprintf(S, V) +#define PUTSTREAM(X,S) if(S != NULL) HDfputs(X, S); + +/* + * Strings for output - these were duplicated from the h5dump.h + * file in order to support region reference data display + */ +#define ATTRIBUTE "ATTRIBUTE" +#define BLOCK "BLOCK" +#define SUPER_BLOCK "SUPER_BLOCK" +#define COMPRESSION "COMPRESSION" +#define CONCATENATOR "//" +#define COMPLEX "COMPLEX" +#define COUNT "COUNT" +#define CSET "CSET" +#define CTYPE "CTYPE" +#define DATA "DATA" +#define DATASPACE "DATASPACE" +#define EXTERNAL "EXTERNAL" +#define FILENO "FILENO" +#define HARDLINK "HARDLINK" +#define NLINK "NLINK" +#define OBJID "OBJECTID" +#define OBJNO "OBJNO" +#define S_SCALAR "SCALAR" +#define S_SIMPLE "SIMPLE" +#define S_NULL "NULL" +#define SOFTLINK "SOFTLINK" +#define EXTLINK "EXTERNAL_LINK" +#define UDLINK "USERDEFINED_LINK" +#define START "START" +#define STRIDE "STRIDE" +#define STRSIZE "STRSIZE" +#define STRPAD "STRPAD" +#define SUBSET "SUBSET" +#define FILTERS "FILTERS" +#define DEFLATE "COMPRESSION DEFLATE" +#define DEFLATE_LEVEL "LEVEL" +#define SHUFFLE "PREPROCESSING SHUFFLE" +#define FLETCHER32 "CHECKSUM FLETCHER32" +#define SZIP "COMPRESSION SZIP" +#define NBIT "COMPRESSION NBIT" +#define SCALEOFFSET "COMPRESSION SCALEOFFSET" +#define SCALEOFFSET_MINBIT "MIN BITS" +#define STORAGE_LAYOUT "STORAGE_LAYOUT" +#define CONTIGUOUS "CONTIGUOUS" +#define COMPACT "COMPACT" +#define CHUNKED "CHUNKED" +#define EXTERNAL_FILE "EXTERNAL_FILE" +#define FILLVALUE "FILLVALUE" +#define FILE_CONTENTS "FILE_CONTENTS" +#define PACKED_BITS "PACKED_BITS" +#define PACKED_OFFSET "OFFSET" +#define PACKED_LENGTH "LENGTH" + +#define BEGIN "{" +#define END "}" + +/* + * dump structure for output - this was duplicated from the h5dump.h + * file in order to support region reference data display + */ +typedef struct h5tools_dump_header_t { + const char *name; + const char *filebegin; + const char *fileend; + const char *bootblockbegin; + const char *bootblockend; + const char *groupbegin; + const char *groupend; + const char *datasetbegin; + const char *datasetend; + const char *attributebegin; + const char *attributeend; + const char *datatypebegin; + const char *datatypeend; + const char *dataspacebegin; + const char *dataspaceend; + const char *databegin; + const char *dataend; + const char *softlinkbegin; + const char *softlinkend; + const char *extlinkbegin; + const char *extlinkend; + const char *udlinkbegin; + const char *udlinkend; + const char *subsettingbegin; + const char *subsettingend; + const char *startbegin; + const char *startend; + const char *stridebegin; + const char *strideend; + const char *countbegin; + const char *countend; + const char *blockbegin; + const char *blockend; + + const char *fileblockbegin; + const char *fileblockend; + const char *bootblockblockbegin; + const char *bootblockblockend; + const char *groupblockbegin; + const char *groupblockend; + const char *datasetblockbegin; + const char *datasetblockend; + const char *attributeblockbegin; + const char *attributeblockend; + const char *datatypeblockbegin; + const char *datatypeblockend; + const char *dataspaceblockbegin; + const char *dataspaceblockend; + const char *datablockbegin; + const char *datablockend; + const char *softlinkblockbegin; + const char *softlinkblockend; + const char *extlinkblockbegin; + const char *extlinkblockend; + const char *udlinkblockbegin; + const char *udlinkblockend; + const char *strblockbegin; + const char *strblockend; + const char *enumblockbegin; + const char *enumblockend; + const char *structblockbegin; + const char *structblockend; + const char *vlenblockbegin; + const char *vlenblockend; + const char *subsettingblockbegin; + const char *subsettingblockend; + const char *startblockbegin; + const char *startblockend; + const char *strideblockbegin; + const char *strideblockend; + const char *countblockbegin; + const char *countblockend; + const char *blockblockbegin; + const char *blockblockend; + + const char *dataspacedescriptionbegin; + const char *dataspacedescriptionend; + const char *dataspacedimbegin; + const char *dataspacedimend; + +} h5tools_dump_header_t; + +/* + * Information about how to format output. + */ +typedef struct h5tool_format_t { + /* + * Fields associated with formatting numeric data. If a datatype matches + * multiple formats based on its size, then the first applicable format + * from this list is used. However, if `raw' is non-zero then dump all + * data in hexadecimal format without translating from what appears on + * disk. + * + * raw: If set then print all data as hexadecimal without + * performing any conversion from disk. + * + * fmt_raw: The printf() format for each byte of raw data. The + * default is `%02x'. + * + * fmt_int: The printf() format to use when rendering data which is + * typed `int'. The default is `%d'. + * + * fmt_uint: The printf() format to use when rendering data which is + * typed `unsigned'. The default is `%u'. + * + * fmt_schar: The printf() format to use when rendering data which is + * typed `signed char'. The default is `%d'. This format is + * used ony if the `ascii' field is zero. + * + * fmt_uchar: The printf() format to use when rendering data which is + * typed `unsigned char'. The default is `%u'. This format + * is used only if the `ascii' field is zero. + * + * fmt_short: The printf() format to use when rendering data which is + * typed `short'. The default is `%d'. + * + * fmt_ushort: The printf() format to use when rendering data which is + * typed `unsigned short'. The default is `%u'. + * + * fmt_long: The printf() format to use when rendering data which is + * typed `long'. The default is `%ld'. + * + * fmt_ulong: The printf() format to use when rendering data which is + * typed `unsigned long'. The default is `%lu'. + * + * fmt_llong: The printf() format to use when rendering data which is + * typed `long long'. The default depends on what printf() + * format is available to print this datatype. + * + * fmt_ullong: The printf() format to use when rendering data which is + * typed `unsigned long long'. The default depends on what + * printf() format is available to print this datatype. + * + * fmt_double: The printf() format to use when rendering data which is + * typed `double'. The default is `%g'. + * + * fmt_float: The printf() format to use when rendering data which is + * typed `float'. The default is `%g'. + * + * ascii: If set then print 1-byte integer values as an ASCII + * character (no quotes). If the character is one of the + * standard C escapes then print the escaped version. If + * the character is unprintable then print a 3-digit octal + * escape. If `ascii' is zero then then 1-byte integers are + * printed as numeric values. The default is zero. + * + * str_locale: Determines how strings are printed. If zero then strings + * are printed like in C except. If set to ESCAPE_HTML then + * strings are printed using HTML encoding where each + * character not in the class [a-zA-Z0-9] is substituted + * with `%XX' where `X' is a hexadecimal digit. + * + * str_repeat: If set to non-zero then any character value repeated N + * or more times is printed as 'C'*N + * + * Numeric data is also subject to the formats for individual elements. + */ + hbool_t raw; + const char *fmt_raw; + const char *fmt_int; + const char *fmt_uint; + const char *fmt_schar; + const char *fmt_uchar; + const char *fmt_short; + const char *fmt_ushort; + const char *fmt_long; + const char *fmt_ulong; + const char *fmt_llong; + const char *fmt_ullong; + const char *fmt_double; + const char *fmt_float; + int ascii; + int str_locale; + int str_repeat; + + /* + * Fields associated with compound array members. + * + * pre: A string to print at the beginning of each array. The + * default value is the left square bracket `['. + * + * sep: A string to print between array values. The default + * value is a ",\001" ("\001" indicates an optional line + * break). + * + * suf: A string to print at the end of each array. The default + * value is a right square bracket `]'. + * + * linebreaks: a boolean value to determine if we want to break the line + * after each row of an array. + */ + const char *arr_pre; + const char *arr_sep; + const char *arr_suf; + int arr_linebreak; + + /* + * Fields associated with compound data types. + * + * name: How the name of the struct member is printed in the + * values. By default the name is not printed, but a + * reasonable setting might be "%s=" which prints the name + * followed by an equal sign and then the value. + * + * sep: A string that separates one member from another. The + * default is ", \001" (the \001 indicates an optional + * line break to allow structs to span multiple lines of + * output). + * + * pre: A string to print at the beginning of a compound type. + * The default is a left curly brace. + * + * suf: A string to print at the end of each compound type. The + * default is right curly brace. + * + * end: a string to print after we reach the last element of + * each compound type. prints out before the suf. + */ + const char *cmpd_name; + const char *cmpd_sep; + const char *cmpd_pre; + const char *cmpd_suf; + const char *cmpd_end; + + /* + * Fields associated with vlen data types. + * + * sep: A string that separates one member from another. The + * default is ", \001" (the \001 indicates an optional + * line break to allow structs to span multiple lines of + * output). + * + * pre: A string to print at the beginning of a vlen type. + * The default is a left parentheses. + * + * suf: A string to print at the end of each vlen type. The + * default is a right parentheses. + * + * end: a string to print after we reach the last element of + * each compound type. prints out before the suf. + */ + const char *vlen_sep; + const char *vlen_pre; + const char *vlen_suf; + const char *vlen_end; + + /* + * Fields associated with the individual elements. + * + * fmt: A printf(3c) format to use to print the value string + * after it has been rendered. The default is "%s". + * + * suf1: This string is appended to elements which are followed by + * another element whether the following element is on the + * same line or the next line. The default is a comma. + * + * suf2: This string is appended (after `suf1') to elements which + * are followed on the same line by another element. The + * default is a single space. + */ + const char *elmt_fmt; + const char *elmt_suf1; + const char *elmt_suf2; + + /* + * Fields associated with the index values printed at the left edge of + * each line of output. + * + * n_fmt: Each index value is printed according to this printf(3c) + * format string which should include a format for a long + * integer. The default is "%lu". + * + * sep: Each integer in the index list will be separated from the + * others by this string, which defaults to a comma. + * + * fmt: After the index values are formated individually and + * separated from one another by some string, the entire + * resulting string will be formated according to this + * printf(3c) format which should include a format for a + * character string. The default is "%s". + */ + const char *idx_n_fmt; /*index number format */ + const char *idx_sep; /*separator between numbers */ + const char *idx_fmt; /*entire index format */ + + /* + * Fields associated with entire lines. + * + * ncols: Number of columns per line defaults to 80. + * + * per_line: If this field has a positive value then every Nth element + * will be printed at the beginning of a line. + * + * pre: Each line of output contains an optional prefix area + * before the data. This area can contain the index for the + * first datum (represented by `%s') as well as other + * constant text. The default value is `%s'. + * + * 1st: This is the format to print at the beginning of the first + * line of output. The default value is the current value of + * `pre' described above. + * + * cont: This is the format to print at the beginning of each line + * which was continued because the line was split onto + * multiple lines. This often happens with compound + * data which is longer than one line of output. The default + * value is the current value of the `pre' field + * described above. + * + * suf: This character string will be appended to each line of + * output. It should not contain line feeds. The default + * is the empty string. + * + * sep: A character string to be printed after every line feed + * defaulting to the empty string. It should end with a + * line feed. + * + * multi_new: Indicates the algorithm to use when data elements tend to + * occupy more than one line of output. The possible values + * are (zero is the default): + * + * 0: No consideration. Each new element is printed + * beginning where the previous element ended. + * + * 1: Print the current element beginning where the + * previous element left off. But if that would result + * in the element occupying more than one line and it + * would only occupy one line if it started at the + * beginning of a line, then it is printed at the + * beginning of the next line. + * + * multi_new: If an element is continued onto additional lines then + * should the following element begin on the next line? The + * default is to start the next element on the same line + * unless it wouldn't fit. + * + * indentlevel: a string that shows how far to indent if extra spacing + * is needed. dumper uses it. + */ + unsigned line_ncols; /*columns of output */ + size_t line_per_line; /*max elements per line */ + const char *line_pre; /*prefix at front of each line */ + const char *line_1st; /*alternate pre. on first line */ + const char *line_cont; /*alternate pre. on continuation*/ + const char *line_suf; /*string to append to each line */ + const char *line_sep; /*separates lines */ + int line_multi_new; /*split multi-line outputs? */ + const char *line_indent; /*for extra identation if we need it*/ + + /*used to skip the first set of checks for line length*/ + int skip_first; + + /*flag used to hide or show the file number for obj refs*/ + int obj_hidefileno; + + /*string used to format the output for the obje refs*/ + const char *obj_format; + + /*flag used to hide or show the file number for dataset regions*/ + int dset_hidefileno; + + /*string used to format the output for the dataset regions*/ + const char *dset_format; + + const char *dset_blockformat_pre; + const char *dset_ptformat_pre; + const char *dset_ptformat; + + /*print array indices in output matrix */ + int pindex; + + /*escape non printable characters */ + int do_escape; + +} h5tool_format_t; + +typedef struct h5tools_context_t { + size_t cur_column; /*current column for output */ + size_t cur_elmt; /*current element/output line */ + int need_prefix; /*is line prefix needed? */ + unsigned ndims; /*dimensionality */ + hsize_t p_min_idx[H5S_MAX_RANK]; /*min selected index */ + hsize_t p_max_idx[H5S_MAX_RANK]; /*max selected index */ + int prev_multiline; /*was prev datum multiline? */ + size_t prev_prefix_len; /*length of previous prefix */ + int continuation; /*continuation of previous data?*/ + hsize_t size_last_dim; /*the size of the last dimension, + *needed so we can break after each + *row */ + int indent_level; /*the number of times we need some + *extra indentation */ + int default_indent_level; /*this is used when the indent level gets changed */ + hsize_t acc[H5S_MAX_RANK]; /* accumulator position */ + hsize_t pos[H5S_MAX_RANK]; /* matrix position */ + hsize_t sm_pos; /* current stripmine element position */ +} h5tools_context_t; + +typedef struct subset_d { + hsize_t *data; + unsigned int len; +} subset_d; + +/* a structure to hold the subsetting particulars for a dataset */ +struct subset_t { + subset_d start; + subset_d stride; + subset_d count; + subset_d block; +}; + +/* The following include, h5tools_str.h, must be after the + * above stucts are defined. There is a dependency in the following + * include that hasn't been identified yet. */ + +#include "h5tools_str.h" + +H5TOOLS_DLLVAR h5tool_format_t h5tools_dataformat; +H5TOOLS_DLLVAR const h5tools_dump_header_t h5tools_standardformat; +H5TOOLS_DLLVAR const h5tools_dump_header_t* h5tools_dump_header_format; + +#ifdef __cplusplus +extern "C" { +#endif + +H5TOOLS_DLLVAR int packed_bits_num; /* number of packed bits to display */ +H5TOOLS_DLLVAR int packed_data_offset; /* offset of packed bits to display */ +H5TOOLS_DLLVAR int packed_data_length; /* lengtht of packed bits to display */ +H5TOOLS_DLLVAR unsigned long long packed_data_mask; /* mask in which packed bits to display */ +H5TOOLS_DLLVAR FILE *rawattrstream; /* output stream for raw attribute data */ +H5TOOLS_DLLVAR FILE *rawdatastream; /* output stream for raw data */ +H5TOOLS_DLLVAR FILE *rawinstream; /* input stream for raw input */ +H5TOOLS_DLLVAR FILE *rawoutstream; /* output stream for raw output */ +H5TOOLS_DLLVAR FILE *rawerrorstream; /* output stream for raw error */ +H5TOOLS_DLLVAR int bin_output; /* binary output */ +H5TOOLS_DLLVAR int bin_form; /* binary form */ +H5TOOLS_DLLVAR int region_output; /* region output */ +H5TOOLS_DLLVAR int oid_output; /* oid output */ +H5TOOLS_DLLVAR int data_output; /* data output */ +H5TOOLS_DLLVAR int attr_data_output; /* attribute data output */ + +/* Strings for output */ +#define H5_TOOLS_GROUP "GROUP" +#define H5_TOOLS_DATASET "DATASET" +#define H5_TOOLS_DATATYPE "DATATYPE" + +/* Definitions of useful routines */ +H5TOOLS_DLL void h5tools_init(void); +H5TOOLS_DLL void h5tools_close(void); +H5TOOLS_DLL int h5tools_set_data_output_file(const char *fname, int is_bin); +H5TOOLS_DLL int h5tools_set_attr_output_file(const char *fname, int is_bin); +H5TOOLS_DLL int h5tools_set_input_file(const char *fname, int is_bin); +H5TOOLS_DLL int h5tools_set_output_file(const char *fname, int is_bin); +H5TOOLS_DLL int h5tools_set_error_file(const char *fname, int is_bin); +H5TOOLS_DLL hid_t h5tools_fopen(const char *fname, unsigned flags, hid_t fapl, + const char *driver, char *drivername, size_t drivername_len); +H5TOOLS_DLL hid_t h5tools_get_native_type(hid_t type); +H5TOOLS_DLL hid_t h5tools_get_little_endian_type(hid_t type); +H5TOOLS_DLL hid_t h5tools_get_big_endian_type(hid_t type); +H5TOOLS_DLL htri_t h5tools_detect_vlen(hid_t tid); +H5TOOLS_DLL htri_t h5tools_detect_vlen_str(hid_t tid); +H5TOOLS_DLL hbool_t h5tools_is_obj_same(hid_t loc_id1, const char *name1, hid_t loc_id2, const char *name2); +H5TOOLS_DLL void init_acc_pos(h5tools_context_t *ctx, hsize_t *dims); +H5TOOLS_DLL hbool_t h5tools_is_zero(const void *_mem, size_t size); +H5TOOLS_DLL int h5tools_canreadf(const char* name, hid_t dcpl_id); +H5TOOLS_DLL int h5tools_can_encode(H5Z_filter_t filtn); + +H5TOOLS_DLL void h5tools_simple_prefix(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx, hsize_t elmtno, int secnum); +H5TOOLS_DLL void h5tools_region_simple_prefix(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx, hsize_t elmtno, hsize_t *ptdata, int secnum); + +H5TOOLS_DLL int render_bin_output(FILE *stream, hid_t container, hid_t tid, void *_mem, hsize_t nelmts); +H5TOOLS_DLL hbool_t render_bin_output_region_blocks(hid_t region_space, hid_t region_id, + FILE *stream, hid_t container); +H5TOOLS_DLL hbool_t render_bin_output_region_points(hid_t region_space, hid_t region_id, + FILE *stream, hid_t container); + +H5TOOLS_DLL hbool_t h5tools_render_element(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx, h5tools_str_t *buffer, hsize_t *curr_pos, + size_t ncols, hsize_t local_elmt_counter, hsize_t elmt_counter); +H5TOOLS_DLL hbool_t h5tools_render_region_element(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx/*in,out*/, + h5tools_str_t *buffer/*string into which to render */, + hsize_t *curr_pos/*total data element position*/, + size_t ncols, hsize_t *ptdata, + hsize_t local_elmt_counter/*element counter*/, + hsize_t elmt_counter); + +#ifdef __cplusplus +} +#endif + +#endif /* H5TOOLS_H__ */ + diff --git a/Resources/windows-libs/HDF5/include/h5tools_dump.h b/Resources/windows-libs/HDF5/include/h5tools_dump.h new file mode 100644 index 0000000000000000000000000000000000000000..061a3db4037ff09751476311929063df3d8dded9 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/h5tools_dump.h @@ -0,0 +1,84 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Purpose: Support h5dump functions for the various tools. + */ +#ifndef H5TOOLS_DUMP_H__ +#define H5TOOLS_DUMP_H__ + +#include "h5tools_utils.h" + +/* 3 private values: can't be set, but can be read. + Note: these are defined in H5Zprivate, they are + duplicated here. + */ +#define H5_SZIP_LSB_OPTION_MASK 8 +#define H5_SZIP_MSB_OPTION_MASK 16 +#define H5_SZIP_RAW_OPTION_MASK 128 + +#ifdef __cplusplus +extern "C" { +#endif + +H5TOOLS_DLLVAR table_t *h5dump_type_table; /*type table reference for datatype dump */ + +/* Definitions of useful routines */ +H5TOOLS_DLL void h5tools_dump_init(void); + +H5TOOLS_DLL int h5tools_dump_dset(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx/*in,out*/, hid_t dset, + hid_t p_typ, struct subset_t *sset); +H5TOOLS_DLL int h5tools_dump_mem(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx/*in,out*/, hid_t obj_id, + hid_t type, hid_t space, void *mem); +H5TOOLS_DLL int h5tools_dump_simple_data(FILE *stream, const h5tool_format_t *info, hid_t container, + h5tools_context_t *ctx/*in,out*/, unsigned flags, + hsize_t nelmts, hid_t type, void *_mem); +H5TOOLS_DLL void h5tools_dump_datatype(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx/*in,out*/, hid_t type); +H5TOOLS_DLL void h5tools_dump_dataspace(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx/*in,out*/, hid_t space); +H5TOOLS_DLL void h5tools_dump_attribute(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx/*in,out*/, const char *attr_name, + hid_t attr_id, int display_index, int display_char); +H5TOOLS_DLL void h5tools_dump_oid(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx/*in,out*/, hid_t oid); +H5TOOLS_DLL void h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx/*in,out*/, hid_t dcpl, hid_t type_id, hid_t obj_id); +H5TOOLS_DLL void h5tools_dump_comment(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx/*in,out*/, hid_t obj_id); +H5TOOLS_DLL void h5tools_dump_data(FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx, hid_t obj_id, + int obj_data, struct subset_t *sset, int display_index, int display_char); + +H5TOOLS_DLL int h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer/*in,out*/, + const h5tool_format_t *info, h5tools_context_t *ctx/*in,out*/, + hid_t type, int object_search); +H5TOOLS_DLL int h5tools_print_dataspace(h5tools_str_t *buffer/*in,out*/, + hid_t space); +H5TOOLS_DLL int h5tools_print_enum(FILE *stream, h5tools_str_t *buffer/*in,out*/, + const h5tool_format_t *info, h5tools_context_t *ctx/*in,out*/, + hid_t type); +H5TOOLS_DLL void h5tools_print_fill_value(h5tools_str_t *buffer/*in,out*/, + const h5tool_format_t *info, h5tools_context_t *ctx/*in,out*/, + hid_t dcpl, hid_t type_id, hid_t obj_id); +H5TOOLS_DLL void h5tools_print_packed_bits(h5tools_str_t *buffer/*in,out*/, hid_t type); +#ifdef __cplusplus +} +#endif + +#endif /* H5TOOLS_DUMP_H__ */ + diff --git a/Resources/windows-libs/HDF5/include/h5tools_ref.h b/Resources/windows-libs/HDF5/include/h5tools_ref.h new file mode 100644 index 0000000000000000000000000000000000000000..7ddb91ae32aeefd2d05b4cb6c19f5eff0dcbb20a --- /dev/null +++ b/Resources/windows-libs/HDF5/include/h5tools_ref.h @@ -0,0 +1,38 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef H5TOOLS_REF_H__ +#define H5TOOLS_REF_H__ + +#include "hdf5.h" + +#ifdef __cplusplus +extern "C" { +#endif + +H5TOOLS_DLL herr_t fill_ref_path_table(hid_t fid); +H5TOOLS_DLL const char *lookup_ref_path(haddr_t ref); +H5TOOLS_DLL int get_next_xid(void); +H5TOOLS_DLL haddr_t get_fake_xid(void); +H5TOOLS_DLL haddr_t ref_path_table_lookup(const char *); +H5TOOLS_DLL haddr_t ref_path_table_gen_fake(const char *); +H5TOOLS_DLL int term_ref_path_table(void); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Resources/windows-libs/HDF5/include/h5tools_str.h b/Resources/windows-libs/HDF5/include/h5tools_str.h new file mode 100644 index 0000000000000000000000000000000000000000..38697c6a622fca47b815ffb617331e9fec3e82e7 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/h5tools_str.h @@ -0,0 +1,53 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Bill Wendling <wendling@ncsa.uiuc.edu> + * Monday, 19. February 2001 + */ +#ifndef H5TOOLS_STR_H__ +#define H5TOOLS_STR_H__ + +typedef struct h5tools_str_t { + char *s; /*allocate string */ + size_t len; /*length of actual value */ + size_t nalloc; /*allocated size of string */ +} h5tools_str_t; + +H5TOOLS_DLL void h5tools_str_close(h5tools_str_t *str); +H5TOOLS_DLL size_t h5tools_str_len(h5tools_str_t *str); +H5TOOLS_DLL char *h5tools_str_append(h5tools_str_t *str, const char *fmt, ...); +H5TOOLS_DLL char *h5tools_str_reset(h5tools_str_t *str); +H5TOOLS_DLL char *h5tools_str_trunc(h5tools_str_t *str, size_t size); +H5TOOLS_DLL char *h5tools_str_fmt(h5tools_str_t *str, size_t start, const char *fmt); +H5TOOLS_DLL char *h5tools_str_prefix(h5tools_str_t *str, const h5tool_format_t *info, + hsize_t elmtno, unsigned ndims, h5tools_context_t *ctx); +/* + * new functions needed to display region reference data + */ +H5TOOLS_DLL char *h5tools_str_region_prefix(h5tools_str_t *str, const h5tool_format_t *info, + hsize_t elmtno, hsize_t *ptdata, unsigned ndims, + hsize_t max_idx[], h5tools_context_t *ctx); +H5TOOLS_DLL void h5tools_str_dump_region_blocks(h5tools_str_t *, hid_t, const h5tool_format_t *); +H5TOOLS_DLL void h5tools_str_dump_region_points(h5tools_str_t *, hid_t, const h5tool_format_t *); +H5TOOLS_DLL void h5tools_str_sprint_region(h5tools_str_t *str, const h5tool_format_t *info, hid_t container, + void *vp); +H5TOOLS_DLL char *h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, + hid_t container, hid_t type, void *vp, + h5tools_context_t *ctx); +H5TOOLS_DLL char *h5tools_str_replace ( const char *string, const char *substr, + const char *replacement ); + +#endif /* H5TOOLS_STR_H__ */ diff --git a/Resources/windows-libs/HDF5/include/h5tools_utils.h b/Resources/windows-libs/HDF5/include/h5tools_utils.h new file mode 100644 index 0000000000000000000000000000000000000000..3285278beabae8d28ef4884af9cb7a38ddcc553e --- /dev/null +++ b/Resources/windows-libs/HDF5/include/h5tools_utils.h @@ -0,0 +1,183 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Bill Wendling <wendling@ncsa.uiuc.edu> + * Tuesday, 6. March 2001 + * + * Purpose: Support functions for the various tools. + */ +#ifndef H5TOOLS_UTILS_H__ +#define H5TOOLS_UTILS_H__ + +#include "hdf5.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ``parallel_print'' information */ +#define PRINT_DATA_MAX_SIZE 512 +#define OUTBUFF_SIZE (PRINT_DATA_MAX_SIZE*4) + +H5TOOLS_DLLVAR int g_nTasks; +H5TOOLS_DLLVAR unsigned char g_Parallel; +H5TOOLS_DLLVAR char outBuff[]; +H5TOOLS_DLLVAR int outBuffOffset; +H5TOOLS_DLLVAR FILE * overflow_file; + +/* Maximum size used in a call to malloc for a dataset */ +H5TOOLS_DLLVAR hsize_t H5TOOLS_MALLOCSIZE; +/* size of hyperslab buffer when a dataset is bigger than H5TOOLS_MALLOCSIZE */ +H5TOOLS_DLLVAR hsize_t H5TOOLS_BUFSIZE; +/* + * begin get_option section + */ +H5TOOLS_DLLVAR int opt_err; /* getoption prints errors if this is on */ +H5TOOLS_DLLVAR int opt_ind; /* token pointer */ +H5TOOLS_DLLVAR const char *opt_arg; /* flag argument (or value) */ + +enum { + no_arg = 0, /* doesn't take an argument */ + require_arg, /* requires an argument */ + optional_arg /* argument is optional */ +}; + +/* + * get_option determines which options are specified on the command line and + * returns a pointer to any arguments possibly associated with the option in + * the ``opt_arg'' variable. get_option returns the shortname equivalent of + * the option. The long options are specified in the following way: + * + * struct long_options foo[] = { + * { "filename", require_arg, 'f' }, + * { "append", no_arg, 'a' }, + * { "width", require_arg, 'w' }, + * { NULL, 0, 0 } + * }; + * + * Long named options can have arguments specified as either: + * + * ``--param=arg'' or ``--param arg'' + * + * Short named options can have arguments specified as either: + * + * ``-w80'' or ``-w 80'' + * + * and can have more than one short named option specified at one time: + * + * -aw80 + * + * in which case those options which expect an argument need to come at the + * end. + */ +typedef struct long_options { + const char *name; /* name of the long option */ + int has_arg; /* whether we should look for an arg */ + char shortval; /* the shortname equivalent of long arg + * this gets returned from get_option */ +} long_options; + +H5TOOLS_DLL int get_option(int argc, const char **argv, const char *opt, + const struct long_options *l_opt); +/* + * end get_option section + */ + +/*struct taken from the dumper. needed in table struct*/ +typedef struct obj_t { + haddr_t objno; + char *objname; + hbool_t displayed; /* Flag to indicate that the object has been displayed */ + hbool_t recorded; /* Flag for named datatypes to indicate they were found in the group hierarchy */ +} obj_t; + +/*struct for the tables that the find_objs function uses*/ +typedef struct table_t { + size_t size; + size_t nobjs; + obj_t *objs; +} table_t; + +/*this struct stores the information that is passed to the find_objs function*/ +typedef struct find_objs_t { + hid_t fid; + table_t *group_table; + table_t *type_table; + table_t *dset_table; +} find_objs_t; + +H5TOOLS_DLLVAR int h5tools_nCols; /*max number of columns for outputting */ + +/* Definitions of useful routines */ +H5TOOLS_DLL void indentation(int); +H5TOOLS_DLL void print_version(const char *progname); +H5TOOLS_DLL void parallel_print(const char* format, ... ); +H5TOOLS_DLL void error_msg(const char *fmt, ...); +H5TOOLS_DLL void warn_msg(const char *fmt, ...); +H5TOOLS_DLL void help_ref_msg(FILE *output); +H5TOOLS_DLL void free_table(table_t *table); +#ifdef H5DUMP_DEBUG +H5TOOLS_DLL void dump_tables(find_objs_t *info) +#endif /* H5DUMP_DEBUG */ +H5TOOLS_DLL herr_t init_objs(hid_t fid, find_objs_t *info, table_t **group_table, + table_t **dset_table, table_t **type_table); +H5TOOLS_DLL obj_t *search_obj(table_t *temp, haddr_t objno); +#ifndef H5_HAVE_TMPFILE +H5TOOLS_DLL FILE * tmpfile(void); +#endif + +/************************************************************* + * + * candidate functions to be public + * + *************************************************************/ + +/* This code is layout for common code among tools */ +typedef enum toolname_t { + TOOL_H5DIFF, TOOL_H5LS, TOOL__H5DUMP /* add as necessary */ +} h5tool_toolname_t; + +/* this struct can be used to differntiate among tools */ +typedef struct { + h5tool_toolname_t toolname; + int msg_mode; +} h5tool_opt_t; + +/* obtain link info from H5tools_get_symlink_info() */ +typedef struct { + H5O_type_t trg_type; /* OUT: target type */ + char *trg_path; /* OUT: target obj path. This must be freed + * when used with H5tools_get_symlink_info() */ + haddr_t objno; /* OUT: target object address */ + unsigned long fileno; /* OUT: File number that target object is located in */ + H5L_info_t linfo; /* OUT: link info */ + h5tool_opt_t opt; /* IN: options */ +} h5tool_link_info_t; + + +/* Definitions of routines */ +H5TOOLS_DLL int H5tools_get_symlink_info(hid_t file_id, const char * linkpath, + h5tool_link_info_t *link_info, hbool_t get_obj_type); +H5TOOLS_DLL const char *h5tools_getprogname(void); +H5TOOLS_DLL void h5tools_setprogname(const char*progname); +H5TOOLS_DLL int h5tools_getstatus(void); +H5TOOLS_DLL void h5tools_setstatus(int d_status); +H5TOOLS_DLL int h5tools_getenv_update_hyperslab_bufsize(void); +#ifdef __cplusplus +} +#endif + +#endif /* H5TOOLS_UTILS_H__ */ diff --git a/Resources/windows-libs/HDF5/include/h5trav.h b/Resources/windows-libs/HDF5/include/h5trav.h new file mode 100644 index 0000000000000000000000000000000000000000..352a9e537737635b73dd9533bca5f6d13c1e7aec --- /dev/null +++ b/Resources/windows-libs/HDF5/include/h5trav.h @@ -0,0 +1,199 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef H5TRAV_H__ +#define H5TRAV_H__ + +#include "hdf5.h" + +/* Typedefs for visiting objects */ +typedef herr_t (*h5trav_obj_func_t)(const char *path_name, const H5O_info_t *oinfo, + const char *first_seen, void *udata); +typedef herr_t (*h5trav_lnk_func_t)(const char *path_name, const H5L_info_t *linfo, + void *udata); + +/*------------------------------------------------------------------------- + * public enum to specify type of an object + * the TYPE can be: + * H5TRAV_TYPE_UNKNOWN = -1, + * H5TRAV_TYPE_GROUP, Object is a group + * H5TRAV_TYPE_DATASET, Object is a dataset + * H5TRAV_TYPE_TYPE, Object is a named datatype + * H5TRAV_TYPE_LINK, Object is a symbolic link + * H5TRAV_TYPE_UDLINK, Object is a user-defined link + *------------------------------------------------------------------------- + */ +typedef enum { + H5TRAV_TYPE_UNKNOWN = -1, /* Unknown object type */ + H5TRAV_TYPE_GROUP, /* Object is a group */ + H5TRAV_TYPE_DATASET, /* Object is a dataset */ + H5TRAV_TYPE_NAMED_DATATYPE, /* Object is a named datatype */ + H5TRAV_TYPE_LINK, /* Object is a symbolic link */ + H5TRAV_TYPE_UDLINK /* Object is a user-defined link */ +} h5trav_type_t; + +/*------------------------------------------------------------------------- + * public struct to store name and type of an object + *------------------------------------------------------------------------- + */ +/* Struct to keep track of symbolic link targets visited. + * Functions: symlink_visit_add() and symlink_is_visited() + */ +typedef struct symlink_trav_path_t { + H5L_type_t type; + char *file; + char *path; +} symlink_trav_path_t; + +typedef struct symlink_trav_t { + size_t nalloc; + size_t nused; + symlink_trav_path_t *objs; + hbool_t dangle_link; +} symlink_trav_t; + +typedef struct trav_path_t { + char *path; + h5trav_type_t type; + haddr_t objno; /* object address */ + unsigned long fileno; /* File number that object is located in */ +} trav_path_t; + +typedef struct trav_info_t { + size_t nalloc; + size_t nused; + const char *fname; + hid_t fid; /* File ID */ + trav_path_t *paths; + symlink_trav_t symlink_visited; /* already visited symbolic links */ + void * opts; /* optional data passing */ +} trav_info_t; + + +/*------------------------------------------------------------------------- + * keep record of hard link information + *------------------------------------------------------------------------- + */ +typedef struct trav_link_t { + char *new_name; +} trav_link_t; + + +/*------------------------------------------------------------------------- + * struct to store basic info needed for the h5trav table traversal algorythm + *------------------------------------------------------------------------- + */ + +typedef struct trav_obj_t { + haddr_t objno; /* object address */ + unsigned flags[2]; /* h5diff.object is present or not in both files*/ + hbool_t is_same_trgobj; /* same target object? no need to compare */ + char *name; /* name */ + h5trav_type_t type; /* type of object */ + trav_link_t *links; /* array of possible link names */ + size_t sizelinks; /* size of links array */ + size_t nlinks; /* number of links */ +} trav_obj_t; + + +/*------------------------------------------------------------------------- + * private struct that stores all objects + *------------------------------------------------------------------------- + */ + +typedef struct trav_table_t { + size_t size; + size_t nobjs; + trav_obj_t *objs; +} trav_table_t; + + +/*------------------------------------------------------------------------- + * public functions + *------------------------------------------------------------------------- + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/*------------------------------------------------------------------------- + * "h5trav general" public functions + *------------------------------------------------------------------------- + */ +H5TOOLS_DLL void h5trav_set_index(H5_index_t print_index_by, H5_iter_order_t print_index_order); +H5TOOLS_DLL int h5trav_visit(hid_t file_id, const char *grp_name, + hbool_t visit_start, hbool_t recurse, h5trav_obj_func_t visit_obj, + h5trav_lnk_func_t visit_lnk, void *udata); +H5TOOLS_DLL herr_t symlink_visit_add(symlink_trav_t *visited, H5L_type_t type, const char *file, const char *path); +H5TOOLS_DLL hbool_t symlink_is_visited(symlink_trav_t *visited, H5L_type_t type, const char *file, const char *path); + +/*------------------------------------------------------------------------- + * "h5trav info" public functions + *------------------------------------------------------------------------- + */ +H5TOOLS_DLL int h5trav_getinfo(hid_t file_id, trav_info_t *info); +H5TOOLS_DLL ssize_t h5trav_getindex(const trav_info_t *info, const char *obj); +H5TOOLS_DLL int trav_info_visit_obj (const char *path, const H5O_info_t *oinfo, const char *already_visited, void *udata); +H5TOOLS_DLL int trav_info_visit_lnk (const char *path, const H5L_info_t *linfo, void *udata); + +/*------------------------------------------------------------------------- + * "h5trav table" public functions + *------------------------------------------------------------------------- + */ + +H5TOOLS_DLL int h5trav_gettable(hid_t fid, trav_table_t *travt); +H5TOOLS_DLL int h5trav_getindext(const char *obj, const trav_table_t *travt); + +/*------------------------------------------------------------------------- + * "h5trav print" public functions + *------------------------------------------------------------------------- + */ +H5TOOLS_DLL int h5trav_print(hid_t fid); +H5TOOLS_DLL void h5trav_set_verbose(int print_verbose); + +#ifdef __cplusplus +} +#endif + +/*------------------------------------------------------------------------- + * info private functions + *------------------------------------------------------------------------- + */ + +H5TOOLS_DLL void trav_info_init(const char *filename, hid_t fileid, trav_info_t **info); + +H5TOOLS_DLL void trav_info_free(trav_info_t *info); + +H5TOOLS_DLL void trav_info_add(trav_info_t *info, const char *path, h5trav_type_t obj_type); + +H5TOOLS_DLL void trav_fileinfo_add(trav_info_t *info, hid_t loc_id); + +/*------------------------------------------------------------------------- + * table private functions + *------------------------------------------------------------------------- + */ + +H5TOOLS_DLL void trav_table_init(trav_table_t **table); + +H5TOOLS_DLL void trav_table_free(trav_table_t *table); + +H5TOOLS_DLL void trav_table_addflags(unsigned *flags, + char *objname, + h5trav_type_t type, + trav_table_t *table); + +#endif /* H5TRAV_H__ */ + diff --git a/Resources/windows-libs/HDF5/include/h5z.mod b/Resources/windows-libs/HDF5/include/h5z.mod new file mode 100644 index 0000000000000000000000000000000000000000..0a2e2be019978a16677086453c22782e10c3c80c Binary files /dev/null and b/Resources/windows-libs/HDF5/include/h5z.mod differ diff --git a/Resources/windows-libs/HDF5/include/hdf5.h b/Resources/windows-libs/HDF5/include/hdf5.h new file mode 100644 index 0000000000000000000000000000000000000000..ef150630f5f6fa8982267b531b9bbaab57104acd --- /dev/null +++ b/Resources/windows-libs/HDF5/include/hdf5.h @@ -0,0 +1,55 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This is the main public HDF5 include file. Put further information in + * a particular header file and include that here, don't fill this file with + * lots of gunk... + */ +#ifndef _HDF5_H +#define _HDF5_H + +#include "H5public.h" +#include "H5Apublic.h" /* Attributes */ +#include "H5ACpublic.h" /* Metadata cache */ +#include "H5Dpublic.h" /* Datasets */ +#include "H5Epublic.h" /* Errors */ +#include "H5Fpublic.h" /* Files */ +#include "H5FDpublic.h" /* File drivers */ +#include "H5Gpublic.h" /* Groups */ +#include "H5Ipublic.h" /* ID management */ +#include "H5Lpublic.h" /* Links */ +#include "H5MMpublic.h" /* Memory management */ +#include "H5Opublic.h" /* Object headers */ +#include "H5Ppublic.h" /* Property lists */ +#include "H5Rpublic.h" /* References */ +#include "H5Spublic.h" /* Dataspaces */ +#include "H5Tpublic.h" /* Datatypes */ +#include "H5Zpublic.h" /* Data filters */ + +/* Predefined file drivers */ +#include "H5FDcore.h" /* Files stored entirely in memory */ +#include "H5FDfamily.h" /* File families */ +#include "H5FDlog.h" /* sec2 driver with I/O logging (for debugging) */ +#include "H5FDmpi.h" /* MPI-based file drivers */ +#include "H5FDmulti.h" /* Usage-partitioned file family */ +#include "H5FDsec2.h" /* POSIX unbuffered file I/O */ +#include "H5FDstdio.h" /* Standard C buffered I/O */ +#ifdef H5_HAVE_WINDOWS +#include "H5FDwindows.h" /* Windows buffered I/O */ +#endif +#include "H5FDdirect.h" /* Linux direct I/O */ + +#endif diff --git a/Resources/windows-libs/HDF5/include/hdf5.mod b/Resources/windows-libs/HDF5/include/hdf5.mod new file mode 100644 index 0000000000000000000000000000000000000000..9c084d066732f27deb19f9dd5825c02aebbd9f3f Binary files /dev/null and b/Resources/windows-libs/HDF5/include/hdf5.mod differ diff --git a/Resources/windows-libs/HDF5/include/hdf5_hl.h b/Resources/windows-libs/HDF5/include/hdf5_hl.h new file mode 100644 index 0000000000000000000000000000000000000000..46439324e1c2b7b9ff7bd5d4bae3473bc032bbc5 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/hdf5_hl.h @@ -0,0 +1,33 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This is the main public HDF5 High Level include file. Put further + * information in a particular header file and include that here, don't + * fill this file with lots of gunk... + */ + +#ifndef _HDF5_HL_H +#define _HDF5_HL_H + +#include "H5DOpublic.h" /* dataset optimization */ +#include "H5DSpublic.h" /* dimension scales */ +#include "H5LTpublic.h" /* lite */ +#include "H5IMpublic.h" /* image */ +#include "H5TBpublic.h" /* table */ +#include "H5PTpublic.h" /* table */ + +#endif /*H5_INCLUDE_HL*/ + diff --git a/Resources/windows-libs/HDF5/include/ricehdf.h b/Resources/windows-libs/HDF5/include/ricehdf.h new file mode 100644 index 0000000000000000000000000000000000000000..c1be7a20fa4b1790cd7f64467f854f64de8a6b68 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/ricehdf.h @@ -0,0 +1,86 @@ +/*============================================================================== +The SZIP Science Data Lossless Compression Program is Copyright (C) 2001 Science +& Technology Corporation @ UNM. All rights released. Copyright (C) 2003 Lowell +H. Miles and Jack A. Venbrux. Licensed to ICs Corp. for distribution by the +University of Illinois' National Center for Supercomputing Applications as a +part of the HDF data storage and retrieval file format and software library +products package. All rights reserved. Do not modify or use for other +purposes. + +SZIP implements an extended Rice adaptive lossless compression algorithm +for sample data. The primary algorithm was developed by R. F. Rice at +Jet Propulsion Laboratory. + +SZIP embodies certain inventions patented by the National Aeronautics & +Space Administration. United States Patent Nos. 5,448,642, 5,687,255, +and 5,822,457 have been licensed to ICs Corp. for distribution with the +HDF data storage and retrieval file format and software library products. +All rights reserved. + +Revocable (in the event of breach by the user or if required by law), +royalty-free, nonexclusive sublicense to use SZIP decompression software +routines and underlying patents is hereby granted by ICs Corp. to all users +of and in conjunction with HDF data storage and retrieval file format and +software library products. + +Revocable (in the event of breach by the user or if required by law), +royalty-free, nonexclusive sublicense to use SZIP compression software +routines and underlying patents for non-commercial, scientific use only +is hereby granted by ICs Corp. to users of and in conjunction with HDF +data storage and retrieval file format and software library products. + +For commercial use license to SZIP compression software routines and underlying +patents please contact ICs Corp. at ICs Corp., 721 Lochsa Street, Suite 8, +Post Falls, ID 83854. (208) 262-2008. + +==============================================================================*/ +/********************************************************/ +/* defines and declarations to interface to the szip */ +/* functions in file rice.c. */ +/* USE EXTREME CARE WHEN MODIFYING THIS FILE */ +/********************************************************/ +extern int szip_allow_encoding; + +#define SZ_ALLOW_K13_OPTION_MASK 1 +#define SZ_CHIP_OPTION_MASK 2 +#define SZ_EC_OPTION_MASK 4 +#define SZ_LSB_OPTION_MASK 8 +#define SZ_MSB_OPTION_MASK 16 +#define SZ_NN_OPTION_MASK 32 +#define SZ_RAW_OPTION_MASK 128 + +#define SZ_STREAM_ERROR (-1) +#define SZ_MEM_ERROR (-2) +#define SZ_INIT_ERROR (-3) +#define SZ_PARAM_ERROR (-4) +#define SZ_NO_ENCODER_ERROR (-5) + +#define SZ_MAX_BLOCKS_PER_SCANLINE 128 +#define SZ_MAX_PIXELS_PER_BLOCK 32 +#define SZ_MAX_PIXELS_PER_SCANLINE (SZ_MAX_BLOCKS_PER_SCANLINE)*(SZ_MAX_PIXELS_PER_BLOCK) + +long szip_compress_memory( + int options_mask, + int bits_per_pixel, + int pixels_per_block, + int pixels_per_scanline, + const void *in, + long pixels, + char *out); + +long szip_uncompress_memory( + int new_options_mask, + int new_bits_per_pixel, + int new_pixels_per_block, + int new_pixels_per_scanline, + const char *in, + long in_bytes, + void *out, + long out_pixels); + +int szip_check_params( + int bits_per_pixel, + int pixels_per_block, + int pixels_per_scanline, + long image_pixels, + char **msg); diff --git a/Resources/windows-libs/HDF5/include/szip_adpt.h b/Resources/windows-libs/HDF5/include/szip_adpt.h new file mode 100644 index 0000000000000000000000000000000000000000..2e5a5177ac4b8232eb851bbfed0107789dc14350 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/szip_adpt.h @@ -0,0 +1,56 @@ +/* + * This files has neccesary definitions to provide SZIP DLL + * support on Windows platfroms, both MSVC and CodeWarrior + * compilers + */ + +#ifndef SZAPI_ADPT_H +#define SZAPI_ADPT_H + +/* This will only be defined if szip was built with CMake shared libs*/ +#ifdef SZ_BUILT_AS_DYNAMIC_LIB + +#if defined (szip_EXPORTS) + #define _SZDLL_ + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define __SZ_DLL__ __declspec(dllexport) +/* #define __DLLVARH425__ __declspec(dllexport)*/ + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define __SZ_DLL__ __attribute__ ((visibility("default"))) +/* #define __DLLVARH425__ extern __attribute__ ((visibility("default"))) */ + #endif +#else + #define _SZUSEDLL_ + #if defined (_MSC_VER) /* MSVC Compiler Case */ + #define __SZ_DLL__ __declspec(dllimport) +/* #define __DLLVARH425__ __declspec(dllimport)*/ + #elif (__GNUC__ >= 4) /* GCC 4.x has support for visibility options */ + #define __SZ_DLL__ __attribute__ ((visibility("default"))) +/* #define __DLLVARH425__ extern __attribute__ ((visibility("default"))) */ + #endif +#endif + +#else /* SZ_BUILT_AS_DYNAMIC_LIB */ +/* This is the original HDFGroup defined preprocessor code */ + +#if defined(WIN32) && !defined(__MWERKS__) +#if defined(_SZDLL_) +#pragma warning(disable: 4273) /* Disable the dll linkage warnings */ +#define __SZ_DLL__ __declspec(dllexport) +/*#define __DLLVARH425__ __declspec(dllexport)*/ +#elif defined(_SZUSEDLL_) +#define __SZ_DLL__ __declspec(dllimport) +/*#define __DLLVARH425__ __declspec(dllimport)*/ +#else +#define __SZ_DLL__ +/*#define __DLLVARH425__ extern*/ +#endif /* _SZDLL_ */ + +#else /*WIN32*/ +#define __SZ_DLL__ extern +/*#define __DLLVAR__ extern*/ +#endif + +#endif /* SZ_BUILT_AS_DYNAMIC_LIB */ + +#endif /* H5API_ADPT_H */ diff --git a/Resources/windows-libs/HDF5/include/szlib.h b/Resources/windows-libs/HDF5/include/szlib.h new file mode 100644 index 0000000000000000000000000000000000000000..efd7cd00ca89c036aecf0d4563b8807b95758f0c --- /dev/null +++ b/Resources/windows-libs/HDF5/include/szlib.h @@ -0,0 +1,152 @@ +/* szlib.h -- defines, typedefs, and data structures for szlib API functions. */ + +/*============================================================================== +The SZIP Science Data Lossless Compression Program is Copyright (C) 2001 Science +& Technology Corporation @ UNM. All rights released. Copyright (C) 2003 Lowell +H. Miles and Jack A. Venbrux. Licensed to ICs Corp. for distribution by the +University of Illinois' National Center for Supercomputing Applications as a +part of the HDF data storage and retrieval file format and software library +products package. All rights reserved. Do not modify or use for other +purposes. + +SZIP implements an extended Rice adaptive lossless compression algorithm +for sample data. The primary algorithm was developed by R. F. Rice at +Jet Propulsion Laboratory. + +SZIP embodies certain inventions patented by the National Aeronautics & +Space Administration. United States Patent Nos. 5,448,642, 5,687,255, +and 5,822,457 have been licensed to ICs Corp. for distribution with the +HDF data storage and retrieval file format and software library products. +All rights reserved. + +Revocable (in the event of breach by the user or if required by law), +royalty-free, nonexclusive sublicense to use SZIP decompression software +routines and underlying patents is hereby granted by ICs Corp. to all users +of and in conjunction with HDF data storage and retrieval file format and +software library products. + +Revocable (in the event of breach by the user or if required by law), +royalty-free, nonexclusive sublicense to use SZIP compression software +routines and underlying patents for non-commercial, scientific use only +is hereby granted by ICs Corp. to users of and in conjunction with HDF +data storage and retrieval file format and software library products. + +For commercial use license to SZIP compression software routines and underlying +patents please contact ICs Corp. at ICs Corp., 721 Lochsa Street, Suite 8, +Post Falls, ID 83854. (208) 262-2008. + +==============================================================================*/ +#ifndef _SZLIB_H +#define _SZLIB_H + +#include "ricehdf.h" +#include "szip_adpt.h" + +#define SZLIB_VERSION "2.1" + +/* + The application must update next_in and avail_in when avail_in has + dropped to zero. It must update next_out and avail_out when avail_out + has dropped to zero. The application must initialize zalloc, zfree and + opaque before calling the init function. All other fields are set by the + compression library and must not be updated by the application. + + The fields total_in and total_out can be used for statistics or + progress reports. After compression, total_in holds the total size of + the uncompressed data and may be saved for use in the decompressor + (particularly if the decompressor wants to decompress everything in + a single step). +*/ + +#define SZ_NULL 0 + +/*** API flush values ***/ +#define SZ_NO_FLUSH 0 +#define SZ_FINISH 4 + +/*** API state values ***/ +#define SZ_INPUT_IMAGE 5 +#define SZ_OUTPUT_IMAGE 6 + +/*** API return values ***/ +#define SZ_OK 0 +#define SZ_STREAM_END 1 +#define SZ_OUTBUFF_FULL 2 + +/*** API error values defined in ricehdf.h ***/ +/* SZ_STREAM_ERROR */ +/* SZ_MEM_ERROR */ +/* SZ_INIT_ERROR */ +/* SZ_PARAM_ERROR */ +/* SZ_NO_ENCODER_ERROR */ + +/*** API options_mask values defined in ricehdf.h ***/ +/* SZ_ALLOW_K13_OPTION_MASK */ +/* SZ_CHIP_OPTION_MASK */ +/* SZ_EC_OPTION_MASK */ +/* SZ_LSB_OPTION_MASK */ +/* SZ_MSB_OPTION_MASK */ +/* SZ_NN_OPTION_MASK */ +/* SZ_RAW_OPTION_MASK */ + +/*** API MAX limits defined in ricehdf.h ***/ +/* SZ_MAX_BLOCKS_PER_SCANLINE */ +/* SZ_MAX_PIXELS_PER_BLOCK */ +/* SZ_MAX_PIXELS_PER_SCANLINE */ + +typedef struct sz_hidden_data_s + { + char *image_in; + long avail_in; + char *next_in; + + char *image_out; + long avail_out; + char *next_out; + } sz_hidden_data; + +typedef struct sz_stream_s + { + char *next_in; /* next input byte */ + unsigned int avail_in; /* number of bytes available at next_in */ + unsigned long total_in; /* total nb of input bytes read so far */ + + char *next_out; /* next output byte should be put there */ + unsigned int avail_out; /* remaining free space at next_out */ + unsigned long total_out; /* total nb of bytes output so far */ + + char *msg; + int state; + + void *hidden; /* this data hidden from user */ + + int options_mask; + int bits_per_pixel; + int pixels_per_block; + int pixels_per_scanline; + long image_pixels; + } sz_stream; + +typedef sz_stream *sz_streamp; + +typedef struct SZ_com_t_s + { + int options_mask; + int bits_per_pixel; + int pixels_per_block; + int pixels_per_scanline; + } SZ_com_t; + +__SZ_DLL__ int SZ_BufftoBuffCompress(void *dest, size_t *destLen, const void *source, size_t sourceLen, SZ_com_t *param); +__SZ_DLL__ int SZ_BufftoBuffDecompress(void *dest, size_t *destLen, const void *source, size_t sourceLen, SZ_com_t *param); + +__SZ_DLL__ int SZ_DecompressInit(sz_stream *strm); +__SZ_DLL__ int SZ_Decompress(sz_stream *strm, int flush); +__SZ_DLL__ int SZ_DecompressEnd(sz_stream *strm); + +__SZ_DLL__ int SZ_CompressInit(sz_stream *strm); +__SZ_DLL__ int SZ_Compress(sz_stream *strm, int flush); +__SZ_DLL__ int SZ_CompressEnd(sz_stream *strm); +__SZ_DLL__ int SZ_encoder_enabled(void); + +#endif /* _SZLIB_H */ diff --git a/Resources/windows-libs/HDF5/include/zconf.h b/Resources/windows-libs/HDF5/include/zconf.h new file mode 100644 index 0000000000000000000000000000000000000000..f542ce7a7e0a4ced91102ad7175e5bd6e8cb9947 --- /dev/null +++ b/Resources/windows-libs/HDF5/include/zconf.h @@ -0,0 +1,513 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2013 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H +/* #undef Z_PREFIX */ +/* #undef Z_HAVE_UNISTD_H */ + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ +# cmakedefine Z_PREFIX_SET + +/* all linked symbols */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_bits z__tr_flush_bits +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# ifndef Z_SOLO +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# endif +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePending z_deflatePending +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateResetKeep z_deflateResetKeep +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# ifndef Z_SOLO +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzgetc z_gzgetc +# define gzgetc_ z_gzgetc_ +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# ifdef _WIN32 +# define gzopen_w z_gzopen_w +# endif +# define gzprintf z_gzprintf +# define gzvprintf z_gzvprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzwrite z_gzwrite +# endif +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetHeader z_inflateGetHeader +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateSetDictionary z_inflateSetDictionary +# define inflateGetDictionary z_inflateGetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflateResetKeep z_inflateResetKeep +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# ifndef Z_SOLO +# define uncompress z_uncompress +# endif +# define zError z_zError +# ifndef Z_SOLO +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# endif +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# ifndef Z_SOLO +# define gzFile z_gzFile +# endif +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +#ifndef Z_ARG /* function prototypes for stdarg */ +# if defined(STDC) || defined(Z_HAVE_STDARG_H) +# define Z_ARG(args) args +# else +# define Z_ARG(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include <windows.h> + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) +# include <limits.h> +# if (UINT_MAX == 0xffffffffUL) +# define Z_U4 unsigned +# elif (ULONG_MAX == 0xffffffffUL) +# define Z_U4 unsigned long +# elif (USHRT_MAX == 0xffffffffUL) +# define Z_U4 unsigned short +# endif +#endif + +#ifdef Z_U4 + typedef Z_U4 z_crc_t; +#else + typedef unsigned long z_crc_t; +#endif + +#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_STDARG_H +#endif + +#ifdef STDC +# ifndef Z_SOLO +# include <sys/types.h> /* for off_t */ +# endif +#endif + +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +# include <stdarg.h> /* for va_list */ +# endif +#endif + +#ifdef _WIN32 +# ifndef Z_SOLO +# include <stddef.h> /* for wchar_t */ +# endif +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) +# define Z_HAVE_UNISTD_H +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifdef VMS +# include <unixio.h> /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +# endif +#endif + +#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 +# define Z_LFS64 +#endif + +#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) +# define Z_LARGE64 +#endif + +#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) +# define Z_WANT64 +#endif + +#if !defined(SEEK_SET) && !defined(Z_SOLO) +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if !defined(_WIN32) && defined(Z_LARGE64) +# define z_off64_t off64_t +#else +# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/Resources/windows-libs/HDF5/include/zlib.h b/Resources/windows-libs/HDF5/include/zlib.h new file mode 100644 index 0000000000000000000000000000000000000000..3e0c7672ac51d93782f020bba32eb1207617e70a --- /dev/null +++ b/Resources/windows-libs/HDF5/include/zlib.h @@ -0,0 +1,1768 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.8, April 28th, 2013 + + Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 + (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.2.8" +#define ZLIB_VERNUM 0x1280 +#define ZLIB_VER_MAJOR 1 +#define ZLIB_VER_MINOR 2 +#define ZLIB_VER_REVISION 8 +#define ZLIB_VER_SUBREVISION 0 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed data. + This version of the library supports only one compression method (deflation) + but other algorithms will be added later and will have the same stream + interface. + + Compression can be done in a single step if the buffers are large enough, + or can be done by repeated calls of the compression function. In the latter + case, the application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip streams in memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never crash + even in case of corrupted input. +*/ + +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); +typedef void (*free_func) OF((voidpf opaque, voidpf address)); + +struct internal_state; + +typedef struct z_stream_s { + z_const Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total number of input bytes read so far */ + + Bytef *next_out; /* next output byte should be put there */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total number of bytes output so far */ + + z_const char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text */ + uLong adler; /* adler32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has dropped + to zero. It must update next_out and avail_out when avail_out has dropped + to zero. The application must initialize zalloc, zfree and opaque before + calling the init function. All other fields are set by the compression + library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this if + the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers + returned by zalloc for objects of exactly 65536 bytes *must* have their + offset normalized to zero. The default allocation function provided by this + library ensures this (see zutil.c). To reduce memory requirements and avoid + any allocation of 64K objects, at the expense of compression ratio, compile + the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or progress + reports. After compression, total_in holds the total size of the + uncompressed data and may be saved for use in the decompressor (particularly + if the decompressor wants to decompress everything in a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +#define Z_TREES 6 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field (though see inflate()) */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is not + compatible with the zlib.h header file used by the application. This check + is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. If + zalloc and zfree are set to Z_NULL, deflateInit updates them to use default + allocation functions. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at all + (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION + requests a default compromise between speed and compression (currently + equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if level is not a valid compression level, or + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). msg is set to null + if there is no error message. deflateInit does not perform any compression: + this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary (in interactive applications). Some + output may be provided even if flush is not set. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating avail_in or avail_out accordingly; avail_out should + never be zero before the call. The application can consume the compressed + output when it wants, for example when the output buffer is full (avail_out + == 0), or after each call of deflate(). If deflate returns Z_OK and with + zero avail_out, it must be called again after making room in the output + buffer because there might be more output pending. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumulate before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In + particular avail_in is zero after the call if enough output space has been + provided before the call.) Flushing may degrade compression for some + compression algorithms and so it should be used only when necessary. This + completes the current deflate block and follows it with an empty stored block + that is three bits plus filler bits to the next byte, followed by four bytes + (00 00 ff ff). + + If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the + output buffer, but the output is not aligned to a byte boundary. All of the + input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. + This completes the current deflate block and follows it with an empty fixed + codes block that is 10 bits long. This assures that enough bytes are output + in order for the decompressor to finish the block before the empty fixed code + block. + + If flush is set to Z_BLOCK, a deflate block is completed and emitted, as + for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to + seven bits of the current block are held to be written as the next byte after + the next deflate block is completed. In this case, the decompressor may not + be provided enough bits at this point in order to complete decompression of + the data provided so far to the compressor. It may need to wait for the next + block to be emitted. This is for advanced applications that need to control + the emission of deflate blocks. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six to avoid repeated flush markers due to + avail_out == 0 on return. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there was + enough output space; if deflate returns with Z_OK, this function must be + called again with Z_FINISH and more output space (updated avail_out) but no + more input data, until it returns with Z_STREAM_END or an error. After + deflate has returned Z_STREAM_END, the only possible operations on the stream + are deflateReset or deflateEnd. + + Z_FINISH can be used immediately after deflateInit if all the compression + is to be done in a single step. In this case, avail_out must be at least the + value returned by deflateBound (see below). Then deflate is guaranteed to + return Z_STREAM_END. If not enough output space is provided, deflate will + not return Z_STREAM_END, and it must be called again as described above. + + deflate() sets strm->adler to the adler32 checksum of all input read + so far (that is, total_in bytes). + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered + binary. This field is only for information purposes and does not affect the + compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible + (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not + fatal, and deflate() can be called again with more input and more output + space to continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, msg + may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. If next_in is not Z_NULL and avail_in is large enough (the + exact value depends on the compression method), inflateInit determines the + compression method from the zlib header and allocates all data structures + accordingly; otherwise the allocation will be deferred to the first call of + inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to + use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit() does not process any header information -- that is deferred + until inflate() is called. +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in is updated and processing will + resume at this point for the next call of inflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there is + no more input data or no more space in the output buffer (see below about + the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating the next_* and avail_* values accordingly. The + application can consume the uncompressed output when it wants, for example + when the output buffer is full (avail_out == 0), or after each call of + inflate(). If inflate returns Z_OK and with zero avail_out, it must be + called again after making room in the output buffer because there might be + more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, + Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() + stop if and when it gets to the next deflate block boundary. When decoding + the zlib or gzip format, this will cause inflate() to return immediately + after the header and before the first block. When doing a raw inflate, + inflate() will go ahead and process the first block, and will return when it + gets to the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + Also to assist in this, on return inflate() will set strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 if + inflate() is currently decoding the last block in the deflate stream, plus + 128 if inflate() returned immediately after decoding an end-of-block code or + decoding the complete header up to just before the first byte of the deflate + stream. The end-of-block will not be indicated until all of the uncompressed + data from that block has been written to strm->next_out. The number of + unused bits may in general be greater than seven, except when bit 7 of + data_type is set, in which case the number of unused bits will be less than + eight. data_type is set as noted here every time inflate() returns for all + flush options, and so can be used to determine the amount of currently + consumed input in bits. + + The Z_TREES option behaves as Z_BLOCK does, but it also returns when the + end of each deflate block header is reached, before any actual data in that + block is decoded. This allows the caller to determine the length of the + deflate block header for later use in random access within a deflate block. + 256 is added to the value of strm->data_type when inflate() returns + immediately after reaching the end of the deflate block header. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step (a + single call of inflate), the parameter flush should be set to Z_FINISH. In + this case all pending input is processed and all pending output is flushed; + avail_out must be large enough to hold all of the uncompressed data for the + operation to complete. (The size of the uncompressed data may have been + saved by the compressor for this purpose.) The use of Z_FINISH is not + required to perform an inflation in one step. However it may be used to + inform inflate that a faster approach can be used for the single inflate() + call. Z_FINISH also informs inflate to not maintain a sliding window if the + stream completes, which reduces inflate's memory footprint. If the stream + does not complete, either because not all of the stream is provided or not + enough output space is provided, then a sliding window will be allocated and + inflate() can be called again to continue the operation as if Z_NO_FLUSH had + been used. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the effects of the flush parameter in this implementation are + on the return value of inflate() as noted below, when inflate() returns early + when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of + memory for a sliding window when Z_FINISH is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the Adler-32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the Adler-32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed adler32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() can decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically, if requested when + initializing with inflateInit2(). Any information contained in the gzip + header is not retained, so applications that need that information should + instead use raw inflate, see inflateInit2() below, or inflateBack() and + perform their own processing of the gzip header and trailer. When processing + gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output + producted so far. The CRC-32 is checked against the gzip trailer. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, + Z_BUF_ERROR if no progress is possible or if there was not enough room in the + output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may + then call inflateSync() to look for a good compression block if a partial + recovery of the data is desired. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state + was inconsistent. In the error case, msg may be set but then points to a + static string (which must not be deallocated). +*/ + + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by the + caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute an adler32 check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), no + header crc, and the operating system will be set to 255 (unknown). If a + gzip stream is being written, strm->adler is a crc32 instead of an adler32. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but is + slow and reduces compression ratio; memLevel=9 uses maximum memory for + optimal speed. The default value is 8. See zconf.h for total memory usage + as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid + method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is + incompatible with the version assumed by the caller (ZLIB_VERSION). msg is + set to null if there is no error message. deflateInit2 does not perform any + compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. When using the zlib format, this + function must be called immediately after deflateInit, deflateInit2 or + deflateReset, and before any call of deflate. When doing raw deflate, this + function must be called either before any call of deflate, or immediately + after the completion of a deflate block, i.e. after all input has been + consumed and all output has been delivered when using any of the flush + options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The + compressor and decompressor must use exactly the same dictionary (see + inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size + provided in deflateInit or deflateInit2. Thus the strings most likely to be + useful should be put at the end of the dictionary, not at the front. In + addition, the current implementation of deflate will use at most the window + size minus 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the adler32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The adler32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + adler32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if not at a block boundary for raw deflate). deflateSetDictionary does + not perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and can + consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, + but does not free and reallocate all the internal compression state. The + stream will keep the same compression level and any other attributes that + may have been set by deflateInit2. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2. This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression level is changed, the input available so far is + compressed with the old level (and may be flushed); the new level will take + effect only at the next call of deflate(). + + Before the call of deflateParams, the stream state must be set as for + a call of deflate(), since the currently available input may have to be + compressed and flushed. In particular, strm->avail_out must be non-zero. + + deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source + stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if + strm->avail_out was zero. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() or + deflateInit2(), and after deflateSetHeader(), if used. This would be used + to allocate an output buffer for deflation in a single pass, and so would be + called before deflate(). If that first deflate() call is provided the + sourceLen input bytes, an output buffer allocated to the size returned by + deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed + to return Z_STREAM_END. Note that it is possible for the compressed size to + be larger than the value returned by deflateBound() if flush options other + than Z_FINISH or Z_NO_FLUSH are used. +*/ + +ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, + unsigned *pending, + int *bits)); +/* + deflatePending() returns the number of bytes and bits of output that have + been generated, but not yet provided in the available output. The bytes not + provided would be due to the available output space having being consumed. + The number of bits of output not provided are between 0 and 7, where they + await more bits to join them in order to fill out a full byte. If pending + or bits are Z_NULL, then those values are not set. + + deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. + */ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the bits + leftover from a previous deflate stream when appending to it. As such, this + function can only be used for raw deflate, and must be used before the first + deflate() call after a deflateInit2() or deflateReset(). bits must be less + than or equal to 16, and that many of the least significant bits of value + will be inserted in the output. + + deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough + room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be zero to request that inflate use the window size in + the zlib header of the compressed stream. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an adler32 or a crc32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a + crc32 instead of an adler32. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit2 does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit2() does not process any header information -- that is + deferred until inflate() is called. +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the adler32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called at any + time to set the dictionary. If the provided dictionary is smaller than the + window and there is already data in the window, then the provided dictionary + will amend what's there. The application must insure that the dictionary + that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect adler32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, + Bytef *dictionary, + uInt *dictLength)); +/* + Returns the sliding dictionary being maintained by inflate. dictLength is + set to the number of bytes in the dictionary, and that many bytes are copied + to dictionary. dictionary must have enough space, where 32768 bytes is + always enough. If inflateGetDictionary() is called with dictionary equal to + Z_NULL, then only the dictionary length is returned, and nothing is copied. + Similary, if dictLength is Z_NULL, then it is not set. + + inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the + stream state is inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a possible full flush point (see above + for the description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync searches for a 00 00 FF FF pattern in the compressed data. + All full flush points have this pattern, but not all occurrences of this + pattern are full flush points. + + inflateSync returns Z_OK if a possible full flush point has been found, + Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point + has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. + In the success case, the application may save the current current value of + total_in which indicates where valid compressed data was found. In the + error case, the application may repeatedly call inflateSync, providing more + input each time, until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate all the internal decompression state. The + stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, + int windowBits)); +/* + This function is the same as inflateReset, but it also permits changing + the wrap and window size requests. The windowBits parameter is interpreted + the same as it is for inflateInit2. + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL), or if + the windowBits parameter is invalid. +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + If bits is negative, then the input stream bit buffer is emptied. Then + inflatePrime() can be called again to put bits in the buffer. This is used + to clear out bits leftover after feeding inflate a block description prior + to feeding inflate codes. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +/* + This function returns two values, one in the lower 16 bits of the return + value, and the other in the remaining upper bits, obtained by shifting the + return value down 16 bits. If the upper value is -1 and the lower value is + zero, then inflate() is currently decoding information outside of a block. + If the upper value is -1 and the lower value is non-zero, then inflate is in + the middle of a stored block, with the lower value equaling the number of + bytes from the input remaining to copy. If the upper value is not -1, then + it is the number of bits back from the current bit position in the input of + the code (literal or length/distance pair) currently being processed. In + that case the lower value is the number of bytes already emitted for that + code. + + A code is being processed if inflate is waiting for more input to complete + decoding of the code, or if it has completed decoding but is waiting for + more output space to write the literal or match data. + + inflateMark() is used to mark locations in the input data for random + access, which may be at bit positions, and to note those cases where the + output of a code may span boundaries of random access blocks. The current + location in the input stream can be determined from avail_in and data_type + as noted in the description for the Z_BLOCK flush parameter for inflate. + + inflateMark returns the value noted above or -1 << 16 if the provided + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be + used to force inflate() to return immediately after header processing is + complete and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the parameters are invalid, Z_MEM_ERROR if the internal state could not be + allocated, or Z_VERSION_ERROR if the version of the library does not match + the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, + z_const unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is potentially more efficient than + inflate() for file i/o applications, in that it avoids copying between the + output and the sliding window by simply making the window itself the output + buffer. inflate() can be faster on modern CPUs when used with large + buffers. inflateBack() trusts the application to not change the output + buffer passed by the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free the + allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects only + the raw deflate stream to decompress. This is different from the normal + behavior of inflate(), which expects either a zlib or gzip header and + trailer around the deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero--buf is ignored in that + case--and inflateBack() will return a buffer error. inflateBack() will call + out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() + should return zero on success, or non-zero on failure. If out() returns + non-zero, inflateBack() will return with an error. Neither in() nor out() + are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format error + in the deflate stream (in which case strm->msg is set to indicate the nature + of the error), or Z_STREAM_ERROR if the stream was not properly initialized. + In the case of Z_BUF_ERROR, an input or output error can be distinguished + using strm->next_in which will be Z_NULL only if in() returned an error. If + strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning + non-zero. (in() will always be called before out(), so strm->next_in is + assured to be defined if out() returns non-zero.) Note that inflateBack() + cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + +#ifndef Z_SOLO + + /* utility functions */ + +/* + The following utility functions are implemented on top of the basic + stream-oriented functions. To simplify the interface, some default options + are assumed (compression level and memory usage, standard memory allocation + functions). The source code of these utility functions can be modified if + you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before a + compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, destLen + is the actual size of the uncompressed buffer. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In + the case where there is not enough room, uncompress() will fill the output + buffer with the uncompressed data up to that point. +*/ + + /* gzip file access functions */ + +/* + This library supports reading and writing files in gzip (.gz) format with + an interface similar to that of stdio, using the functions that start with + "gz". The gzip format is different from the zlib format. gzip is a gzip + wrapper, documented in RFC 1952, wrapped around a deflate stream. +*/ + +typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ + +/* +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); + + Opens a gzip (.gz) file for reading or writing. The mode parameter is as + in fopen ("rb" or "wb") but can also include a compression level ("wb9") or + a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only + compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' + for fixed code compression as in "wb9F". (See the description of + deflateInit2 for more information about the strategy parameter.) 'T' will + request transparent writing or appending with no compression and not using + the gzip format. + + "a" can be used instead of "w" to request that the gzip stream that will + be written be appended to the file. "+" will result in an error, since + reading and writing to the same gzip file is not supported. The addition of + "x" when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of "e" when + reading or writing will set the flag to close the file on an execve() call. + + These functions, as well as gzip, will read and decode a sequence of gzip + streams in a file. The append function of gzopen() can be used to create + such a file. (Also see gzflush() for another way to do this.) When + appending, gzopen does not test whether the file begins with a gzip stream, + nor does it look for the end of the gzip streams to begin appending. gzopen + will simply append a gzip stream to the existing file. + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. When + reading, this will be detected automatically by looking for the magic two- + byte gzip header. + + gzopen returns NULL if the file could not be opened, if there was + insufficient memory to allocate the gzFile state, or if an invalid mode was + specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). + errno can be checked to determine if the reason gzopen failed was that the + file could not be opened. +*/ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen associates a gzFile with the file descriptor fd. File descriptors + are obtained from calls like open, dup, creat, pipe or fileno (if the file + has been previously opened with fopen). The mode parameter is as in gzopen. + + The next call of gzclose on the returned gzFile will also close the file + descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor + fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, + mode);. The duplicated descriptor should be saved to avoid a leak, since + gzdopen does not close fd if it fails. If you are using fileno() to get the + file descriptor from a FILE *, then you will have to use dup() to avoid + double-close()ing the file descriptor. Both gzclose() and fclose() will + close the associated file descriptor, so they need to have different file + descriptors. + + gzdopen returns NULL if there was insufficient memory to allocate the + gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not + provided, or '+' was provided), or if fd is -1. The file descriptor is not + used until the next gz* read, write, seek, or close operation, so gzdopen + will not detect if fd is invalid (unless fd is -1). +*/ + +ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +/* + Set the internal buffer size used by this library's functions. The + default buffer size is 8192 bytes. This function must be called after + gzopen() or gzdopen(), and before any other calls that read or write the + file. The buffer memory allocation is always deferred to the first read or + write. Two buffers are allocated, either both of the specified size when + writing, or one of the specified size and the other twice that size when + reading. A larger buffer size of, for example, 64K or 128K bytes will + noticeably increase the speed of decompression (reading). + + The new buffer size also affects the maximum length for gzprintf(). + + gzbuffer() returns 0 on success, or -1 on failure, such as being called + too late. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. + + gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not + opened for writing. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. If + the input file is not in gzip format, gzread copies the given number of + bytes into the buffer directly from the file. + + After reaching the end of a gzip stream in the input, gzread will continue + to read, looking for another gzip stream. Any number of gzip streams may be + concatenated in the input file, and will all be decompressed by gzread(). + If something other than a gzip stream is encountered after a gzip stream, + that remaining trailing garbage is ignored (and no error is returned). + + gzread can be used to read a gzip file that is being concurrently written. + Upon reaching the end of the input, gzread will return with the available + data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then + gzclearerr can be used to clear the end of file indicator in order to permit + gzread to be tried again. Z_OK indicates that a gzip stream was completed + on the last gzread. Z_BUF_ERROR indicates that the input file ended in the + middle of a gzip stream. Note that gzread does not return -1 in the event + of an incomplete gzip stream. This error is deferred until gzclose(), which + will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip + stream. Alternatively, gzerror can be used before gzclose to detect this + case. + + gzread returns the number of uncompressed bytes actually read, less than + len for end of file, or -1 for error. +*/ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes written or 0 in case of + error. +*/ + +ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the arguments to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written, or 0 in case of error. The number of + uncompressed bytes written is limited to 8191, or one less than the buffer + size given to gzbuffer(). The caller should assure that this limit is not + exceeded. If it is exceeded, then gzprintf() will return an error (0) with + nothing written. In this case, there may also be a buffer overflow with + unpredictable consequences, which is possible only if zlib was compiled with + the insecure functions sprintf() or vsprintf() because the secure snprintf() + or vsnprintf() functions were not available. This can be determined using + zlibCompileFlags(). +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or a + newline character is read and transferred to buf, or an end-of-file + condition is encountered. If any characters are read or if len == 1, the + string is terminated with a null character. If no characters are read due + to an end-of-file or len < 1, then the buffer is left untouched. + + gzgets returns buf which is a null-terminated string, or it returns NULL + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte or -1 + in case of end of file or error. This is implemented as a macro for speed. + As such, it does not do all of the checking the other functions do. I.e. + it does not check to see if file is NULL, nor whether the structure file + points to has been clobbered or not. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read as the first character + on the next read. At least one character of push-back is allowed. + gzungetc() returns the character pushed, or -1 on failure. gzungetc() will + fail if c is -1, and may fail if a character has been pushed but not read + yet. If gzungetc is used immediately after gzopen or gzdopen, at least the + output buffer size of pushed characters is allowed. (See gzbuffer above.) + The pushed character will be discarded if the stream is repositioned with + gzseek() or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter flush + is as in the deflate() function. The return value is the zlib error number + (see function gzerror below). gzflush is only permitted when writing. + + If the flush parameter is Z_FINISH, the remaining data is written and the + gzip stream is completed in the output. If gzwrite() is called again, a new + gzip stream will be started in the output. gzread() is able to read such + concatented gzip streams. + + gzflush should be called only when strictly necessary because it will + degrade compression if called too often. +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); + + Sets the starting position for the next gzread or gzwrite on the given + compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); + + Returns the starting position for the next gzread or gzwrite on the given + compressed file. This position represents a number of bytes in the + uncompressed data stream, and is zero when starting, even if appending or + reading a gzip stream from the middle of a file using gzdopen(). + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); + + Returns the current offset in the file being read or written. This offset + includes the count of bytes that precede the gzip stream, for example when + appending or when using gzdopen() for reading. When reading, the offset + does not include as yet unused buffered input. This information can be used + for a progress indicator. On error, gzoffset() returns -1. +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns true (1) if the end-of-file indicator has been set while reading, + false (0) otherwise. Note that the end-of-file indicator is set only if the + read tried to go past the end of the input, but came up short. Therefore, + just like feof(), gzeof() may return false even if there is no more data to + read, in the event that the last read request was for the exact number of + bytes remaining in the input file. This will happen if the input file size + is an exact multiple of the buffer size. + + If gzeof() returns true, then the read functions will return no more data, + unless the end-of-file indicator is reset by gzclearerr() and the input file + has grown since the previous end of file was detected. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns true (1) if file is being copied directly while reading, or false + (0) if file is a gzip stream being decompressed. + + If the input file is empty, gzdirect() will return true, since the input + does not contain a gzip stream. + + If gzdirect() is used immediately after gzopen() or gzdopen() it will + cause buffers to be allocated to allow reading the file to determine if it + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). + + When writing, gzdirect() returns true (1) if transparent writing was + requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: + gzdirect() is not needed when writing. Transparent writing must be + explicitly requested, so the application already knows the answer. When + linking statically, using gzdirect() will include all of the zlib code for + gzip file reading and decompression, which may not be desired.) +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file and + deallocates the (de)compression state. Note that once file is closed, you + cannot call gzerror with file, since its structures have been deallocated. + gzclose must not be called more than once on the same file, just as free + must not be called more than once on the same allocation. + + gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a + file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the + last read ended in the middle of a gzip stream, or Z_OK on success. +*/ + +ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +/* + Same as gzclose(), but gzclose_r() is only for use when reading, and + gzclose_w() is only for use when writing or appending. The advantage to + using these instead of gzclose() is that they avoid linking in zlib + compression or decompression code that is not used when only reading or only + writing respectively. If gzclose() is used, then both compression and + decompression code will be included the application when linking to a static + zlib library. +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the given + compressed file. errnum is set to zlib error number. If an error occurred + in the file system and not in the compression library, errnum is set to + Z_ERRNO and the application may consult errno to get the exact error code. + + The application must not modify the returned string. Future calls to + this function may invalidate the previously returned string. If file is + closed, then the string previously returned by gzerror will no longer be + available. + + gzerror() should be used to distinguish errors from end-of-file for those + functions above that do not distinguish those cases in their return values. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + +#endif /* !Z_SOLO */ + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is Z_NULL, this function returns the + required initial value for the checksum. + + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. + + Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); + + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note + that the z_off_t type (like off_t) is a signed integer. If len2 is + negative, the result has no meaning or utility. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is Z_NULL, this function returns the required + initial value for the crc. Pre- and post-conditioning (one's complement) is + performed within this function so it shouldn't be done by the application. + + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +#define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) + +#ifndef Z_SOLO + +/* gzgetc() macro and its supporting function and exposed data structure. Note + * that the real internal state is much larger than the exposed structure. + * This abbreviated structure exposes just enough for the gzgetc() macro. The + * user should not mess with these exposed elements, since their names or + * behavior could change in the future, perhaps even capriciously. They can + * only be used by the gzgetc() macro. You have been warned. + */ +struct gzFile_s { + unsigned have; + unsigned char *next; + z_off64_t pos; +}; +ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ +#ifdef Z_PREFIX_SET +# undef z_gzgetc +# define z_gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#else +# define gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#endif + +/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or + * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if + * both are true, the application gets the *64 functions, and the regular + * functions are changed to 64 bits) -- in case these are set on systems + * without large file support, _LFS64_LARGEFILE must also be true + */ +#ifdef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); +#endif + +#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) +# ifdef Z_PREFIX_SET +# define z_gzopen z_gzopen64 +# define z_gzseek z_gzseek64 +# define z_gztell z_gztell64 +# define z_gzoffset z_gzoffset64 +# define z_adler32_combine z_adler32_combine64 +# define z_crc32_combine z_crc32_combine64 +# else +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# endif +# ifndef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +# endif +#else + ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); +#endif + +#else /* Z_SOLO */ + + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); + +#endif /* !Z_SOLO */ + +/* hack for buggy compilers */ +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) + struct internal_state {int dummy;}; +#endif + +/* undocumented functions */ +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); +ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); +ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); +ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); +ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); +#if defined(_WIN32) && !defined(Z_SOLO) +ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, + const char *mode)); +#endif +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, + const char *format, + va_list va)); +# endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/Resources/windows-libs/HDF5/lib/x64/hdf5.lib b/Resources/windows-libs/HDF5/lib/x64/hdf5.lib new file mode 100644 index 0000000000000000000000000000000000000000..0e0fc9ee357fcb21e082fca482d415f8904ff311 Binary files /dev/null and b/Resources/windows-libs/HDF5/lib/x64/hdf5.lib differ diff --git a/Resources/windows-libs/HDF5/lib/x64/hdf5_cpp.lib b/Resources/windows-libs/HDF5/lib/x64/hdf5_cpp.lib new file mode 100644 index 0000000000000000000000000000000000000000..9dce3a1e4eb13824a8bb9b98b4979cb112f1823a Binary files /dev/null and b/Resources/windows-libs/HDF5/lib/x64/hdf5_cpp.lib differ diff --git a/Resources/windows-libs/HDF5/lib/x64/szip.lib b/Resources/windows-libs/HDF5/lib/x64/szip.lib new file mode 100644 index 0000000000000000000000000000000000000000..aec19e330aaa19a10bcc8223925a723d3eed19df Binary files /dev/null and b/Resources/windows-libs/HDF5/lib/x64/szip.lib differ diff --git a/Resources/windows-libs/HDF5/lib/x64/zlib.lib b/Resources/windows-libs/HDF5/lib/x64/zlib.lib new file mode 100644 index 0000000000000000000000000000000000000000..ab44e00d57bfd86eecfd3076547ec2388e82fd28 Binary files /dev/null and b/Resources/windows-libs/HDF5/lib/x64/zlib.lib differ diff --git a/Resources/windows-libs/HDF5/lib/x86/hdf5.lib b/Resources/windows-libs/HDF5/lib/x86/hdf5.lib new file mode 100644 index 0000000000000000000000000000000000000000..5f77ba9abb016c6c211bcddd056949034ca3fdb4 Binary files /dev/null and b/Resources/windows-libs/HDF5/lib/x86/hdf5.lib differ diff --git a/Resources/windows-libs/HDF5/lib/x86/hdf5_cpp.lib b/Resources/windows-libs/HDF5/lib/x86/hdf5_cpp.lib new file mode 100644 index 0000000000000000000000000000000000000000..41cdaa76e431bb28db51e4378d94b5772d11d240 Binary files /dev/null and b/Resources/windows-libs/HDF5/lib/x86/hdf5_cpp.lib differ diff --git a/Resources/windows-libs/HDF5/lib/x86/szip.lib b/Resources/windows-libs/HDF5/lib/x86/szip.lib new file mode 100644 index 0000000000000000000000000000000000000000..bebb9e5391b21543aee199b4823caf148fa15549 Binary files /dev/null and b/Resources/windows-libs/HDF5/lib/x86/szip.lib differ diff --git a/Resources/windows-libs/HDF5/lib/x86/zlib.lib b/Resources/windows-libs/HDF5/lib/x86/zlib.lib new file mode 100644 index 0000000000000000000000000000000000000000..723710e914c81a346b22ae209eda6028cb726b6a Binary files /dev/null and b/Resources/windows-libs/HDF5/lib/x86/zlib.lib differ diff --git a/Source/AccessClass.cpp b/Source/AccessClass.cpp index 281f9fde8c1e1a68243af86c0680817157ad1eda..df670c214c82e32411d04f27271f5ce01607b772 100644 --- a/Source/AccessClass.cpp +++ b/Source/AccessClass.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,14 +24,6 @@ #include "AccessClass.h" #include "UI/UIComponent.h" -// #include "UI/EditorViewport.h" -// #include "UI/ProcessorList.h" -// #include "UI/DataViewport.h" -// #include "UI/ControlPanel.h" -// #include "UI/MessageCenter.h" -// #include "UI/GraphViewer.h" -// #include "Audio/AudioComponent.h" -// #include "Processors/ProcessorGraph.h" void AccessClass::setUIComponent(UIComponent* ui_) { diff --git a/Source/AccessClass.h b/Source/AccessClass.h index 303150e1a83a4f3b055ede8b190cab2cb8968058..e27118fa366663b6a9432580b761f8d5d4cc5c92 100644 --- a/Source/AccessClass.h +++ b/Source/AccessClass.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -31,7 +31,7 @@ class EditorViewport; class ProcessorList; class DataViewport; class ProcessorGraph; -class MessageCenter; +class MessageCenterEditor; class ControlPanel; class AudioComponent; class GraphViewer; @@ -102,7 +102,7 @@ public: } /** Returns a pointer to the application's MessageCenter. */ - MessageCenter* getMessageCenter() + MessageCenterEditor* getMessageCenter() { return mc; } @@ -133,7 +133,7 @@ private: DataViewport* dv; ProcessorGraph* pg; ControlPanel* cp; - MessageCenter* mc; + MessageCenterEditor* mc; AudioComponent* ac; GraphViewer* gv; diff --git a/Source/Audio/AudioComponent.cpp b/Source/Audio/AudioComponent.cpp index ddfc55594edb078f186ab940e9431c0cb2d62fb0..b3db191270a18e0a856145e2a8932917e1bcad09 100644 --- a/Source/Audio/AudioComponent.cpp +++ b/Source/Audio/AudioComponent.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Audio/AudioComponent.h b/Source/Audio/AudioComponent.h index a77e5beaef83bc2626f7d96f12330a51161496d3..ccf050a6c07a4b10921daca6f7b221a1ffeb1467 100644 --- a/Source/Audio/AudioComponent.h +++ b/Source/Audio/AudioComponent.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/DoxygenMainPage.h b/Source/DoxygenMainPage.h index c72a095f7d8508d484dfb5fcf8d3ec67ae62e571..3f22c8c12cf97b94d92b8f226d35678ce1148c49 100644 --- a/Source/DoxygenMainPage.h +++ b/Source/DoxygenMainPage.h @@ -7,6 +7,6 @@ \section install More info - \subsection step1 More info will appear here soon! + \subsection step1 More info will appear here eventually! */ \ No newline at end of file diff --git a/Source/Main.cpp b/Source/Main.cpp index ba1eeb994441f9d076c5b2ea14ecde17d5f5921f..f718d2ce77ebd09d9c76ae123dcdcaaf4af3ad4d 100644 --- a/Source/Main.cpp +++ b/Source/Main.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -75,6 +75,7 @@ public: std::cout.rdbuf(console_out.rdbuf()); std::cerr.rdbuf(console_out.rdbuf()); SetConsoleTitle("Debug Console"); + std::cout << "Debug console..." << std::endl; } } diff --git a/Source/MainWindow.cpp b/Source/MainWindow.cpp index ace0b88ec056a01657b93a652ea1096a4e5341d9..c4d0c530db9a770eb1ee361203cd95fc47bbe8ed 100644 --- a/Source/MainWindow.cpp +++ b/Source/MainWindow.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -23,7 +23,6 @@ #include "MainWindow.h" #include <stdio.h> - //----------------------------------------------------------------------- MainWindow::MainWindow() diff --git a/Source/MainWindow.h b/Source/MainWindow.h index 82b4af6be0762e2fb6c98e166cddfd6b9caa5c51..5cf9976d15cfd05f095cf5ec2c2a81a357cc0fae 100644 --- a/Source/MainWindow.h +++ b/Source/MainWindow.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -27,7 +27,7 @@ #include "../JuceLibraryCode/JuceHeader.h" #include "UI/UIComponent.h" #include "Audio/AudioComponent.h" -#include "Processors/ProcessorGraph.h" +#include "Processors/ProcessorGraph/ProcessorGraph.h" /** The main window for the GUI application. diff --git a/Source/OpenGL.h b/Source/OpenGL.h deleted file mode 100644 index d558915e36b815081f37f025b529a58ea604ca19..0000000000000000000000000000000000000000 --- a/Source/OpenGL.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - ------------------------------------------------------------------ - - This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys - - ------------------------------------------------------------------ - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - -*/ - -#ifdef _WIN32 -#include <windows.h> -#endif - -#if JUCE_WINDOWS -#include <gl/gl.h> -#include <gl/glu.h> -#elif JUCE_LINUX -#include <GL/gl.h> -#include <GL/glut.h> -#undef KeyPress -#elif JUCE_IPHONE -#include <OpenGLES/ES1/gl.h> -#include <OpenGLES/ES1/glext.h> -#elif JUCE_MAC -#include <GLUT/glut.h> -#endif - -#ifndef GL_BGRA_EXT -#define GL_BGRA_EXT 0x80e1 -#endif - -#include <FTGL/ftgl.h> \ No newline at end of file diff --git a/Source/Processors/ArduinoOutput.cpp b/Source/Processors/ArduinoOutput/ArduinoOutput.cpp similarity index 95% rename from Source/Processors/ArduinoOutput.cpp rename to Source/Processors/ArduinoOutput/ArduinoOutput.cpp index 345336f44ca01fd27b46f8ab394ddbe93365d673..053020e76980a015ff39f4b531e81b38f337fb8c 100755 --- a/Source/Processors/ArduinoOutput.cpp +++ b/Source/Processors/ArduinoOutput/ArduinoOutput.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/ArduinoOutput.h b/Source/Processors/ArduinoOutput/ArduinoOutput.h similarity index 88% rename from Source/Processors/ArduinoOutput.h rename to Source/Processors/ArduinoOutput/ArduinoOutput.h index 451a7d21f10dd31dd3188c9ffc8e46c456e2c6e8..86f6480dbedf6b8bdff342f5505bfd7f12847921 100755 --- a/Source/Processors/ArduinoOutput.h +++ b/Source/Processors/ArduinoOutput/ArduinoOutput.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,11 +24,11 @@ #ifndef __ARDUINOOUTPUT_H_F7BDA585__ #define __ARDUINOOUTPUT_H_F7BDA585__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" -#include "Editors/ArduinoOutputEditor.h" -#include "Serial/ofArduino.h" -#include "GenericProcessor.h" +#include "ArduinoOutputEditor.h" +#include "../Serial/ofArduino.h" +#include "../GenericProcessor/GenericProcessor.h" /** diff --git a/Source/Processors/Editors/ArduinoOutputEditor.cpp b/Source/Processors/ArduinoOutput/ArduinoOutputEditor.cpp similarity index 94% rename from Source/Processors/Editors/ArduinoOutputEditor.cpp rename to Source/Processors/ArduinoOutput/ArduinoOutputEditor.cpp index b0b635ce7ec1e37d3a2cedcb0892099c3d5a8789..90d38ef1a53757f0798b44f11fae18ab5d632c50 100644 --- a/Source/Processors/Editors/ArduinoOutputEditor.cpp +++ b/Source/Processors/ArduinoOutput/ArduinoOutputEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/Editors/ArduinoOutputEditor.h b/Source/Processors/ArduinoOutput/ArduinoOutputEditor.h similarity index 89% rename from Source/Processors/Editors/ArduinoOutputEditor.h rename to Source/Processors/ArduinoOutput/ArduinoOutputEditor.h index 18bf0754a7dc1c01c7df136bdf34b16418f220b9..ab99d8beb85d012ed12e2b80f9b2fd74e7e7ebca 100644 --- a/Source/Processors/Editors/ArduinoOutputEditor.h +++ b/Source/Processors/ArduinoOutput/ArduinoOutputEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,8 +26,8 @@ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" -#include "ImageIcon.h" +#include "../Editors/GenericEditor.h" +#include "../Editors/ImageIcon.h" class ImageIcon; diff --git a/Source/Processors/Editors/AudioEditor.cpp b/Source/Processors/AudioNode/AudioEditor.cpp similarity index 95% rename from Source/Processors/Editors/AudioEditor.cpp rename to Source/Processors/AudioNode/AudioEditor.cpp index a3140e0334d9df3745be414c73d8f19fdbd8522d..ce49cc8ec94a16ea38cc54a1124d09e6ddb507d0 100755 --- a/Source/Processors/Editors/AudioEditor.cpp +++ b/Source/Processors/AudioNode/AudioEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -83,7 +83,7 @@ void AudioWindowButton::setText(String text) } AudioEditor::AudioEditor(AudioNode* owner) - : AudioProcessorEditor(owner), lastValue(1.0f), acw(0), isEnabled(true) + : AudioProcessorEditor(owner), lastValue(1.0f), isEnabled(true), acw(0) { diff --git a/Source/Processors/Editors/AudioEditor.h b/Source/Processors/AudioNode/AudioEditor.h similarity index 93% rename from Source/Processors/Editors/AudioEditor.h rename to Source/Processors/AudioNode/AudioEditor.h index 2cc91107d32ab8a7501b8f39454da438f80a0bde..c4808ba8dc1b9aa11edc4b0179083be73f474e8a 100755 --- a/Source/Processors/Editors/AudioEditor.h +++ b/Source/Processors/AudioNode/AudioEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,7 +25,7 @@ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "../AudioNode.h" +#include "AudioNode.h" #include <stdio.h> class AudioNode; diff --git a/Source/Processors/AudioNode.cpp b/Source/Processors/AudioNode/AudioNode.cpp similarity index 82% rename from Source/Processors/AudioNode.cpp rename to Source/Processors/AudioNode/AudioNode.cpp index bfd9c8ca986e1eeda036d40dbfd7918bd4f0290b..53d3339624768a4e73a505a4eb46cbb93b912d45 100755 --- a/Source/Processors/AudioNode.cpp +++ b/Source/Processors/AudioNode/AudioNode.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -21,9 +21,9 @@ */ +#include <cmath> #include "AudioNode.h" -#include "Channel.h" AudioNode::AudioNode() : GenericProcessor("Audio Node"), audioEditor(0), volume(0.00001f), noiseGateLevel(0.0f), @@ -140,7 +140,8 @@ void AudioNode::setParameter(int parameterIndex, float newValue) else if (parameterIndex == 2) { // noiseGateLevel level - noiseGateLevel = newValue; // in microVolts + + expander.setThreshold(newValue); // in microVolts } else if (parameterIndex == 100) @@ -334,7 +335,7 @@ void AudioNode::process(AudioSampleBuffer& buffer, // std::cout << "Samples remaining in incoming buffer: " << orphanedSamples << std::endl; - if (orphanedSamples > 0) + if (orphanedSamples > 0 && (samplesInBackupBuffer + orphanedSamples < backupBuffer->getNumSamples())) { backupBuffer->addFrom(0, // destination channel samplesInBackupBuffer, // destination start sample @@ -354,20 +355,17 @@ void AudioNode::process(AudioSampleBuffer& buffer, gain // gain to apply ); - } + } + else { + samplesInBackupBuffer = 0; // just throw out the buffer in the case of an overrun + // not ideal, but the output still sounds fine + } // Simple implementation of a "noise gate" on audio output - float* leftChannelData = buffer.getWritePointer(0); - float* rightChannelData = buffer.getWritePointer(1); - float gateLevel = noiseGateLevel * gain; // uVolts scaled by gain + expander.process(buffer.getWritePointer(0), // left channel + buffer.getWritePointer(1), // right channel + buffer.getNumSamples()); - for (int m = 0; m < buffer.getNumSamples(); m++) - { - if (fabs(leftChannelData[m]) < gateLevel) - leftChannelData[m] = 0; - if (fabs(rightChannelData[m]) < gateLevel) - rightChannelData[m] = 0; - } } } @@ -378,3 +376,70 @@ void AudioNode::process(AudioSampleBuffer& buffer, } } + +// ========================================================== + +Expander::Expander() +{ + threshold = 1.f; + output = 1.f; + + env = 0.f; + gain = 1.f; + + setAttack(1.0f); + setRelease(1.0f); + setRatio(1.2); // ratio > 1.0 will decrease gain below threshold +} + +void Expander::setThreshold(float value) +{ + threshold = value; + transfer_B = output * pow(threshold, -transfer_A); + + std::cout << "Threshold set to " << threshold << std::endl; + std::cout << "transfer_B set to " << transfer_B << std::endl; +} + + +void Expander::setRatio(float value) +{ + transfer_A = value - 1.f; + transfer_B = output * pow(threshold, -transfer_A); +} + + +void Expander::setAttack(float value) +{ + attack = exp(-1.f/value); +} + + +void Expander::setRelease(float value) +{ + release = exp(-1.f/value); + envelope_decay = exp(-4.f/value); /* = exp(-1/(0.25*value)) */ +} + + +void Expander::process(float* leftChan, float* rightChan, int numSamples) +{ + float det, transfer_gain; + + for(int i = 0; i < numSamples; i++) + { + det = jmax(fabs(leftChan[i]),fabs(rightChan[i])); + det += 10e-30f; /* add tiny DC offset (-600dB) to prevent denormals */ + + env = det >= env ? det : det + envelope_decay*(env-det); + + transfer_gain = env < threshold ? pow(env, transfer_A) * transfer_B : output; + + gain = transfer_gain < gain ? + transfer_gain + attack * (gain - transfer_gain) : + transfer_gain + release * (gain - transfer_gain); + + leftChan[i] = leftChan[i] * gain; + rightChan[i] = rightChan[i] * gain; + } +} \ No newline at end of file diff --git a/Source/Processors/AudioNode.h b/Source/Processors/AudioNode/AudioNode.h similarity index 83% rename from Source/Processors/AudioNode.h rename to Source/Processors/AudioNode/AudioNode.h index 011ae3af5597005c92028faec62966e323c9babe..c6fda84453558d968420e3f5abe250bc1a1f1639 100755 --- a/Source/Processors/AudioNode.h +++ b/Source/Processors/AudioNode/AudioNode.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,13 +25,13 @@ #define __AUDIONODE_H_AF61F3C5__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" #include <stdio.h> -#include "GenericProcessor.h" -#include "Editors/AudioEditor.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "AudioEditor.h" -#include "Channel.h" +#include "../Channel/Channel.h" class AudioEditor; @@ -57,6 +57,27 @@ class AudioEditor; */ +class Expander +{ +public: + Expander(); + void setThreshold(float); + void setRatio(float); + void setAttack(float); + void setRelease(float); + void reset(); + + void process(float* leftChan, float* rightChan, int numSamples); + +private: + float threshold; + float attack, release, envelope_decay; + float output; + float transfer_A, transfer_B; + float env, gain; + +}; + class AudioNode : public GenericProcessor { public: @@ -118,6 +139,8 @@ private: bool bufferSwap; + Expander expander; + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(AudioNode); }; diff --git a/Source/Processors/AudioResamplingNode.cpp b/Source/Processors/AudioResamplingNode/AudioResamplingNode.cpp similarity index 100% rename from Source/Processors/AudioResamplingNode.cpp rename to Source/Processors/AudioResamplingNode/AudioResamplingNode.cpp diff --git a/Source/Processors/AudioResamplingNode.h b/Source/Processors/AudioResamplingNode/AudioResamplingNode.h similarity index 93% rename from Source/Processors/AudioResamplingNode.h rename to Source/Processors/AudioResamplingNode/AudioResamplingNode.h index b3a85b7bcd6dfd8fe387b562fe897d29f3b2617d..77cda548eaa6c289bbcc27162632b62881a9c740 100644 --- a/Source/Processors/AudioResamplingNode.h +++ b/Source/Processors/AudioResamplingNode/AudioResamplingNode.h @@ -24,11 +24,9 @@ #ifndef __AUDIORESAMPLINGNODE_H_CFAB182E__ #define __AUDIORESAMPLINGNODE_H_CFAB182E__ - - -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" #include "../Dsp/Dsp.h" -#include "GenericProcessor.h" +#include "../GenericProcessor/GenericProcessor.h" /** diff --git a/Source/Processors/Channel.cpp b/Source/Processors/Channel/Channel.cpp similarity index 68% rename from Source/Processors/Channel.cpp rename to Source/Processors/Channel/Channel.cpp index 27c891cd999447283c6bcb8a3edb6e37e044a824..ec382768aeed4c23ad53111c3d8e59eb0030151b 100644 --- a/Source/Processors/Channel.cpp +++ b/Source/Processors/Channel/Channel.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,8 +24,8 @@ #include "Channel.h" -Channel::Channel(GenericProcessor* p, int n) : num(n), eventType(0), processor(p), sampleRate(44100.0), bitVolts(1.0f), isADCchannel(false),isEventChannel(false), isMonitored(false), isEnabled(true), isRecording(false) - +Channel::Channel(GenericProcessor* p, int n) : num(n), eventType(0), processor(p), sampleRate(44100.0), + isEventChannel(false), isADCchannel(false), isMonitored(false), isEnabled(true), recordIndex(-1), bitVolts(1.0f), isRecording(false) { nodeId = p->getNodeId(); @@ -46,9 +46,28 @@ Channel::Channel(const Channel& ch) nodeId = ch.nodeId; num = ch.num; + originalStream = ch.originalStream; + originalChannel = ch.originalChannel; + setRecordState(false); } +float Channel::getChannelGain() +{ + return bitVolts; +} + +String Channel::getChannelName() +{ + return name; +} + +void Channel::setGain(float gain) +{ + bitVolts = gain; +} + + void Channel::setProcessor(GenericProcessor* p) { processor = p; @@ -64,10 +83,21 @@ String Channel::getName() void Channel::setRecordState(bool t) { - isRecording = t; - //std::cout << "Setting record status for channel " << - // nodeId << " - " << num << " to " << t << std::endl; + isRecording = t; + //std::cout << "Setting record status for channel " << + // nodeId << " - " << num << " to " << t << std::endl; + +} + +void Channel::setType(channelType t) +{ + type = t; +} + +channelType Channel::getType() +{ + return type; } void Channel::setName(String name_) diff --git a/Source/Processors/Channel.h b/Source/Processors/Channel/Channel.h similarity index 74% rename from Source/Processors/Channel.h rename to Source/Processors/Channel/Channel.h index e13299052cc42652dd2f61de4e22d6eba48351b6..737f1bb2835d0b4feb842b891a7de7a9366527b2 100644 --- a/Source/Processors/Channel.h +++ b/Source/Processors/Channel/Channel.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,9 +25,9 @@ #define __CHANNEL_H_DABDFE3F__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" +#include "../GenericProcessor/GenericProcessor.h" #include <stdio.h> @@ -47,6 +47,7 @@ class GenericProcessor; */ + class Channel { @@ -64,6 +65,12 @@ public: /** Sets the name of a given channel. */ void setName(String); + /** Sets the type of a given channel. */ + void setType(channelType t); + + /** Sets the type of a given channel. */ + channelType getType(); + /** Restores the default settings for a given channel. */ void reset(); @@ -74,10 +81,16 @@ public: void setRecordState(bool t); // {isRecording = t;} /** Sets whether or not the channel will record. */ - bool getRecordState() - { - return isRecording; - } + bool getRecordState() {return isRecording;} + + /** Sets a new channel gain by modifying bitVolts */ + void setGain(float gain); + + /** returns channel's name */ + String getChannelName(); + + /** returns current gain */ + float getChannelGain(); /** The channel number.*/ int num; @@ -91,25 +104,30 @@ public: /** Pointer to the channel's parent processor. */ GenericProcessor* processor; + int originalStream; + int originalChannel; + + // crucial information: float sampleRate; - float bitVolts; - - // boolean values: + channelType type; + + // boolean values: bool isEventChannel; bool isADCchannel; bool isMonitored; bool isEnabled; - // file info (for disk writing): - String filename; - FILE* file; + // file info (for disk writing). Meaning depends on RecordEngine + int recordIndex; String name; + float bitVolts; + private: - bool isRecording; + bool isRecording; /** Generates a default name, based on the channel number. */ void createDefaultName(); diff --git a/Source/Processors/Editors/ChannelMappingEditor.cpp b/Source/Processors/ChannelMappingNode/ChannelMappingEditor.cpp similarity index 93% rename from Source/Processors/Editors/ChannelMappingEditor.cpp rename to Source/Processors/ChannelMappingNode/ChannelMappingEditor.cpp index c18fa487ba14d52ade34b4fd56df33aa26700eb0..4ad9ae72d9da68ac452bb2d67d1c4009733cb485 100644 --- a/Source/Processors/Editors/ChannelMappingEditor.cpp +++ b/Source/Processors/ChannelMappingNode/ChannelMappingEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI -Copyright (C) 2013 Open Ephys +Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -23,9 +23,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "ChannelMappingEditor.h" -#include "../ChannelMappingNode.h" +#include "ChannelMappingNode.h" #include "../../UI/EditorViewport.h" -#include "ChannelSelector.h" +#include "../Editors/ChannelSelector.h" #include <stdio.h> @@ -33,7 +33,7 @@ ChannelMappingEditor::ChannelMappingEditor(GenericProcessor* parentNode, bool us : GenericEditor(parentNode, useDefaultParameterEditors), previousChannelCount(0), isConfigured(false) { - desiredWidth = 340; + desiredWidth = 350; scrollDistance = 0; @@ -58,6 +58,19 @@ ChannelMappingEditor::ChannelMappingEditor(GenericProcessor* parentNode, bool us resetButton->setClickingTogglesState(false); resetButton->setEnabled(false); + upButton = new TriangleButton(1); + upButton->addListener(this); + upButton->setBounds(320,30,10,8); + addAndMakeVisible(upButton); + upButton->setVisible(false); + + downButton = new TriangleButton(2); + downButton->addListener(this); + downButton->setBounds(320,45,10,8); + addAndMakeVisible(downButton); + downButton->setVisible(false); + + // channelSelector->setRadioStatus(true); for (int i = 0 ; i < NUM_REFERENCES; i++) @@ -188,6 +201,15 @@ void ChannelMappingEditor::createElectrodeButtons(int numNeeded, bool clearPrevi channelSelector->setRadioStatus(true); refreshButtonLocations(); + + if (numNeeded > 100) + { + upButton->setVisible(true); + downButton->setVisible(true); + } else { + upButton->setVisible(false); + downButton->setVisible(false); + } } void ChannelMappingEditor::refreshButtonLocations() @@ -471,6 +493,28 @@ void ChannelMappingEditor::buttonEvent(Button* button) } + } else if (button == upButton) + { + + scrollDistance -= 1; + + if (scrollDistance < 0) + scrollDistance = 0; + + refreshButtonLocations(); + + } else if (button == downButton) + { + + float maxScrollDistance = ceil(float(electrodeButtons.size() - 80) / 16.0f); + + scrollDistance += 1; + + if (scrollDistance > maxScrollDistance) + scrollDistance = maxScrollDistance; + + refreshButtonLocations(); + } } diff --git a/Source/Processors/Editors/ChannelMappingEditor.h b/Source/Processors/ChannelMappingNode/ChannelMappingEditor.h similarity index 88% rename from Source/Processors/Editors/ChannelMappingEditor.h rename to Source/Processors/ChannelMappingNode/ChannelMappingEditor.h index 1def1ca825b9e6182be3bacd6c5b5b6779c64684..26aac8cd323181267e7d5e8b0ef9198f7085608f 100644 --- a/Source/Processors/Editors/ChannelMappingEditor.h +++ b/Source/Processors/ChannelMappingNode/ChannelMappingEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,9 +26,9 @@ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" -#include "ElectrodeButtons.h" // for ElectrodeButton and ElectrodeEditorButton +#include "../Editors/ElectrodeButtons.h" // for ElectrodeButton and ElectrodeEditorButton #define NUM_REFERENCES 4 @@ -83,6 +83,8 @@ private: ScopedPointer<ElectrodeEditorButton> selectAllButton; ScopedPointer<ElectrodeEditorButton> modifyButton; ScopedPointer<ElectrodeEditorButton> resetButton; + ScopedPointer<TriangleButton> upButton; + ScopedPointer<TriangleButton> downButton; Array<int> channelArray; Array<int> referenceArray; diff --git a/Source/Processors/ChannelMappingNode.cpp b/Source/Processors/ChannelMappingNode/ChannelMappingNode.cpp similarity index 95% rename from Source/Processors/ChannelMappingNode.cpp rename to Source/Processors/ChannelMappingNode/ChannelMappingNode.cpp index f99ea6c6f5451e77218c647fa048e503eca54abd..1fa005652daa87683bc7dc13d390a6fe0d3af56d 100644 --- a/Source/Processors/ChannelMappingNode.cpp +++ b/Source/Processors/ChannelMappingNode/ChannelMappingNode.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI -Copyright (C) 2013 Open Ephys +Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include <stdio.h> #include "ChannelMappingNode.h" -#include "Editors/ChannelMappingEditor.h" +#include "ChannelMappingEditor.h" diff --git a/Source/Processors/ChannelMappingNode.h b/Source/Processors/ChannelMappingNode/ChannelMappingNode.h similarity index 89% rename from Source/Processors/ChannelMappingNode.h rename to Source/Processors/ChannelMappingNode/ChannelMappingNode.h index 6a69d0e1398094f450275b0b8c51af07e6a8be22..46f5572589685ad9f1b81724c517aca99c06d638 100644 --- a/Source/Processors/ChannelMappingNode.h +++ b/Source/Processors/ChannelMappingNode/ChannelMappingNode.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,10 +25,10 @@ #define __CHANNELMAPPINGNODE_H_330E50E0__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" +#include "../GenericProcessor/GenericProcessor.h" /** diff --git a/Source/Processors/DataThreads/DataBuffer.cpp b/Source/Processors/DataThreads/DataBuffer.cpp index 70a146bf1fa640bf4c2ec20c2ae8939a701d4a29..3eabce007cf11ac85efbb28f7a985b2d39ea49a4 100755 --- a/Source/Processors/DataThreads/DataBuffer.cpp +++ b/Source/Processors/DataThreads/DataBuffer.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/DataThreads/DataBuffer.h b/Source/Processors/DataThreads/DataBuffer.h index 01930fbdce8a3b0eda5ea4102c21ce337866ce3a..7bcb29a0bdb8ac1d4add69af745ab7d8af767f13 100755 --- a/Source/Processors/DataThreads/DataBuffer.h +++ b/Source/Processors/DataThreads/DataBuffer.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/DataThreads/DataThread.cpp b/Source/Processors/DataThreads/DataThread.cpp index aeebad2b5dde064a06294ed8b35b2e20758e80e3..5c6de4151ad9308bc3c61b7a99f3ac3a749cd5e0 100755 --- a/Source/Processors/DataThreads/DataThread.cpp +++ b/Source/Processors/DataThreads/DataThread.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,7 +22,7 @@ */ #include "DataThread.h" -#include "../SourceNode.h" +#include "../SourceNode/SourceNode.h" DataThread::DataThread(SourceNode* s) : Thread("Data Thread"), dataBuffer(0) diff --git a/Source/Processors/DataThreads/DataThread.h b/Source/Processors/DataThreads/DataThread.h index e91cb608799657b99fc1bbadc232f179ed08b486..6795e28169d826ca552ad9c3b566cd159bc2f25a 100755 --- a/Source/Processors/DataThreads/DataThread.h +++ b/Source/Processors/DataThreads/DataThread.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -27,6 +27,7 @@ #include "../../../JuceLibraryCode/JuceHeader.h" #include <stdio.h> #include "DataBuffer.h" +#include "../GenericProcessor/GenericProcessor.h" class SourceNode; @@ -92,6 +93,30 @@ public: { return 0; } + virtual int modifyChannelName(channelType t, int stream, int ch, String newName) + { + return -1; + } + virtual int modifyChannelGain(channelType t, int stream, int ch, float gain) + { + return -1; + } + virtual void setDefaultNamingScheme(int scheme) + { + } + + virtual void getChannelsInfo(StringArray &Names, Array<channelType> &type, Array<int> &stream, Array<int> &originalChannelNumber, Array<float> &gains) + { + }; + virtual void getEventChannelNames(StringArray &names) + { + } + + /** Returns the number of ADC channels of the data source.*/ + virtual int getNumADCchannels() + { + return 0; + } /** Changes the names of channels, if the thread needs custom names. */ virtual void updateChannelNames() { } diff --git a/Source/Processors/DataThreads/EcubeEditor.cpp b/Source/Processors/DataThreads/EcubeEditor.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fa9c7aecc35bdf99306de3f5b244bb75a02eed5f --- /dev/null +++ b/Source/Processors/DataThreads/EcubeEditor.cpp @@ -0,0 +1,173 @@ +/* +------------------------------------------------------------------ + +This file is part of the Open Ephys GUI +Copyright (C) 2014 Open Ephys +Copyright (C) 2014 Michael Borisov + +------------------------------------------------------------------ + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include "EcubeEditor.h" + +#include "EcubeThread.h" + +#include <stdio.h> + +EcubeEditor::EcubeEditor(GenericProcessor* parentNode, bool useDefaultParameterEditors = true) +: GenericEditor(parentNode, useDefaultParameterEditors) + +{ + desiredWidth = 180; + + ipLabel = new Label("IP address label", "Address"); + ipLabel->setBounds(35, 80, 180, 20); + ipLabel->setFont(Font("Small Text", 12, Font::plain)); + addAndMakeVisible(ipLabel); + + ipValue = new Label("IP address value", "127.0.0.1"); + ipValue->setBounds(40, 50, 60, 20); + ipValue->setFont(Font("Default", 15, Font::plain)); + ipValue->setColour(Label::textColourId, Colours::white); + ipValue->setColour(Label::backgroundColourId, Colours::grey); + ipValue->setEditable(true); + ipValue->addListener(this); + addAndMakeVisible(ipValue); + +} + +EcubeEditor::~EcubeEditor() +{ + +} + +void EcubeEditor::labelTextChanged(Label* label) +{/* + FilterNode* fn = (FilterNode*)getProcessor(); + + Value val = label->getTextValue(); + double requestedValue = double(val.getValue()); + + if (requestedValue < 0.01 || requestedValue > 10000) + { + sendActionMessage("Value out of range."); + + if (label == highCutValue) + { + label->setText(lastHighCutString, dontSendNotification); + lastHighCutString = label->getText(); + } + else + { + label->setText(lastLowCutString, dontSendNotification); + lastLowCutString = label->getText(); + } + + return; + } + + Array<int> chans = getActiveChannels(); + + // This needs to change, since there's not enough feedback about whether + // or not individual channel settings were altered: + + for (int n = 0; n < chans.size(); n++) + { + + if (label == highCutValue) + { + double minVal = fn->getLowCutValueForChannel(n); + + if (requestedValue > minVal) + { + fn->setCurrentChannel(n); + fn->setParameter(1, requestedValue); + } + + lastHighCutString = label->getText(); + + } + else + { + double maxVal = fn->getHighCutValueForChannel(n); + + if (requestedValue < maxVal) + { + fn->setCurrentChannel(n); + fn->setParameter(0, requestedValue); + } + + lastLowCutString = label->getText(); + } + + } +*/ +} + + +void EcubeEditor::buttonEvent(Button* button) +{ + + if (!acquisitionIsActive) + { + +/* if (button == fileButton) + { + //std::cout << "Button clicked." << std::endl; + FileChooser chooseFileReaderFile("Please select the file you want to load...", + lastFilePath, + "*"); + + if (chooseFileReaderFile.browseForFileToOpen()) + { + // Use the selected file + setFile(chooseFileReaderFile.getResult().getFullPathName()); + + // lastFilePath = fileToRead.getParentDirectory(); + + // thread->setFile(fileToRead.getFullPathName()); + + // fileNameLabel->setText(fileToRead.getFileName(),false); + } + } + */ + } +} + +void EcubeEditor::saveEditorParameters(XmlElement* xml) +{ + + // XmlElement* fileName = xml->createNewChildElement("FILENAME"); + // fileName->addTextElement(lastFilePath.getFullPathName()); + +} + +void EcubeEditor::loadEditorParameters(XmlElement* xml) +{ + + // forEachXmlChildElement(*xml, xmlNode) + // { + // if (xmlNode->hasTagName("FILENAME")) + // { + + // lastFilePath = File(xmlNode->getText()); + // thread->setFile(lastFilePath.getFullPathName()); + // fileNameLabel->setText(lastFilePath.getFullPathName(),false); + // } + // } + +} diff --git a/Source/Processors/DataThreads/EcubeEditor.h b/Source/Processors/DataThreads/EcubeEditor.h new file mode 100644 index 0000000000000000000000000000000000000000..a8c800092415e1996b45f338089f2b630e0b02be --- /dev/null +++ b/Source/Processors/DataThreads/EcubeEditor.h @@ -0,0 +1,65 @@ +/* +------------------------------------------------------------------ + +This file is part of the Open Ephys GUI +Copyright (C) 2014 Open Ephys +Copyright (C) 2014 Michael Borisov + +------------------------------------------------------------------ + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#ifndef __ECUBEEDITOR_H_D3EC8BA8__ +#define __ECUBEEDITOR_H_D3EC8BA8__ + +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../Editors/GenericEditor.h" + + + +/** + +User interface for the "eCube" source node. + +@see SourceNode, eCube + +*/ + +class EcubeEditor : public GenericEditor, + public Label::Listener +{ +public: + EcubeEditor(GenericProcessor* parentNode, bool useDefaultParameterEditors); + virtual ~EcubeEditor(); + + void buttonEvent(Button* button); + void labelTextChanged(Label* label); + + void saveEditorParameters(XmlElement*); + void loadEditorParameters(XmlElement*); + +private: + ScopedPointer<Label> ipLabel; + ScopedPointer<Label> ipValue; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(EcubeEditor); + +}; + + + +#endif // __ECUBEEDITOR_H_D3EC8BA8__ diff --git a/Source/Processors/DataThreads/EcubeThread.cpp b/Source/Processors/DataThreads/EcubeThread.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1e7535c00386d17abcb40f77e4c1d4079e6bf725 --- /dev/null +++ b/Source/Processors/DataThreads/EcubeThread.cpp @@ -0,0 +1,567 @@ +/* +------------------------------------------------------------------ + +This file is part of the Open Ephys GUI +Copyright (C) 2014 Michael Borisov + +------------------------------------------------------------------ + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ +#include "EcubeThread.h" +#include "../SourceNode/SourceNode.h" +#include "../../UI/EcubeDialogComponent.h" +#include <stdint.h> + +#ifdef ECUBE_COMPILE +#import "libid:60C0AAC2-1E0B-4FE5-A921-AF9CEEAAA582" + +using namespace ecubeapiLib; + +class EcubeDevInt +{ +public: + + enum DataFormat + { + dfSeparateChannelsAnalog, + dfInterleavedChannelsAnalog, + dfDigital + }; + IEcubePtr pEcube; + IEcubeDevicePtr pDevice; + IEcubeModulePtr pModule; + unsigned n_channel_objects; + std::map<int, int> chid_map; + IEcubeAnalogAcquisitionPtr pStrmA; + IEcubeDigitalInputStreamingPtr pStrmD; + HeapBlock<float, true> interleaving_buffer; + bool buf_timestamp_locked; + unsigned long buf_timestamp; + uint64 buf_timestamp64; + unsigned long int_buf_size; + DataFormat data_format; +}; + +static const char bits_port0[16] = { 23, 22, -1, 14, 11, -1, -1, 28, 12, 10, 27, 26, -1, -1, -1, -1 }; +static const char bits_port1[16] = { 20, 21, 19, 18, 13, 6, 4, 5, 3, 2, -1, -1, 29, -1, 24, 25 }; +static const char bits_port2[16] = { 16, 17, 15, 8, 9, 7, 0, 1, 31, 30, -1, -1, -1, -1, -1, -1 }; + + + +static std::vector<std::wstring> SafeArrayToVecStr(SAFEARRAY* sa) +{ + HRESULT hr; + long lbound, ubound; + + if (SafeArrayGetElemsize(sa) != sizeof(BSTR*)) + _com_raise_error(E_FAIL); + if(SafeArrayGetDim(sa)!=1) + _com_raise_error(E_FAIL); + if (FAILED(hr = SafeArrayGetLBound(sa, 1, &lbound))) + _com_raise_error(hr); + if (FAILED(hr = SafeArrayGetUBound(sa, 1, &ubound))) + _com_raise_error(hr); + + std::vector<std::wstring> result; + for (long index = lbound; index <= ubound; index++) + { + BSTR raw_bstr; + if (FAILED(hr = SafeArrayGetElement(sa, &index, &raw_bstr))) + _com_raise_error(hr); + _bstr_t bstr(raw_bstr, false); + result.push_back(raw_bstr); + } + return result; +} + +static StringArray SafeArrayToStringArray(SAFEARRAY* sa) +{ + HRESULT hr; + long lbound, ubound; + VARTYPE vt; + + hr = SafeArrayGetVartype(sa, &vt); + if (FAILED(hr)) + _com_raise_error(hr); + if (vt!=VT_BSTR) + _com_raise_error(E_FAIL); + if (SafeArrayGetElemsize(sa) != sizeof(BSTR*)) + _com_raise_error(E_FAIL); + if (SafeArrayGetDim(sa) != 1) + _com_raise_error(E_FAIL); + if (FAILED(hr = SafeArrayGetLBound(sa, 1, &lbound))) + _com_raise_error(hr); + if (FAILED(hr = SafeArrayGetUBound(sa, 1, &ubound))) + _com_raise_error(hr); + + StringArray result; + for (long index = lbound; index <= ubound; index++) + { + BSTR raw_bstr; + if (FAILED(hr = SafeArrayGetElement(sa, &index, &raw_bstr))) + _com_raise_error(hr); + _bstr_t bstr(raw_bstr, false); + result.add(raw_bstr); + } + return result; +} + +std::vector<std::wstring> GetEcubeModuleChannels(IEcubeModulePtr& mp) +{ + std::vector<std::wstring> chnames; + { + SAFEARRAY *sa = mp->GetChannels(); + chnames = SafeArrayToVecStr(sa); + SafeArrayDestroy(sa); // ARTEM - Leaks a safearray if an exception is thrown here + } + return chnames; +} + +EcubeThread::EcubeThread(SourceNode* sn) : DataThread(sn), numberingScheme(1), acquisition_running(false) +{ + try + { + EcubeDialogComponent component; + DialogWindow::LaunchOptions opt; + opt.dialogTitle = "eCube parameters"; + opt.content = OptionalScopedPointer<Component>(&component, false); + opt.escapeKeyTriggersCloseButton = true; + + pDevInt = new EcubeDevInt; + pDevInt->pEcube.CreateInstance(__uuidof(Ecube)); + { + SAFEARRAY *sa = pDevInt->pEcube->DetectNetworkDevices(); + StringArray a(SafeArrayToStringArray(sa)); // ARTEM - Leaks a safearray if an exception is thrown here + SafeArrayDestroy(sa); + component.SetDeviceNames(a); + } + int dres = opt.runModal(); + if (dres != 1) + { + throw std::runtime_error("Operation cancelled"); + } + + pDevInt->pDevice = pDevInt->pEcube->OpenNetworkDevice(_bstr_t(component.GetAddressValue().toUTF16())); + pDevInt->n_channel_objects = 0; + { + String selmod = component.GetModuleName(); + if (selmod == "Headstage(s)") + { + m_samplerate = 25000.0f; + pDevInt->data_format = EcubeDevInt::dfSeparateChannelsAnalog; + // Get status of headstage selection + bool selhs[10]; + component.GetHeadstageSelection(selhs); + bool acq_created = false; + for (int i = 0; i < 10; i++) + { + if (selhs[i]) + { + String modname = "Headstage" + String(i + 1); + pDevInt->pModule = pDevInt->pDevice->OpenModule(_bstr_t(modname.toUTF16())); + std::vector<std::wstring> chnames = GetEcubeModuleChannels(pDevInt->pModule); + for (int j = 0; j < chnames.size(); j++) + { + IEcubeChannelPtr pch = pDevInt->pModule->OpenChannel(chnames[j].c_str()); + if (!acq_created) + { + pDevInt->pStrmA = pDevInt->pEcube->CreateAnalogAcquisition(pch); + acq_created = true; + } + else + pDevInt->pStrmA->AddChannel(pch); + pDevInt->chid_map[pch->GetID()] = pDevInt->n_channel_objects; + pDevInt->n_channel_objects++; + } + } + } + dataBuffer = new DataBuffer(pDevInt->n_channel_objects, 10000); + // Create the interleaving buffer based on the number of channels + pDevInt->interleaving_buffer.malloc(sizeof(float)* 1500 * pDevInt->n_channel_objects); + } + else if (selmod == "Panel Analog Input") + { + pDevInt->pModule = pDevInt->pDevice->OpenModule(_bstr_t(L"PanelAnalogInput")); + m_samplerate = 25000.0f;// 40.0e6 / 572 original samplerate; + pDevInt->data_format = EcubeDevInt::dfInterleavedChannelsAnalog; + bool acq_created = false; + std::vector<std::wstring> chnames = GetEcubeModuleChannels(pDevInt->pModule); + for (int j = 0; j < chnames.size(); j++) + { + IEcubeChannelPtr pch = pDevInt->pModule->OpenChannel(chnames[j].c_str()); + if (!acq_created) + { + pDevInt->pStrmA = pDevInt->pEcube->CreateAnalogAcquisition(pch); + acq_created = true; + } + else + pDevInt->pStrmA->AddChannel(pch); + pDevInt->chid_map[pch->GetID()] = pDevInt->n_channel_objects; + pDevInt->n_channel_objects++; + } + dataBuffer = new DataBuffer(32, 10000); + // The interleaving buffer is there just for short->float conversion + pDevInt->interleaving_buffer.malloc(sizeof(float)* 1500); + } + else if (selmod == "Panel Digital Input") + { + pDevInt->pModule = pDevInt->pDevice->OpenModule(_bstr_t(L"PanelDigitalIO")); + m_samplerate = 25000.0f; + pDevInt->data_format = EcubeDevInt::dfDigital; + + bool acq_created = false; + std::vector<std::wstring> chnames = GetEcubeModuleChannels(pDevInt->pModule); + for (int j = 0; j < chnames.size(); j++) + { + IEcubeChannelPtr pch = pDevInt->pModule->OpenChannel(chnames[j].c_str()); + if (!acq_created) + { + pDevInt->pStrmD = pDevInt->pEcube->CreateDigitalInputStreaming(pch); + acq_created = true; + } + else + pDevInt->pStrmD->AddChannel(pch); + pDevInt->chid_map[pch->GetID()] = pDevInt->n_channel_objects; + pDevInt->n_channel_objects++; + } + + dataBuffer = new DataBuffer(64, 10000); + // Create the interleaving buffer based on the number of digital ports + pDevInt->interleaving_buffer.malloc(sizeof(float)* 1500 * 64); + } + else + throw std::runtime_error("Invlid module selection"); + } + + pDevInt->buf_timestamp_locked = false; + + setDefaultChannelNamesAndType(); + + } + catch (_com_error& e) + { + // Convert COM errors to std::runtime_errors, to avoid making other files Windows-dependent + throw std::runtime_error(std::string(e.Description())); + } +} +void EcubeThread::getChannelsInfo(StringArray &Names_, Array<channelType> &type_, Array<int> &stream_, Array<int> &originalChannelNumber_, Array<float> &gains_) +{ + Names_ = Names; + type_ = type; + stream_ = stream; + originalChannelNumber_ = originalChannelNumber; + gains_ = gains; +} + +/* This will give default names & gains to channels, unless they were manually modified by the user +In that case, the query channelModified, will return the values that need to be put */ +void EcubeThread::setDefaultChannelNamesAndType() +{ + Names.clear(); + type.clear(); + stream.clear(); + gains.clear(); + originalChannelNumber.clear(); + String prefix; + channelType common_type; + + int numch = getNumChannels(); + + if (pDevInt->data_format == EcubeDevInt::dfSeparateChannelsAnalog) + { + prefix = "HS10_CH"; + common_type = DATA_CHANNEL; + } + else if (pDevInt->data_format == EcubeDevInt::dfInterleavedChannelsAnalog) + { + prefix = "PAI"; + common_type = AUX_CHANNEL; + } + else //if (pDevInt->data_format == EcubeDevInt::dfDigital) + { + prefix = "PDI"; + common_type = AUX_CHANNEL; + } + + if (numberingScheme != 1) + prefix += "_"; + + for (int i = 0; i < numch; i++) + { + Names.add(prefix + String(i)); + gains.add(getBitVolts()); + type.add(common_type); + originalChannelNumber.add(i); + } + + stream.add(0); +} + +void EcubeThread::setDefaultNamingScheme(int scheme) +{ + numberingScheme = scheme; + setDefaultChannelNamesAndType(); +} + + +EcubeThread::~EcubeThread() +{ + if (acquisition_running) + stopAcquisition(); + if (isThreadRunning()) + { + signalThreadShouldExit(); + } + waitForThreadToExit(-1); +} + +int EcubeThread::getNumChannels() +{ + if (pDevInt->data_format == EcubeDevInt::dfInterleavedChannelsAnalog) + return 32; + else if (pDevInt->data_format == EcubeDevInt::dfDigital) + return 64; + else + return pDevInt->n_channel_objects; +} + +float EcubeThread::getSampleRate() +{ + return m_samplerate; +} + +float EcubeThread::getBitVolts() +{ + return 10e3/32768; // For some reason the data is supposed to be in millivolts +} + +bool EcubeThread::foundInputSource() +{ + return true; +} + +bool EcubeThread::updateBuffer() +{ + unsigned long ba; + int16 eventcode = 0; + int nchan = pDevInt->n_channel_objects; + + if (pDevInt->data_format == EcubeDevInt::dfSeparateChannelsAnalog || pDevInt->data_format == EcubeDevInt::dfInterleavedChannelsAnalog) + ba = pDevInt->pStrmA->WaitForData(100); + else + ba = pDevInt->pStrmD->WaitForData(100); + while (ba) + { + for (unsigned long i = 0; i < ba; i++) + { + IEcubeDataBufferPtr ab; + if (pDevInt->data_format == EcubeDevInt::dfSeparateChannelsAnalog || pDevInt->data_format == EcubeDevInt::dfInterleavedChannelsAnalog) + ab = pDevInt->pStrmA->FetchNextBuffer(); + else + ab = pDevInt->pStrmD->FetchNextBuffer(); + unsigned long chid = ab->GetStreamID(); + std::map<int, int>::const_iterator chit = pDevInt->chid_map.find(chid); + if (chit != pDevInt->chid_map.end()) + { + unsigned long bts = ab->GetTimestamp(); + unsigned long datasize = ab->GetDataSize() / 2; // Data size is returned in bytes, not in samples + if (pDevInt->data_format == EcubeDevInt::dfSeparateChannelsAnalog) + { + if (!pDevInt->buf_timestamp_locked || (bts - pDevInt->buf_timestamp >= 3200 && pDevInt->buf_timestamp - bts >= 3200) + /*bts != pDevInt->buf_timestamp*/ + || datasize != pDevInt->int_buf_size) + { + // The new buffer does not match interleaving buffer length, or has a different timestamp, + // or interleaving buffer is empty + if (pDevInt->buf_timestamp_locked) + { + // Interleaving buffer is not empty. + // Send its contents out to the application + int64 cts = pDevInt->buf_timestamp64 / 3200; // Convert eCube 80MHz timestamp into a 25kHz timestamp + for (unsigned long j = 0; j < pDevInt->int_buf_size; j++) + { + dataBuffer->addToBuffer(pDevInt->interleaving_buffer + j*nchan, &cts, &eventCode, 1); + cts++; + } + // Update the 64-bit timestamp, take account of its wrap-around + unsigned tsdif = bts - pDevInt->buf_timestamp; + pDevInt->buf_timestamp64 += tsdif; + } + else + { + // The interleaving buffer is empty + pDevInt->buf_timestamp64 = bts; + } + pDevInt->int_buf_size = datasize; + pDevInt->buf_timestamp = bts; + pDevInt->buf_timestamp_locked = true; + // Clear the interleaving buffer within the new packet's size + memset(pDevInt->interleaving_buffer, 0, sizeof(float)*datasize*nchan); + } + chid = chit->second; // Adjust the channel id to become the channel index + unsigned char* dp = ab->GetDataPointer(); + const short* pData = (const short*)dp; + for (unsigned long j = 0; j < datasize; j++) + { + pDevInt->interleaving_buffer[chid + nchan*j] = pData[j] * 10.0e3 / 32768; // OpenEphys uses 10e3 instead of just 10 + } + } + else if (pDevInt->data_format == EcubeDevInt::dfInterleavedChannelsAnalog) + { + if (pDevInt->buf_timestamp_locked) + { + // Update the 64-bit timestamp, take care of its wrap-around + unsigned tsdif = pDevInt->buf_timestamp - bts; + pDevInt->buf_timestamp64 += tsdif; + } + else + { + pDevInt->buf_timestamp64 = bts; + } + pDevInt->buf_timestamp = bts; + pDevInt->buf_timestamp_locked = true; + unsigned char* dp = ab->GetDataPointer(); + const short* pData = (const short*)dp; + for (unsigned j = 0; j < datasize; j++) + { + pDevInt->interleaving_buffer[j] = pData[j] * 10.0e3 / 32768; + } + unsigned long datasam = datasize / 32; + int64 cts = pDevInt->buf_timestamp64 / 3200; // Convert eCube's 80MHz timestamps into number of samples on the Panel Analog input (orig sample rate 1144) + for (unsigned long j = 0; j < datasam; j++) + { + dataBuffer->addToBuffer(pDevInt->interleaving_buffer+j*32, &cts, &eventCode, 1); + cts++; + } + } + else // Digital data + { + unsigned tsdif = bts - pDevInt->buf_timestamp; + if (!pDevInt->buf_timestamp_locked || (bts != pDevInt->buf_timestamp && tsdif!=5 && tsdif!=10 && tsdif!=0xFFFFFFFB && tsdif!=0xFFFFFFFA) || datasize != pDevInt->int_buf_size) + { + // The new buffer does not match interleaving buffer length, or has a different timestamp, + // or interleaving buffer is empty + if (pDevInt->buf_timestamp_locked) + { + // Interleaving buffer is not empty. + // Send its contents out to the application + int64 cts = pDevInt->buf_timestamp64 / 3200; // Convert eCube 80MHz timestamp into a 25kHz timestamp + for (unsigned long j = 0; j < pDevInt->int_buf_size; j++) + { + dataBuffer->addToBuffer(pDevInt->interleaving_buffer + j*64, &cts, &eventCode, 1); + cts++; + } + // Update the 64-bit timestamp, take account of its wrap-around + pDevInt->buf_timestamp64 += tsdif; + } + else + { + // The interleaving buffer is empty + pDevInt->buf_timestamp64 = bts; + } + pDevInt->buf_timestamp = bts; + pDevInt->int_buf_size = datasize; + pDevInt->buf_timestamp_locked = true; + // Clear the interleaving buffer within the new packet's size + memset(pDevInt->interleaving_buffer, 0, sizeof(float)*datasize*64); + } + // Convert data from ecube buffer into the interleaving buffer format + chid = chit->second; // Adjust the channel id to become the channel index + unsigned char* dp = ab->GetDataPointer(); + const uint16_t* pData = (const uint16_t*)dp; + const char* pbits; + switch (chid) + { + case 0: + case 3: + pbits = bits_port0; + break; + case 1: + case 4: + pbits = bits_port1; + break; + case 2: + case 5: + default: + pbits = bits_port2; + break; + } + int bitchn_offset = chid >= 3 ? 32 : 0; + for (unsigned long j = 0; j < datasize; j++) + { + uint16_t wrd = pData[j]; + uint16_t msk = 1; + for (unsigned long k = 0; k < 16; k++) + { + int bitchn = pbits[k]; + if (bitchn>=0) + { + float val = wrd&msk ? 1.0e3f : 0.0f; + pDevInt->interleaving_buffer[bitchn + bitchn_offset + 64*j] = val; + } + msk <<= 1; + } + } + } + } + } + if (pDevInt->data_format == EcubeDevInt::dfSeparateChannelsAnalog || pDevInt->data_format == EcubeDevInt::dfInterleavedChannelsAnalog) + ba = pDevInt->pStrmA->GetBuffersAcquired(); + else + ba = pDevInt->pStrmD->GetBuffersAcquired(); + } + return true; +} + +bool EcubeThread::startAcquisition() +{ + pDevInt->buf_timestamp_locked = false; + if (!isThreadRunning()) + startThread(); + + if (!acquisition_running) + { + if (pDevInt->data_format == EcubeDevInt::dfSeparateChannelsAnalog || pDevInt->data_format == EcubeDevInt::dfInterleavedChannelsAnalog) + pDevInt->pStrmA->Start(); + else + pDevInt->pStrmD->Start(); + acquisition_running = true; + } + + return true; +} + +bool EcubeThread::stopAcquisition() +{ + if (acquisition_running) + { + if (pDevInt->data_format == EcubeDevInt::dfSeparateChannelsAnalog || pDevInt->data_format == EcubeDevInt::dfInterleavedChannelsAnalog) + pDevInt->pStrmA->Stop(); + else + pDevInt->pStrmD->Stop(); + } + acquisition_running = false; + return true; +} + +void EcubeThread::run() +{ + // Call the base class's run + DataThread::run(); +} + + +#endif \ No newline at end of file diff --git a/Source/Processors/DataThreads/EcubeThread.h b/Source/Processors/DataThreads/EcubeThread.h new file mode 100644 index 0000000000000000000000000000000000000000..14e2f0f55e746ea1420774219313a74232e46ea9 --- /dev/null +++ b/Source/Processors/DataThreads/EcubeThread.h @@ -0,0 +1,123 @@ +/* +------------------------------------------------------------------ + +This file is part of the Open Ephys GUI +Copyright (C) 2014 Open Ephys +Copyright (C) 2014 Michael Borisov + +------------------------------------------------------------------ + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#ifndef __ECUBETHREAD_H_EC4CAD67__ +#define __ECUBETHREAD_H_EC4CAD67__ + + +#include "../../../JuceLibraryCode/JuceHeader.h" + +#include <stdio.h> +#include <string.h> + +#include "DataThread.h" +#include "../GenericProcessor/GenericProcessor.h" + +#define MAX_NUM_DATA_STREAMS 8 + +class SourceNode; + +#if JUCE_WINDOWS +#ifdef ECUBE_SUPPORT +#define ECUBE_COMPILE +#endif +#endif + +#ifdef ECUBE_COMPILE +class EcubeDevInt; +#endif + +class EcubeThread : public DataThread + +{ +public: + +#ifdef ECUBE_COMPILE + EcubeThread(SourceNode* sn); + ~EcubeThread(); + + void run(); // Overridden + + /** Fills the DataBuffer with incoming data. This is the most important + method for each DataThread.*/ + virtual bool updateBuffer(); + + /** Returns true if the data source is connected, false otherwise.*/ + virtual bool foundInputSource(); + + /** Initializes data transfer.*/ + virtual bool startAcquisition(); + + /** Stops data transfer.*/ + virtual bool stopAcquisition(); + + /** Returns the number of continuous channels the data source can provide.*/ + virtual int getNumChannels(); + + /** Returns the sample rate of the data source.*/ + virtual float getSampleRate(); + + /** Returns the volts per bit of the data source.*/ + virtual float getBitVolts(); + + virtual void getChannelsInfo(StringArray &Names, Array<channelType> &type, Array<int> &stream, Array<int> &originalChannelNumber, Array<float> &gains); + void setDefaultNamingScheme(int scheme); + + +private: + void setDefaultChannelNamesAndType(); + + // used for data stream names... + int numberingScheme; + StringArray Names; + Array<channelType> type; + Array<float> gains; + Array<int> stream; + Array<int> originalChannelNumber; + + ScopedPointer<EcubeDevInt> pDevInt; + + float m_samplerate; + bool acquisition_running; + +#else +/** Empty methods for non-Windows platforms **/ + bool updateBuffer() {return false;} + bool foundInputSource() {return false;} + bool startAcquisition() {return false;} + bool stopAcquisition() {return false;} + int getNumChannels() {return 0;} + float getSampleRate() {return 0.0f;} + float getBitVolts() {return 0.0f;} + + +#endif + + + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(EcubeThread); +}; + +#endif // __RHD2000THREAD_H_2C4CBD67__ diff --git a/Source/Processors/DataThreads/FPGAThread.cpp b/Source/Processors/DataThreads/FPGAThread.cpp index 94fb0030b3c07cc8a99ac5d8384520ca3c5eb11a..d42d33778bba90cdd0892fbbaaf5191a4539d40d 100644 --- a/Source/Processors/DataThreads/FPGAThread.cpp +++ b/Source/Processors/DataThreads/FPGAThread.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,7 +22,7 @@ */ #include "FPGAThread.h" -#include "../SourceNode.h" +#include "../SourceNode/SourceNode.h" #include <string.h> #include <math.h> diff --git a/Source/Processors/DataThreads/FPGAThread.h b/Source/Processors/DataThreads/FPGAThread.h index a1f1dce5216fedb38b4415c1968661ccc29dba89..f49c7dfdbbf12a938929a1446b608a4024604b29 100755 --- a/Source/Processors/DataThreads/FPGAThread.h +++ b/Source/Processors/DataThreads/FPGAThread.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/DataThreads/FileReaderThread.cpp b/Source/Processors/DataThreads/FileReaderThread.cpp index 804b3f80ff9883e2169564dcfb0cd1b48ec1156c..bfa12cc7805d54e1f7a2744f1b9ddeb7a86d4ac6 100755 --- a/Source/Processors/DataThreads/FileReaderThread.cpp +++ b/Source/Processors/DataThreads/FileReaderThread.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -21,7 +21,7 @@ */ -#include "../SourceNode.h" +#include "../SourceNode/SourceNode.h" #include "FileReaderThread.h" FileReaderThread::FileReaderThread(SourceNode* sn) : @@ -133,6 +133,11 @@ bool FileReaderThread::updateBuffer() size_t numRead = fread(readBuffer, 2, bufferSize, input); + if (numRead != bufferSize) + { + std::cout << "Fewer samples read than were requested." << std::endl; + } + int chan = 0; for (int n = 0; n < bufferSize; n++) diff --git a/Source/Processors/DataThreads/FileReaderThread.h b/Source/Processors/DataThreads/FileReaderThread.h index bdf9dd1fc5d44efcb298b6fc9f5db4c02e49409f..c88c1e2024b5bc50acb7304d00ab20606f0afd51 100755 --- a/Source/Processors/DataThreads/FileReaderThread.h +++ b/Source/Processors/DataThreads/FileReaderThread.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/DataThreads/IntanThread.cpp b/Source/Processors/DataThreads/IntanThread.cpp index 04fb6f681fcb70402ce79f0496924008d82e8877..21cf1ef80d7da92861f5339544d0aa409dacc476 100755 --- a/Source/Processors/DataThreads/IntanThread.cpp +++ b/Source/Processors/DataThreads/IntanThread.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/DataThreads/IntanThread.h b/Source/Processors/DataThreads/IntanThread.h index d09eaf3c74921f11763d4cddc44c41c29aaa69bb..6a26cef17c11a7963b1d093997ce8d32a777da8e 100755 --- a/Source/Processors/DataThreads/IntanThread.h +++ b/Source/Processors/DataThreads/IntanThread.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/Editors/RHD2000Editor.cpp b/Source/Processors/DataThreads/RHD2000Editor.cpp similarity index 52% rename from Source/Processors/Editors/RHD2000Editor.cpp rename to Source/Processors/DataThreads/RHD2000Editor.cpp index 5f6d87906bb3d4f3a038f105a17813c5d91417a2..4c9619a5b4d6574ba42188d0cad83c4c4d93dd8a 100644 --- a/Source/Processors/Editors/RHD2000Editor.cpp +++ b/Source/Processors/DataThreads/RHD2000Editor.cpp @@ -1,48 +1,494 @@ -/* - ------------------------------------------------------------------ - - This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys - - ------------------------------------------------------------------ - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - - */ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Open Ephys + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ #include "RHD2000Editor.h" #include "../../UI/EditorViewport.h" #include <cmath> +#include "../Editors/ChannelSelector.h" +#include "../SourceNode/SourceNode.h" +#include "RHD2000Thread.h" + #ifdef WIN32 #if (_MSC_VER < 1800) //round doesn't exist on MSVC prior to 2013 version inline double round(double x) { return floor(x+0.5);} #endif #endif -#include "ChannelSelector.h" +FPGAchannelList::FPGAchannelList(GenericProcessor* proc_, Viewport *p, FPGAcanvas*c) : proc(proc_), viewport(p), canvas(c) +{ + channelComponents.clear(); + + numberingSchemeLabel = new Label("Numbering scheme:","Numbering scheme:"); + numberingSchemeLabel->setEditable(false); + numberingSchemeLabel->setBounds(10,10,150, 25); + numberingSchemeLabel->setColour(Label::textColourId,juce::Colours::white); + addAndMakeVisible(numberingSchemeLabel); + + numberingScheme = new ComboBox("numberingScheme"); + numberingScheme->addItem("Continuous",1); + numberingScheme->addItem("Per Stream",2); + numberingScheme->setBounds(160,10,100,25); + numberingScheme->addListener(this); + numberingScheme->setSelectedId(1, dontSendNotification); + addAndMakeVisible(numberingScheme); + + impedanceButton = new UtilityButton("Measure Impedance", Font("Default", 13, Font::plain)); + impedanceButton->setRadius(3); + impedanceButton->setBounds(280,10,140,25); + impedanceButton->addListener(this); + addAndMakeVisible(impedanceButton); + + + gains.clear(); + gains.add( 0.01); + gains.add( 0.1); + gains.add( 1); + gains.add( 2); + gains.add( 5); + gains.add( 10); + gains.add( 20); + gains.add( 50); + gains.add( 100); + gains.add( 500); + gains.add( 1000); + + + update(); +} + +FPGAchannelList::~FPGAchannelList() +{ + +} + +void FPGAchannelList::paint(Graphics& g) +{ +} + +void FPGAchannelList::buttonClicked(Button *btn) +{ + if (btn == impedanceButton) + { + RHD2000Editor *p = (RHD2000Editor*)proc->getEditor(); + p->measureImpedance(); + } +} + +void FPGAchannelList::update() +{ + // Query processor for number of channels, types, gains, etc... and update the UI + channelComponents.clear(); + staticLabels.clear(); + StringArray names; + Array<float> oldgains; + proc->getChannelsInfo(names,types,stream,orig_number,oldgains); + int numChannels = names.size(); + + // find out which streams are active. + bool streamActive[MAX_NUM_DATA_STREAMS+1]; + bool adcActive = false; + int numActiveStreams = 0; + int streamColumn[MAX_NUM_DATA_STREAMS+1]; + int numChannelsPerStream[MAX_NUM_DATA_STREAMS+1]; + + for (int k=0;k<MAX_NUM_DATA_STREAMS+1;k++) { + numChannelsPerStream[k] = 0; + streamActive[k] = false; + streamColumn[k] = 0; + } + int columnWidth =330; + + for (int k=0;k<numChannels;k++) + { + if (streamActive[stream[k]] == false) + { + streamColumn[stream[k]] = numActiveStreams*columnWidth; + numActiveStreams++; + streamActive[stream[k]] = true; + } + } + + StringArray streamNames; + streamNames.add("Port A1"); + streamNames.add("Port A2"); + streamNames.add("Port B1"); + streamNames.add("Port B2"); + streamNames.add("Port C1"); + streamNames.add("Port C2"); + streamNames.add("Port D1"); + streamNames.add("Port D2"); + streamNames.add("ADC"); + + for (int k=0;k<MAX_NUM_DATA_STREAMS+1;k++) + { + if (streamActive[k]) + { + Label *lbl = new Label(streamNames[k],streamNames[k]); + lbl->setEditable(false); + lbl->setBounds(10+streamColumn[k],40,columnWidth, 25); + lbl->setJustificationType(juce::Justification::centred); + lbl->setColour(Label::textColourId,juce::Colours::white); + staticLabels.add(lbl); + addAndMakeVisible(lbl); + + } + + } + + // add buttons for all DATA,AUX,channels + for (int k=0;k<numChannels;k++) + { + int channelGainIndex = 1; + float ch_gain = oldgains[k]/proc->getDefaultBitVolts(); + for (int j=0;j<gains.size();j++) { + if (fabs(gains[j]-ch_gain) < 1e-3) { + channelGainIndex = j; + break; + } + } + + FPGAchannelComponent* comp = new FPGAchannelComponent(this, stream[k],orig_number[k],types[k],channelGainIndex+1, names[k],gains); + comp->setBounds(10+streamColumn[stream[k]],70+numChannelsPerStream[stream[k]]*22,columnWidth,22); + numChannelsPerStream[stream[k]]++; + + comp->setUserDefinedData(k); + addAndMakeVisible(comp); + channelComponents.add(comp); + } + + StringArray ttlNames; + proc->getEventChannelNames(ttlNames); + // add buttons for TTL channels + for (int k=0;k<ttlNames.size();k++) + { + FPGAchannelComponent* comp = new FPGAchannelComponent(this,-1,k, EVENT_CHANNEL,-1, ttlNames[k],gains); + comp->setBounds( 10+numActiveStreams*columnWidth,70+k*22,columnWidth,22); + comp->setUserDefinedData(k); + addAndMakeVisible(comp); + channelComponents.add(comp); + } + + Label *lbl = new Label("TTL Events","TTL Events"); + lbl->setEditable(false); + lbl->setBounds(numActiveStreams*columnWidth,40,columnWidth, 25); + lbl->setJustificationType(juce::Justification::centred); + lbl->setColour(Label::textColourId,juce::Colours::white); + staticLabels.add(lbl); + addAndMakeVisible(lbl); + + +} + +void FPGAchannelList::disableAll() +{ + for (int k=0;k<channelComponents.size();k++) + { + channelComponents[k]->disableEdit(); + } +} + +void FPGAchannelList::enableAll() +{ + for (int k=0;k<channelComponents.size();k++) + { + channelComponents[k]->enableEdit(); + } + +} + +void FPGAchannelList::setNewGain(int stream, int channel, channelType type, float gain) +{ + SourceNode* p = (SourceNode*) proc; + p->modifyChannelGain(stream, channel, type, gain, true); +} + +void FPGAchannelList::setNewName(int stream, int channelIndex, channelType t, String newName) +{ + proc->modifyChannelName(t, stream, channelIndex, newName, true); +} + +void FPGAchannelList::updateButtons() +{ +} + +int FPGAchannelList::getNumChannels() +{ + return 0; +} + +void FPGAchannelList::comboBoxChanged(ComboBox *b) +{ + if (b == numberingScheme) + { + SourceNode* p = (SourceNode* )proc; + int scheme = numberingScheme->getSelectedId(); + if (scheme == 1) + { + p->setDefaultNamingScheme(scheme); + } else if (scheme == 2) + { + p->setDefaultNamingScheme(scheme); + } + update(); + + } +} + +void FPGAchannelList::updateImpedance(Array<int> streams, Array<int> channels, Array<float> magnitude, Array<float> phase) +{ + for (int k=0;k<streams.size();k++) + { + for (int j=k;j<stream.size();j++) + { + if (stream[j] == streams[k] && types[j] == DATA_CHANNEL && orig_number[j] == channels[k]) { + channelComponents[j]->setImpedanceValues(magnitude[k],phase[k]); + break; + } + + } + } + +} + + +/****************************************************/ +FPGAchannelComponent::FPGAchannelComponent(FPGAchannelList* cl, int stream_, int ch, channelType t, int gainIndex_, String N, Array<float> gains_) : gains(gains_), channelList(cl), channel(ch), name(N), stream(stream_), type(t), gainIndex(gainIndex_) +{ + Font f = Font("Small Text", 13, Font::plain); + + staticLabel = new Label("Channel","Channel"); + staticLabel->setFont(f); + staticLabel->setEditable(false); + addAndMakeVisible(staticLabel); + + editName = new Label(name,name); + editName->setFont(f); + editName->setEditable(true); + editName->setColour(Label::backgroundColourId,juce::Colours::lightgrey); + editName->addListener(this); + addAndMakeVisible(editName); + if (gainIndex > 0) + { + + gainComboBox = new ComboBox("Gains"); + for (int k=0;k<gains.size();k++) + { + if (gains[k] < 1) { + gainComboBox->addItem("x"+String(gains[k],2),k+1); + } else + { + gainComboBox->addItem("x"+String((int)gains[k]),k+1); + } + } + gainComboBox->setSelectedId(gainIndex, sendNotification); + gainComboBox->addListener(this); + addAndMakeVisible(gainComboBox); + } else + { + gainComboBox = nullptr; + } + + if (type == DATA_CHANNEL) + { + impedance = new Label("Impedance","? Ohm"); + impedance->setFont(Font("Default", 13, Font::plain)); + impedance->setEditable(false); + addAndMakeVisible(impedance); + } else + { + impedance = nullptr; + } +} +FPGAchannelComponent::~FPGAchannelComponent() +{ + +} + +void FPGAchannelComponent::setImpedanceValues(float mag, float phase) +{ + if (impedance != nullptr) + { + if (mag > 10000) + impedance->setText(String(mag/1e6,2)+" mOhm, "+String((int)phase) + " deg",juce::NotificationType::dontSendNotification); + else if (mag > 1000) + impedance->setText(String(mag/1e3,0)+" kOhm, "+String((int)phase) + " deg" ,juce::NotificationType::dontSendNotification); + else + impedance->setText(String(mag,0)+" Ohm, "+String((int)phase) + " deg" ,juce::NotificationType::dontSendNotification); + } else + { + + } +} + +void FPGAchannelComponent::comboBoxChanged(ComboBox* comboBox) +{ + if (comboBox == gainComboBox) + { + int newGainIndex = gainComboBox->getSelectedId(); + float mult = gains[newGainIndex-1]; + float bitvolts = channelList->proc->getDefaultBitVolts(); + channelList->setNewGain(stream,channel,type, mult*bitvolts); + } +} +void FPGAchannelComponent::labelTextChanged(Label* lbl) +{ + // channel name change + String newName = lbl->getText(); + channelList->setNewName(stream,channel, type, newName); +} + +void FPGAchannelComponent::disableEdit() +{ + editName->setEnabled(false); +} + +void FPGAchannelComponent::enableEdit() +{ + editName->setEnabled(true); +} + +void FPGAchannelComponent::buttonClicked(Button *btn) +{ +} + +void FPGAchannelComponent::setUserDefinedData(int d) +{ +} + +int FPGAchannelComponent::getUserDefinedData() +{ + return 0; +} + +void FPGAchannelComponent::resized() +{ + editName->setBounds(0,0,90,20); + if (gainComboBox != nullptr) + { + gainComboBox->setBounds(100,0,70,20); + } + if (impedance != nullptr) + { + impedance->setBounds(180,0,130,20); + } + +} + + + +/**********************************************/ + +FPGAcanvas::FPGAcanvas(GenericProcessor* n) : processor(n) +{ + + channelsViewport = new Viewport(); + channelList = new FPGAchannelList(processor, channelsViewport, this); + channelsViewport->setViewedComponent(channelList, false); + channelsViewport->setScrollBarsShown(true, true); + addAndMakeVisible(channelsViewport); + + resized(); + update(); +} + +FPGAcanvas::~FPGAcanvas() +{ +} + +void FPGAcanvas::setParameter(int x, float f) +{ + +} + +void FPGAcanvas::setParameter(int a, int b, int c, float d) +{ +} + +void FPGAcanvas::paint(Graphics& g) +{ + g.fillAll(Colours::grey); + +} + +void FPGAcanvas::refresh() +{ + repaint(); +} + +void FPGAcanvas::refreshState() +{ + resized(); +} + + +void FPGAcanvas::beginAnimation() +{ +} + +void FPGAcanvas::endAnimation() +{ +} + +void FPGAcanvas::update() +{ + // create channel buttons (name, gain, recording, impedance, ... ?) + channelList->update(); +} + +void FPGAcanvas::resized() +{ + int screenWidth = getWidth(); + int screenHeight = getHeight(); + + int scrollBarThickness = channelsViewport->getScrollBarThickness(); + int numChannels = 35; // max channels per stream? (32+3)*2 + + channelsViewport->setBounds(0,0,getWidth(),getHeight()); + channelList->setBounds(0,0,getWidth()-scrollBarThickness, 200+22*numChannels); +} + +void FPGAcanvas::buttonClicked(Button* button) +{ +} + +void FPGAcanvas::updateImpedance(Array<int> streams, Array<int> channels, Array<float> magnitude, Array<float> phase) +{ + channelList->updateImpedance(streams, channels, magnitude, phase); +} -#include "../DataThreads/RHD2000Thread.h" +/***********************************************************************/ RHD2000Editor::RHD2000Editor(GenericProcessor* parentNode, RHD2000Thread* board_, - bool useDefaultParameterEditors - ) -: GenericEditor(parentNode, useDefaultParameterEditors), board(board_) + bool useDefaultParameterEditors + ) + : VisualizerEditor(parentNode, useDefaultParameterEditors), board(board_) { - desiredWidth = 260; - + canvas = nullptr; + desiredWidth = 330; + tabText = "FPGA"; + // add headstage-specific controls (currently just an enable/disable button) for (int i = 0; i < 4; i++) { @@ -91,14 +537,11 @@ RHD2000Editor::RHD2000Editor(GenericProcessor* parentNode, if (i == 0) { button->setTooltip("Audio monitor left channel"); - } - else - { + } else { button->setTooltip("Audio monitor right channel"); } } - audioLabel = new Label("audio label", "Audio out"); audioLabel->setBounds(180,25,75,15); audioLabel->setFont(Font("Small Text", 10, Font::plain)); @@ -117,7 +560,7 @@ RHD2000Editor::RHD2000Editor(GenericProcessor* parentNode, adcButton->addListener(this); adcButton->setClickingTogglesState(true); adcButton->setTooltip("Enable/disable ADC channels"); - addAndMakeVisible(adcButton); + addAndMakeVisible(adcButton); // add DSP Offset Button dspoffsetButton = new UtilityButton("DSP", Font("Very Small Text", 13, Font::plain)); @@ -132,8 +575,52 @@ RHD2000Editor::RHD2000Editor(GenericProcessor* parentNode, // add DSP Frequency Selection field dspInterface = new DSPInterface(board, this); addAndMakeVisible(dspInterface); - dspInterface->setBounds(110, 108, 80, 50); + dspInterface->setBounds(110, 108, 80, 50); + + ttlSettleLabel = new Label("TTL Settle","TTL Settle"); + ttlSettleLabel->setFont( Font("Small Text", 11, Font::plain)); + ttlSettleLabel->setBounds(245,80,100,20); + ttlSettleLabel->setColour(Label::textColourId, Colours::darkgrey); + addAndMakeVisible(ttlSettleLabel); + + ttlSettleCombo = new ComboBox("FastSettleComboBox"); + ttlSettleCombo->setBounds(250,100,60,18); + ttlSettleCombo->addListener(this); + ttlSettleCombo->addItem("-",1); + for (int k=0; k<8; k++) + { + ttlSettleCombo->addItem("TTL"+String(1+k),2+k); + } + ttlSettleCombo->setSelectedId(1, sendNotification); + addAndMakeVisible(ttlSettleCombo); + + dacTTLButton = new UtilityButton("DAC TTL", Font("Small Text", 13, Font::plain)); + dacTTLButton->setRadius(3.0f); + dacTTLButton->setBounds(250,25,65,18); + dacTTLButton->addListener(this); + dacTTLButton->setClickingTogglesState(true); + dacTTLButton->setTooltip("Enable/disable DAC Threshold TTL Output"); + addAndMakeVisible(dacTTLButton); + + dacHPFlabel = new Label("DAC HPF","DAC HPF"); + dacHPFlabel->setFont( Font("Small Text", 11, Font::plain)); + dacHPFlabel->setBounds(250,42,100,20); + dacHPFlabel->setColour(Label::textColourId, Colours::darkgrey); + addAndMakeVisible(dacHPFlabel); + + dacHPFcombo = new ComboBox("dacHPFCombo"); + dacHPFcombo->setBounds(250,60,60,18); + dacHPFcombo->addListener(this); + dacHPFcombo->addItem("OFF",1); + int HPFvalues[10] = {50,100,200,300,400,500,600,700,800,900}; + for (int k=0; k<10; k++) + { + dacHPFcombo->addItem(String(HPFvalues[k])+" Hz",2+k); + } + dacHPFcombo->setSelectedId(1, sendNotification); + addAndMakeVisible(dacHPFcombo); + } RHD2000Editor::~RHD2000Editor() @@ -146,9 +633,46 @@ void RHD2000Editor::scanPorts() rescanButton->triggerClick(); } +void RHD2000Editor::measureImpedance() +{ + Array<int> stream, channel; + Array<float> magnitude, phase; + board->runImpedanceTest(stream,channel,magnitude,phase); + + // update components... + canvas->updateImpedance(stream,channel,magnitude,phase); +} + +void RHD2000Editor::comboBoxChanged(ComboBox* comboBox) +{ + if (comboBox == ttlSettleCombo) + { + int selectedChannel = ttlSettleCombo->getSelectedId(); + if (selectedChannel == 1) + { + board->setFastTTLSettle(false,0); + } else + { + board->setFastTTLSettle(true,selectedChannel-2); + } + } else if (comboBox == dacHPFcombo) + { + int selection = dacHPFcombo->getSelectedId(); + if (selection == 1) + { + board->setDAChpf(100,false); + } else + { + int HPFvalues[10] = {50,100,200,300,400,500,600,700,800,900}; + board->setDAChpf(HPFvalues[selection-2],true); + } + } +} + + void RHD2000Editor::buttonEvent(Button* button) { - + VisualizerEditor::buttonEvent(button); if (button == rescanButton && !acquisitionIsActive) { board->scanPorts(); @@ -156,8 +680,8 @@ void RHD2000Editor::buttonEvent(Button* button) for (int i = 0; i < 4; i++) { headstageOptionsInterfaces[i]->checkEnabledState(); - } - + } + board->updateChannelNames(); } else if (button == electrodeButtons[0]) { @@ -170,7 +694,11 @@ void RHD2000Editor::buttonEvent(Button* button) else if (button == adcButton && !acquisitionIsActive) { board->enableAdcs(button->getToggleState()); + board->updateChannelNames(); getEditorViewport()->makeEditorVisible(this, false, true); + } else if (button == dacTTLButton) + { + board->setTTLoutputMode(dacTTLButton->getToggleState()); } else if (button == dspoffsetButton && !acquisitionIsActive) { @@ -189,8 +717,8 @@ void RHD2000Editor::channelChanged(int chan) { electrodeButtons[i]->setChannelNum(chan); electrodeButtons[i]->repaint(); - - board->assignAudioOut(i, chan-1); + board->assignAudioOut(i, chan); + } } } @@ -201,11 +729,11 @@ void RHD2000Editor::startAcquisition() channelSelector->startAcquisition(); rescanButton->setEnabledState(false); - adcButton->setEnabledState(false); + adcButton->setEnabledState(false); dspoffsetButton-> setEnabledState(false); - acquisitionIsActive = true; - + if (canvas !=nullptr) + canvas->channelList->setEnabled(false); } void RHD2000Editor::stopAcquisition() @@ -218,17 +746,29 @@ void RHD2000Editor::stopAcquisition() dspoffsetButton-> setEnabledState(true); acquisitionIsActive = false; - + if (canvas != nullptr) + canvas->channelList->setEnabled(true); + // canvas->channelList->setEnabled(true); } void RHD2000Editor::saveCustomParameters(XmlElement* xml) { - xml->setAttribute("SampleRate", sampleRateInterface->getSelectedId()); - xml->setAttribute("LowCut", bandwidthInterface->getLowerBandwidth()); - xml->setAttribute("HighCut", bandwidthInterface->getUpperBandwidth()); - xml->setAttribute("ADCsOn", adcButton->getToggleState()); - xml->setAttribute("DSPOffset", dspoffsetButton->getToggleState()); - xml->setAttribute("DSPCutoffFreq", dspInterface->getDspCutoffFreq()); + xml->setAttribute("SampleRate", sampleRateInterface->getSelectedId()); + xml->setAttribute("LowCut", bandwidthInterface->getLowerBandwidth()); + xml->setAttribute("HighCut", bandwidthInterface->getUpperBandwidth()); + xml->setAttribute("ADCsOn", adcButton->getToggleState()); + xml->setAttribute("SampleRate", sampleRateInterface->getSelectedId()); + xml->setAttribute("LowCut", bandwidthInterface->getLowerBandwidth()); + xml->setAttribute("HighCut", bandwidthInterface->getUpperBandwidth()); + xml->setAttribute("ADCsOn", adcButton->getToggleState()); + xml->setAttribute("AudioOutputL", electrodeButtons[0]->getChannelNum()); + xml->setAttribute("AudioOutputR", electrodeButtons[1]->getChannelNum()); + xml->setAttribute("NoiseSlicer", audioInterface->getNoiseSlicerLevel()); + xml->setAttribute("TTLFastSettle", ttlSettleCombo->getSelectedId()); + xml->setAttribute("DAC_TTL", dacTTLButton->getToggleState()); + xml->setAttribute("DAC_HPF", dacHPFcombo->getSelectedId()); + xml->setAttribute("DSPOffset", dspoffsetButton->getToggleState()); + xml->setAttribute("DSPCutoffFreq", dspInterface->getDspCutoffFreq()); } void RHD2000Editor::loadCustomParameters(XmlElement* xml) @@ -238,11 +778,28 @@ void RHD2000Editor::loadCustomParameters(XmlElement* xml) bandwidthInterface->setLowerBandwidth(xml->getDoubleAttribute("LowCut")); bandwidthInterface->setUpperBandwidth(xml->getDoubleAttribute("HighCut")); adcButton->setToggleState(xml->getBoolAttribute("ADCsOn"), sendNotification); + electrodeButtons[0]->setChannelNum(xml->getIntAttribute("AudioOutputL")); + board->assignAudioOut(0, xml->getIntAttribute("AudioOutputL")); + electrodeButtons[1]->setChannelNum(xml->getIntAttribute("AudioOutputR")); + board->assignAudioOut(1, xml->getIntAttribute("AudioOutputR")); + audioInterface->setNoiseSlicerLevel(xml->getIntAttribute("NoiseSlicer")); + ttlSettleCombo->setSelectedId(xml->getIntAttribute("TTLFastSettle")); + dacTTLButton->setToggleState(xml->getBoolAttribute("DAC_TTL"), sendNotification); + dacHPFcombo->setSelectedId(xml->getIntAttribute("DAC_HPF")); dspoffsetButton->setToggleState(xml->getBoolAttribute("DSPOffset"), sendNotification); dspInterface->setDspCutoffFreq(xml->getDoubleAttribute("DSPCutoffFreq")); } +Visualizer* RHD2000Editor::createNewCanvas() +{ + GenericProcessor* processor = (GenericProcessor*) getProcessor(); + canvas= new FPGAcanvas(processor); + //ActionListener* listener = (ActionListener*) canvas; + //getUIComponent()->registerAnimatedComponent(listener); + return canvas; +} + // Bandwidth Options -------------------------------------------------------------------- BandwidthInterface::BandwidthInterface(RHD2000Thread* board_, @@ -358,7 +915,6 @@ void BandwidthInterface::setUpperBandwidth(double value) upperBandwidthSelection->setText(String(round(actualUpperBandwidth*10.f)/10.f), dontSendNotification); } - double BandwidthInterface::getLowerBandwidth() { return actualLowerBandwidth; @@ -578,7 +1134,10 @@ void HeadstageOptionsInterface::buttonClicked(Button* button) hsButton1->setLabel(String(channelsOnHs1)); board->setNumChannels(hsNumber1, channelsOnHs1); - + + board->updateChannelNames(); + editor->updateSettings(); + } else if (button == hsButton2) { @@ -589,6 +1148,8 @@ void HeadstageOptionsInterface::buttonClicked(Button* button) hsButton2->setLabel(String(channelsOnHs2)); board->setNumChannels(hsNumber2, channelsOnHs2); + board->updateChannelNames(); + editor->updateSettings(); } @@ -619,7 +1180,7 @@ void HeadstageOptionsInterface::paint(Graphics& g) // (Direct OpalKelly) Audio Options -------------------------------------------------------------------- AudioInterface::AudioInterface(RHD2000Thread* board_, - RHD2000Editor* editor_) : + RHD2000Editor* editor_) : board(board_), editor(editor_) { @@ -671,8 +1232,7 @@ void AudioInterface::labelTextChanged(Label* label) } } - else - { + else { Value val = label->getTextValue(); int requestedValue = int(val.getValue()); // Note that it might be nice to translate to actual uV levels (16*value) if (requestedValue < 0 || requestedValue > 127) @@ -706,7 +1266,7 @@ void AudioInterface::paint(Graphics& g) g.drawText(name, 0, 0, 200, 15, Justification::left, false); g.drawText("Level: ", 0, 10, 200, 20, Justification::left, false); - + } @@ -731,7 +1291,7 @@ board(board_), editor(editor_) DSPInterface::~DSPInterface() { - + } diff --git a/Source/Processors/Editors/RHD2000Editor.h b/Source/Processors/DataThreads/RHD2000Editor.h similarity index 55% rename from Source/Processors/Editors/RHD2000Editor.h rename to Source/Processors/DataThreads/RHD2000Editor.h index 706d6e18be2aebccea0c1154c8f2731d68441bef..73e75da1332a679dfce14b74522b3d2e88e4dc6a 100644 --- a/Source/Processors/Editors/RHD2000Editor.h +++ b/Source/Processors/DataThreads/RHD2000Editor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,9 +25,10 @@ #define __RHD2000EDITOR_H_2AD3C591__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" +#include "../Editors/VisualizerEditor.h" -#include "ElectrodeButtons.h" // for ElectrodeButton +#include "../Editors/ElectrodeButtons.h" // for ElectrodeButton class HeadstageOptionsInterface; class SampleRateInterface; @@ -45,9 +46,116 @@ class UtilityButton; @see SourceNode */ +class SourceNode; +class FPGAchannelComponent; +class RHD2000Editor; +class FPGAcanvas; -class RHD2000Editor : public GenericEditor +class FPGAchannelList : public Component, + public AccessClass, Button::Listener, ComboBox::Listener +{ +public: + + FPGAchannelList(GenericProcessor* proc, Viewport *p, FPGAcanvas*c); + ~FPGAchannelList(); + void setNewName(int stream, int channelIndex, channelType t, String newName); + void setNewGain(int stream, int channel,channelType t, float gain); + void disableAll(); + void enableAll(); + void paint(Graphics& g); + void buttonClicked(Button *btn); + void update(); + void updateButtons(); + int getNumChannels(); + void comboBoxChanged(ComboBox *b); + void updateImpedance(Array<int> streams, Array<int> channels, Array<float> magnitude, Array<float> phase); + GenericProcessor* proc; + +private: + Array<float> gains; + Array<channelType> types; + Array<int> stream; + Array<int> orig_number; + + Viewport *viewport; + FPGAcanvas *canvas; + ScopedPointer<UtilityButton> impedanceButton; + ScopedPointer<ComboBox> numberingScheme; + ScopedPointer<Label> numberingSchemeLabel; + OwnedArray<Label> staticLabels; + OwnedArray<FPGAchannelComponent> channelComponents; + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(FPGAchannelList); +}; + + +class FPGAchannelComponent : public Component, public AccessClass, Button::Listener, public ComboBox::Listener, public Label::Listener +{ +public: + FPGAchannelComponent(FPGAchannelList* cl,int stream, int ch, channelType t, int gainIndex_, String name_, Array<float> gains_); + ~FPGAchannelComponent(); + Colour getDefaultColor(int ID); + void setImpedanceValues(float mag, float phase); + void disableEdit(); + void enableEdit(); + + + void setEnabledState(bool); + bool getEnabledState() + { + return isEnabled; + } + void buttonClicked(Button *btn); + void setUserDefinedData(int d); + int getUserDefinedData(); + void comboBoxChanged(ComboBox* comboBox); + void labelTextChanged(Label* lbl); + + void resized(); +private: + Array<float> gains; + FPGAchannelList* channelList; + ScopedPointer<Label> staticLabel, editName, impedance; + ScopedPointer<ComboBox> gainComboBox; + int channel; + String name; + int stream; + channelType type; + int gainIndex; + int userDefinedData; + Font font; + bool isEnabled; + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(FPGAchannelComponent); +}; + + +class FPGAcanvas : public Visualizer, public Button::Listener +{ +public: + FPGAcanvas(GenericProcessor* n); + ~FPGAcanvas(); + + void paint(Graphics& g); + + void refresh(); + + void beginAnimation(); + void endAnimation(); + + void refreshState(); + void update(); + void setParameter(int, float) ; + void setParameter(int, int, int, float) ; + void updateImpedance(Array<int> streams, Array<int> channels, Array<float> magnitude, Array<float> phase); + + void resized(); + void buttonClicked(Button* button); + Viewport* channelsViewport; + GenericProcessor* processor; + ScopedPointer<FPGAchannelList> channelList; +}; + +class RHD2000Editor : public VisualizerEditor, public ComboBox::Listener { public: @@ -57,7 +165,8 @@ public: void buttonEvent(Button* button); void scanPorts(); - + void comboBoxChanged(ComboBox* comboBox); + void startAcquisition(); void stopAcquisition(); @@ -65,7 +174,8 @@ public: void saveCustomParameters(XmlElement* xml); void loadCustomParameters(XmlElement* xml); - + Visualizer* createNewCanvas(void); + void measureImpedance(); private: OwnedArray<HeadstageOptionsInterface> headstageOptionsInterfaces; @@ -77,15 +187,17 @@ private: ScopedPointer<AudioInterface> audioInterface; - ScopedPointer<UtilityButton> rescanButton; - ScopedPointer<UtilityButton> adcButton; + ScopedPointer<UtilityButton> rescanButton,dacTTLButton; + ScopedPointer<UtilityButton> adcButton; - ScopedPointer<UtilityButton> dspoffsetButton; + ScopedPointer<UtilityButton> dspoffsetButton; + ScopedPointer<ComboBox> ttlSettleCombo,dacHPFcombo; - ScopedPointer<Label> audioLabel; - RHD2000Thread* board; + ScopedPointer<Label> audioLabel,ttlSettleLabel,dacHPFlabel ; + RHD2000Thread* board; + FPGAcanvas *canvas; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(RHD2000Editor); }; @@ -208,36 +320,36 @@ private: }; class AudioInterface : public Component, - public Label::Listener +public Label::Listener { public: AudioInterface(RHD2000Thread*, RHD2000Editor*); ~AudioInterface(); - + void paint(Graphics& g); void labelTextChanged(Label* te); - + void setNoiseSlicerLevel(int value); int getNoiseSlicerLevel(); //void setGain(double value); //double getGain(); - + private: - + String name; - + String lastNoiseSlicerString; String lastGainString; - + RHD2000Thread* board; RHD2000Editor* editor; - + ScopedPointer<Label> noiseSlicerLevelSelection; //ScopedPointer<Label> gainSelection; - + int actualNoiseSlicerLevel; //double actualGain; - + }; diff --git a/Source/Processors/DataThreads/RHD2000Thread.cpp b/Source/Processors/DataThreads/RHD2000Thread.cpp index a8758331226ad4d832911971887497454103cfd3..e4969c8c4f2b74396b1d16e25766df273dad252b 100644 --- a/Source/Processors/DataThreads/RHD2000Thread.cpp +++ b/Source/Processors/DataThreads/RHD2000Thread.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,7 +22,7 @@ */ #include "RHD2000Thread.h" -#include "../SourceNode.h" +#include "../SourceNode/SourceNode.h" #if defined(_WIN32) #define okLIB_NAME "okFrontPanel.dll" @@ -34,6 +34,25 @@ #define okLIB_NAME "./libokFrontPanel.so" #define okLIB_EXTENSION "*.so" #endif +#define CHIP_ID_RHD2164_B 1000 + +// Allocates memory for a 3-D array of doubles. +void allocateDoubleArray3D(std::vector<std::vector<std::vector<double> > >& array3D, + int xSize, int ySize, int zSize) +{ + int i, j; + + if (xSize == 0) return; + array3D.resize(xSize); + for (i = 0; i < xSize; ++i) + { + array3D[i].resize(ySize); + for (j = 0; j < ySize; ++j) + { + array3D[i][j].resize(zSize); + } + } +} RHD2000Thread::RHD2000Thread(SourceNode* sn) : DataThread(sn), chipRegisters(30000.0f), @@ -44,6 +63,9 @@ RHD2000Thread::RHD2000Thread(SourceNode* sn) : DataThread(sn), acquireAdcChannels(false), acquireAuxChannels(true), fastSettleEnabled(false), + fastTTLSettleEnabled(false), + fastSettleTTLChannel(-1), + ttlMode(false), dspEnabled(true), desiredDspCutoffFreq(0.5f), desiredUpperBandwidth(7500.0f), @@ -51,7 +73,7 @@ RHD2000Thread::RHD2000Thread(SourceNode* sn) : DataThread(sn), boardSampleRate(30000.0f), savedSampleRateIndex(16), cableLengthPortA(0.914f), cableLengthPortB(0.914f), cableLengthPortC(0.914f), cableLengthPortD(0.914f), // default is 3 feet (0.914 m), - audioOutputL(-1), audioOutputR(-1) + audioOutputL(-1), audioOutputR(-1) ,numberingScheme(1) { evalBoard = new Rhd2000EvalBoard; dataBlock = new Rhd2000DataBlock(1); @@ -78,6 +100,10 @@ RHD2000Thread::RHD2000Thread(SourceNode* sn) : DataThread(sn), libraryFilePath += File::separatorString; libraryFilePath += okLIB_NAME; + dacStream = nullptr; + dacChannels = nullptr; + dacThresholds = nullptr; + dacChannelsToUpdate = nullptr; if (openBoard(libraryFilePath)) { @@ -87,13 +113,33 @@ RHD2000Thread::RHD2000Thread(SourceNode* sn) : DataThread(sn), // automatically find connected headstages scanPorts(); // things would appear to run more smoothly if this were done after the editor has been created - if (0) + // to perform electrode impedance measurements at very low frequencies. + const int maxNumBlocks = 120; + int numStreams = 8; + allocateDoubleArray3D(amplifierPreFilter, numStreams, 32, SAMPLES_PER_DATA_BLOCK * maxNumBlocks); + + // probably better to do this with a thread, but a timer works for now: + // startTimer(10); // initialize the board in the background + dacStream = new int[8]; + dacChannels = new int[8]; + dacThresholds = new float[8]; + dacChannelsToUpdate = new bool[8]; + for (int k = 0; k < 8; k++) { - evalBoard->setContinuousRunMode(true); - evalBoard->run(); + dacChannelsToUpdate[k] = true; + dacStream[k] = 0; + setDACthreshold(k, 65534); } + evalBoard->getDacInformation(dacChannels,dacThresholds); + setDefaultChannelNamesAndType(); } +} + +void RHD2000Thread::timerCallback() +{ + + stopTimer(); } @@ -109,17 +155,45 @@ RHD2000Thread::~RHD2000Thread() } if (deviceFound) - { - evalBoard->flush(); - evalBoard->resetBoard(); evalBoard->resetFpga(); - } - deleteAndZero(dataBlock); + delete dacStream; + delete dacChannels; + delete dacThresholds; + delete dacChannelsToUpdate; + +} + +void RHD2000Thread::setDACthreshold(int dacOutput, float threshold) +{ + dacThresholds[dacOutput]= threshold; + dacChannelsToUpdate[dacOutput] = true; + dacOutputShouldChange = true; + + // evalBoard->setDacThresholdVoltage(dacOutput,threshold); +} + +void RHD2000Thread::setDACchannel(int dacOutput, int stream, int channel) +{ + dacChannels[dacOutput] = channel; + dacStream[dacOutput] = stream; + dacChannelsToUpdate[dacOutput] = true; + dacOutputShouldChange = true; + evalBoard->updateDacAssignment(dacOutput, channel); // doesn't really change anything, but keep things in sync... } +Array<int> RHD2000Thread::getDACchannels() +{ + Array<int> dacChannels; + for (int k=0; k<8; k++) + { + dacChannels.add(evalBoard->gecDacDataChannel(k)); + } + return dacChannels; + +} bool RHD2000Thread::openBoard(String pathToLibrary) { int return_code = evalBoard->open(pathToLibrary.getCharPointer()); @@ -206,6 +280,7 @@ bool RHD2000Thread::uploadBitfile(String bitfilename) if (fc.browseForFileToOpen()) { File currentFile = fc.getResult(); + uploadBitfile(currentFile.getFullPathName()); // call recursively } else @@ -283,13 +358,11 @@ void RHD2000Thread::initializeBoard() ; } - // Read the resulting single data block from the USB interface. We don't // need to do anything with this, since it was only used for ADC calibration Rhd2000DataBlock* dataBlock = new Rhd2000DataBlock(evalBoard->getNumEnabledDataStreams()); - // evalBoard->readDataBlock(dataBlock); // Now that ADC calibration has been performed, we switch to the command sequence @@ -322,21 +395,44 @@ void RHD2000Thread::scanPorts() int delay, stream, id; //int numChannelsOnPort[4] = {0, 0, 0, 0}; - Array<int> chipId; + Rhd2000EvalBoard::BoardDataSource initStreamPorts[8] = + { + Rhd2000EvalBoard::PortA1, + Rhd2000EvalBoard::PortA2, + Rhd2000EvalBoard::PortB1, + Rhd2000EvalBoard::PortB2, + Rhd2000EvalBoard::PortC1, + Rhd2000EvalBoard::PortC2, + Rhd2000EvalBoard::PortD1, + Rhd2000EvalBoard::PortD2 + }; + + Rhd2000EvalBoard::BoardDataSource initStreamDdrPorts[8] = + { + Rhd2000EvalBoard::PortA1Ddr, + Rhd2000EvalBoard::PortA2Ddr, + Rhd2000EvalBoard::PortB1Ddr, + Rhd2000EvalBoard::PortB2Ddr, + Rhd2000EvalBoard::PortC1Ddr, + Rhd2000EvalBoard::PortC2Ddr, + Rhd2000EvalBoard::PortD1Ddr, + Rhd2000EvalBoard::PortD2Ddr + }; + chipId.insertMultiple(0,-1,8); setSampleRate(16, true); // set to 30 kHz temporarily // Enable all data streams, and set sources to cover one or two chips // on Ports A-D. - evalBoard->setDataSource(0, Rhd2000EvalBoard::PortA1); - evalBoard->setDataSource(1, Rhd2000EvalBoard::PortA2); - evalBoard->setDataSource(2, Rhd2000EvalBoard::PortB1); - evalBoard->setDataSource(3, Rhd2000EvalBoard::PortB2); - evalBoard->setDataSource(4, Rhd2000EvalBoard::PortC1); - evalBoard->setDataSource(5, Rhd2000EvalBoard::PortC2); - evalBoard->setDataSource(6, Rhd2000EvalBoard::PortD1); - evalBoard->setDataSource(7, Rhd2000EvalBoard::PortD2); + evalBoard->setDataSource(0, initStreamPorts[0]); + evalBoard->setDataSource(1, initStreamPorts[1]); + evalBoard->setDataSource(2, initStreamPorts[2]); + evalBoard->setDataSource(3, initStreamPorts[3]); + evalBoard->setDataSource(4, initStreamPorts[4]); + evalBoard->setDataSource(5, initStreamPorts[5]); + evalBoard->setDataSource(6, initStreamPorts[6]); + evalBoard->setDataSource(7, initStreamPorts[7]); evalBoard->enableDataStream(0, true); evalBoard->enableDataStream(1, true); @@ -405,13 +501,13 @@ void RHD2000Thread::scanPorts() // Record delay settings that yield good communication with the chip. for (stream = 0; stream < MAX_NUM_DATA_STREAMS; ++stream)//MAX_NUM_DATA_STREAMS; ++stream) { - std::cout << "Stream number " << stream << ", delay = " << delay << std::endl; + // std::cout << "Stream number " << stream << ", delay = " << delay << std::endl; id = deviceId(dataBlock, stream); if (id > 0) // 1 = RHD2132, 2 = RHD2216 { - std::cout << "Device ID found: " << id << std::endl; + // std::cout << "Device ID found: " << id << std::endl; sumGoodDelays.set(stream,sumGoodDelays[stream] + 1); @@ -442,7 +538,18 @@ void RHD2000Thread::scanPorts() if (chipId[stream] > 0) { //std::cout << "Enabling headstage on stream " << stream << std::endl; - enableHeadstage(stream, true); + if (chipId[stream] == 4) //RHD2164 + { + //We just add it like a second headstage, allowing only one RHD2164 per channel + //This would need to change + evalBoard->setDataSource(stream+1,initStreamDdrPorts[stream]); + enableHeadstage(stream,true); + enableHeadstage(stream+1,true); + chipId.set(stream+1,CHIP_ID_RHD2164_B); + stream++; + } + else + enableHeadstage(stream, true); } else { @@ -533,101 +640,254 @@ bool RHD2000Thread::isAcquisitionActive() void RHD2000Thread::setNumChannels(int hsNum, int numChannels) { - numChannelsPerDataStream.set(hsNum, numChannels); + if (numChannelsPerDataStream[hsNum] > 0) + numChannelsPerDataStream.set(hsNum, numChannels); } -int RHD2000Thread::getNumChannels() -{ - numChannels = 0; +int RHD2000Thread::getNumADCchannels() +{ + if (acquireAdcChannels) + return 8; + else + return 0; +} - for (int i = 0; i < MAX_NUM_DATA_STREAMS; i++) +void RHD2000Thread::getEventChannelNames(StringArray& Names) +{ + Names.clear(); + for (int k=0; k<8; k++) { + Names.add("TTL"+String(k+1)); + } +} - if (numChannelsPerDataStream[i] > 0) - { - numChannels += numChannelsPerDataStream[i]; - numChannels += 3; // to account for aux inputs - } +void RHD2000Thread::getChannelsInfo(StringArray& Names_, Array<channelType>& type_, Array<int>& stream_, Array<int>& originalChannelNumber_,Array<float>& gains_) +{ + Names_ = Names; + type_ = type; + stream_ = stream; + originalChannelNumber_ = originalChannelNumber; + gains_ = gains; +} +void RHD2000Thread::updateChannelNames() +{ + setDefaultChannelNamesAndType(); +} - /* - if (chipRegisters->adcAux1En){ // no public function to read these? fix this in some way - numChannels += 1; - } - if (chipRegisters->adcAux2En){ - numChannels += 1; - } - if (chipRegisters->adcAux3En){ - numChannels += 1; +/* go over the old names and tests whether this particular channel name was changed. +if so, return the old name */ +bool RHD2000Thread::channelModified(channelType t, int str, int ch, String& oldName, float& oldGain, int& index) +{ + for (int k=0; k<oldNames.size(); k++) + { + if (oldType[k] == t && oldStream[k] == str && oldChannelNumber[k] == ch) + { + oldName = oldNames[k]; + oldGain = oldGains[k]; + index = k; + return true; } - */ } + return false; +} - if (acquireAdcChannels) +int RHD2000Thread::modifyChannelName(channelType t, int str, int ch, String newName) +{ + String dummy; + float dummyFloat; + int index; + if (channelModified(t, str, ch, dummy, dummyFloat, index)) { - numChannels += 8; // add 8 channels for the ADCs + oldNames.set(index, newName); } - - if (numChannels > 0) - return numChannels; else - return 1; // to prevent crashing with 0 channels + { + oldNames.add(newName); + oldType.add(t); + oldStream.add(str); + oldChannelNumber.add(ch); + oldGains.add(dummyFloat); + } + + for (int k=0; k<Names.size(); k++) + { + if (type[k] == t && stream[k] == str && originalChannelNumber[k] == ch) + { + Names.set(k,newName); + return k; + } + } + return -1; } -void RHD2000Thread::updateChannelNames() +int RHD2000Thread::modifyChannelGain(channelType t, int str, int ch, float gain) { - - int chNum = -1; - - for (int i = 0; i < MAX_NUM_DATA_STREAMS; i++) + String dummy; + float dummyFloat; + int index; + if (channelModified(t, str, ch, dummy, dummyFloat, index)) { + oldGains.set(index, gain); + } + else + { + oldNames.add(dummy); + oldType.add(t); + oldStream.add(str); + oldChannelNumber.add(ch); + oldGains.add(gain); + } - for (int j = 0; j < numChannelsPerDataStream[i]; j++) + for (int k=0; k<Names.size(); k++) + { + if (type[k] == t && stream[k] == str && originalChannelNumber[k] == ch) { - chNum++; - - sn->channels[chNum]->setName(String(chNum)); + gains.set(k,gain); + return k; } } + return -1; +} + +void RHD2000Thread::setDefaultNamingScheme(int scheme) +{ + oldNames.clear(); + oldType.clear(); + oldStream.clear(); + oldGains.clear(); + oldChannelNumber.clear(); + numberingScheme = scheme; + setDefaultChannelNamesAndType(); +} - if (acquireAuxChannels) +/* This will give default names & gains to channels, unless they were manually modified by the user + In that case, the query channelModified, will return the values that need to be put */ +void RHD2000Thread::setDefaultChannelNamesAndType() +{ + Names.clear(); + type.clear(); + stream.clear(); + gains.clear(); + originalChannelNumber.clear(); + int aux_counter=1; + int data_counter = 1; + String oldName; + int dummy; + float oldGain; + StringArray stream_prefix; + stream_prefix.add("A1"); + stream_prefix.add("A2"); + stream_prefix.add("B1"); + stream_prefix.add("B2"); + stream_prefix.add("C1"); + stream_prefix.add("C2"); + stream_prefix.add("D1"); + stream_prefix.add("D2"); + for (int i = 0; i < MAX_NUM_DATA_STREAMS; i++) { - for (int i = 0; i < MAX_NUM_DATA_STREAMS; i++) + if (numChannelsPerDataStream[i] > 0) { + for (int k=0; k<numChannelsPerDataStream[i]; k++) + { + if (channelModified(DATA_CHANNEL,i,k, oldName,oldGain,dummy)) + { + Names.add(oldName); + gains.add(oldGain); + data_counter++; + } + else + { + if (numberingScheme == 1) + Names.add("CH"+String(data_counter++)); + else + Names.add("CH_"+stream_prefix[i]+"_"+String(1+k)); - for (int j = 0; j < 3; j++) + gains.add(getBitVolts()); + } + + type.add(DATA_CHANNEL); + stream.add(i); + originalChannelNumber.add(k); + + } + for (int k=0; k<3; k++) { + if (channelModified(AUX_CHANNEL,i,numChannelsPerDataStream[i]+k, oldName,oldGain, dummy)) + { + Names.add(oldName); + gains.add(oldGain); - chNum++; + aux_counter++; + } + else + { + if (numberingScheme == 1) + Names.add("AUX"+String(aux_counter++)); + else + Names.add("AUX_"+stream_prefix[i]+"_"+String(1+k)); + + gains.add(getBitVolts()); - String chName = "AUX"; - chName += (j+1); + } + type.add(AUX_CHANNEL); + stream.add(i); + originalChannelNumber.add(numChannelsPerDataStream[i]+k); - // this is causing a seg fault for some reason: - // sn->channels[chNum]->setName(chName); } } } - if (acquireAdcChannels) { - for (int j = 0; j < 8; j++) + for (int k=0; k<8; k++) { - chNum++; + if (channelModified(ADC_CHANNEL,MAX_NUM_DATA_STREAMS,k, oldName,oldGain,dummy)) + { + Names.add(oldName); + gains.add(oldGain); + } + else + { + Names.add("ADC"+String(k+1)); + gains.add(getBitVolts()); + } + type.add(ADC_CHANNEL); + stream.add(MAX_NUM_DATA_STREAMS); + originalChannelNumber.add(k); + + } + } - String chName = "ADC"; - chName += (j+1); +} - // sn->channels[chNum]->setName(chName); +int RHD2000Thread::getNumChannels() +{ + numChannels = 0; + for (int i = 0; i < MAX_NUM_DATA_STREAMS; i++) + { + + if (numChannelsPerDataStream[i] > 0) + { + numChannels += numChannelsPerDataStream[i]; + numChannels += 3; // to account for aux inputs } } + if (acquireAdcChannels) + { + numChannels += 8; // add 8 channels for the ADCs + } + if (numChannels > 0) + return numChannels; + else + return 1; // to prevent crashing with 0 channels } + int RHD2000Thread::getNumEventChannels() { return 16; // 8 inputs, 8 outputs @@ -662,7 +922,7 @@ double RHD2000Thread::setLowerBandwidth(double lower) return actualLowerBandwidth; } - + double RHD2000Thread::setDspCutoffFreq(double freq) { @@ -683,13 +943,34 @@ void RHD2000Thread::setDSPOffset(bool state) { dspEnabled = state; updateRegisters(); - + +void RHD2000Thread::setTTLoutputMode(bool state) +{ + ttlMode = state; + dacOutputShouldChange = true; + +} + +void RHD2000Thread::setDAChpf(float cutoff, bool enabled) +{ + dacOutputShouldChange = true; + desiredDAChpf = cutoff; + desiredDAChpfState = enabled; +} + +void RHD2000Thread::setFastTTLSettle(bool state, int channel) +{ + fastTTLSettleEnabled = state; + fastSettleTTLChannel = channel; + dacOutputShouldChange = true; } int RHD2000Thread::setNoiseSlicerLevel(int level) { + desiredNoiseSlicerLevel = level; - evalBoard->setAudioNoiseSuppress(desiredNoiseSlicerLevel); + if (deviceFound) + evalBoard->setAudioNoiseSuppress(desiredNoiseSlicerLevel); // Level has been checked once before this and then is checked again in setAudioNoiseSuppress. // This may be overkill - maybe API should change so that the final function returns the value? @@ -749,23 +1030,24 @@ bool RHD2000Thread::isHeadstageEnabled(int hsNum) void RHD2000Thread::assignAudioOut(int dacChannel, int dataChannel) { - - if (dacChannel == 0) - { - audioOutputR = dataChannel; - - - } - else if (dacChannel == 1) + if (deviceFound) { - audioOutputL = dataChannel; + if (dacChannel == 0) + { + audioOutputR = dataChannel; + dacChannels[0] = dataChannel; + } + else if (dacChannel == 1) + { + audioOutputL = dataChannel; + dacChannels[1] = dataChannel; + } + dacOutputShouldChange = true; // set a flag and take care of setting wires + // during the updateBuffer() method + // to avoid problems } - dacOutputShouldChange = true; // set a flag and take care of setting wires - // during the updateBuffer() method - // to avoid problems - } void RHD2000Thread::enableAdcs(bool t) @@ -774,9 +1056,10 @@ void RHD2000Thread::enableAdcs(bool t) acquireAdcChannels = t; dataBuffer->resize(getNumChannels(), 10000); - + updateChannelNames(); } + void RHD2000Thread::setSampleRate(int sampleRateIndex, bool isTemporary) { @@ -959,16 +1242,16 @@ void RHD2000Thread::updateRegisters() evalBoard->selectAuxCommandLength(Rhd2000EvalBoard::AuxCmd3, 0, commandSequenceLength - 1); + chipRegisters.setFastSettle(true); + commandSequenceLength = chipRegisters.createCommandListRegisterConfig(commandList, false); // Upload version with fast settle enabled to AuxCmd3 RAM Bank 2. evalBoard->uploadCommandList(commandList, Rhd2000EvalBoard::AuxCmd3, 2); evalBoard->selectAuxCommandLength(Rhd2000EvalBoard::AuxCmd3, 0, commandSequenceLength - 1); - chipRegisters.setFastSettle(false); - - + chipRegisters.setFastSettle(false); evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortA, Rhd2000EvalBoard::AuxCmd3, fastSettleEnabled ? 2 : 1); evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortB, Rhd2000EvalBoard::AuxCmd3, @@ -1047,7 +1330,7 @@ bool RHD2000Thread::startAcquisition() bool RHD2000Thread::stopAcquisition() { - // isTransmitting = false; + // isTransmitting = false; std::cout << "RHD2000 data thread stopping acquisition." << std::endl; if (isThreadRunning()) @@ -1088,6 +1371,7 @@ bool RHD2000Thread::stopAcquisition() int ledArray[8] = {1, 0, 0, 0, 0, 0, 0, 0}; evalBoard->setLedDisplay(ledArray); } + isTransmitting = false; return true; @@ -1135,7 +1419,7 @@ bool RHD2000Thread::updateBuffer() streamNumber = -1; - // then do the Intan ADC channels + // then do the Intan AUX channels for (int dataStream = 0; dataStream < MAX_NUM_DATA_STREAMS; dataStream++) { if (numChannelsPerDataStream[dataStream] > 0) @@ -1214,30 +1498,529 @@ bool RHD2000Thread::updateBuffer() if (dacOutputShouldChange) { - if (audioOutputR >= 0) + for (int k=0; k<8; k++) { - evalBoard->enableDac(0, true); - evalBoard->selectDacDataChannel(0, audioOutputR); + if (dacChannelsToUpdate[k]) + { + dacChannelsToUpdate[k] = false; + if (dacChannels[k] >= 0) + { + evalBoard->enableDac(k, true); + evalBoard->selectDacDataStream(k, dacStream[k]); + evalBoard->selectDacDataChannel(k, dacChannels[k]); + evalBoard->setDacThresholdVoltage(k, (int) dacThresholds[k]); + } + else + { + evalBoard->enableDac(k, false); + } + } } - else + + evalBoard->setTtlMode(ttlMode); + evalBoard->setFastSettleByTTL(fastTTLSettleEnabled); + evalBoard->setFastSettleByTTLchannel(fastSettleTTLChannel); + evalBoard->setDacHighpassFilter(desiredDAChpf); + evalBoard->enableDacHighpassFilter(desiredDAChpfState); + + dacOutputShouldChange = false; + } + + + return true; + +} + + +/***********************************/ +/* Below is code for impedance measurements */ + + + + +// Update electrode impedance measurement frequency, after checking that +// requested test frequency lies within acceptable ranges based on the +// amplifier bandwidth and the sampling rate. See impedancefreqdialog.cpp +// for more information. +float RHD2000Thread::updateImpedanceFrequency(float desiredImpedanceFreq, bool& impedanceFreqValid) +{ + int impedancePeriod; + double lowerBandwidthLimit, upperBandwidthLimit; + float actualImpedanceFreq; + + upperBandwidthLimit = actualUpperBandwidth / 1.5; + lowerBandwidthLimit = actualLowerBandwidth * 1.5; + if (dspEnabled) + { + if (actualDspCutoffFreq > actualLowerBandwidth) { - evalBoard->enableDac(0, false); + lowerBandwidthLimit = actualDspCutoffFreq * 1.5; } + } - if (audioOutputL >= 0) + if (desiredImpedanceFreq > 0.0) + { + impedancePeriod = (boardSampleRate / desiredImpedanceFreq); + if (impedancePeriod >= 4 && impedancePeriod <= 1024 && + desiredImpedanceFreq >= lowerBandwidthLimit && + desiredImpedanceFreq <= upperBandwidthLimit) { - evalBoard->enableDac(1, true); - evalBoard->selectDacDataChannel(1, audioOutputL); + actualImpedanceFreq = boardSampleRate / impedancePeriod; + impedanceFreqValid = true; } else { - evalBoard->enableDac(1, false); + actualImpedanceFreq = 0.0; + impedanceFreqValid = false; } + } + else + { + actualImpedanceFreq = 0.0; + impedanceFreqValid = false; + } - dacOutputShouldChange = false; + return actualImpedanceFreq; +} + + +// Reads numBlocks blocks of raw USB data stored in a queue of Rhd2000DataBlock +// objects, loads this data into this SignalProcessor object, scaling the raw +// data to generate waveforms with units of volts or microvolts. +int RHD2000Thread::loadAmplifierData(queue<Rhd2000DataBlock>& dataQueue, + int numBlocks, int numDataStreams) +{ + + int block, t, channel, stream, i, j; + int indexAmp = 0; + int indexAux = 0; + int indexSupply = 0; + int indexAdc = 0; + int indexDig = 0; + int numWordsWritten = 0; + + int bufferIndex; + int16 tempQint16; + uint16 tempQuint16; + int32 tempQint32; + + bool triggerFound = false; + const double AnalogTriggerThreshold = 1.65; + + + for (block = 0; block < numBlocks; ++block) + { + + // Load and scale RHD2000 amplifier waveforms + // (sampled at amplifier sampling rate) + for (t = 0; t < SAMPLES_PER_DATA_BLOCK; ++t) + { + for (channel = 0; channel < 32; ++channel) + { + for (stream = 0; stream < numDataStreams; ++stream) + { + // Amplifier waveform units = microvolts + amplifierPreFilter[stream][channel][indexAmp] = 0.195 * + (dataQueue.front().amplifierData[stream][channel][t] - 32768); + } + } + ++indexAmp; + } + // We are done with this Rhd2000DataBlock object; remove it from dataQueue + dataQueue.pop(); } + return 0; +} - return true; +#define PI 3.14159265359 +#define TWO_PI 6.28318530718 +#define DEGREES_TO_RADIANS 0.0174532925199 +#define RADIANS_TO_DEGREES 57.2957795132 + +// Return the magnitude and phase (in degrees) of a selected frequency component (in Hz) +// for a selected amplifier channel on the selected USB data stream. +void RHD2000Thread::measureComplexAmplitude(std::vector<std::vector<std::vector<double>>>& measuredMagnitude, + std::vector<std::vector<std::vector<double>>>& measuredPhase, + int capIndex, int stream, int chipChannel, int numBlocks, + double sampleRate, double frequency, int numPeriods) +{ + int period = (sampleRate / frequency); + int startIndex = 0; + int endIndex = startIndex + numPeriods * period - 1; + + // Move the measurement window to the end of the waveform to ignore start-up transient. + while (endIndex < SAMPLES_PER_DATA_BLOCK * numBlocks - period) + { + startIndex += period; + endIndex += period; + } + + double iComponent, qComponent; + + // Measure real (iComponent) and imaginary (qComponent) amplitude of frequency component. + amplitudeOfFreqComponent(iComponent, qComponent, amplifierPreFilter[stream][chipChannel], + startIndex, endIndex, sampleRate, frequency); + // Calculate magnitude and phase from real (I) and imaginary (Q) components. + measuredMagnitude[stream][chipChannel][capIndex] = + sqrt(iComponent * iComponent + qComponent * qComponent); + measuredPhase[stream][chipChannel][capIndex] = + RADIANS_TO_DEGREES *atan2(qComponent, iComponent); +} + +// Returns the real and imaginary amplitudes of a selected frequency component in the vector +// data, between a start index and end index. +void RHD2000Thread::amplitudeOfFreqComponent(double& realComponent, double& imagComponent, + const std::vector<double>& data, int startIndex, + int endIndex, double sampleRate, double frequency) +{ + int length = endIndex - startIndex + 1; + const double k = TWO_PI * frequency / sampleRate; // precalculate for speed + + // Perform correlation with sine and cosine waveforms. + double meanI = 0.0; + double meanQ = 0.0; + for (int t = startIndex; t <= endIndex; ++t) + { + meanI += data.at(t) * cos(k * t); + meanQ += data.at(t) * -1.0 * sin(k * t); + } + meanI /= (double) length; + meanQ /= (double) length; + + realComponent = 2.0 * meanI; + imagComponent = 2.0 * meanQ; +} + + + +// Given a measured complex impedance that is the result of an electrode impedance in parallel +// with a parasitic capacitance (i.e., due to the amplifier input capacitance and other +// capacitances associated with the chip bondpads), this function factors out the effect of the +// parasitic capacitance to return the acutal electrode impedance. +void RHD2000Thread::factorOutParallelCapacitance(double& impedanceMagnitude, double& impedancePhase, + double frequency, double parasiticCapacitance) +{ + // First, convert from polar coordinates to rectangular coordinates. + double measuredR = impedanceMagnitude * cos(DEGREES_TO_RADIANS * impedancePhase); + double measuredX = impedanceMagnitude * sin(DEGREES_TO_RADIANS * impedancePhase); + + double capTerm = TWO_PI * frequency * parasiticCapacitance; + double xTerm = capTerm * (measuredR * measuredR + measuredX * measuredX); + double denominator = capTerm * xTerm + 2 * capTerm * measuredX + 1; + double trueR = measuredR / denominator; + double trueX = (measuredX + xTerm) / denominator; + + // Now, convert from rectangular coordinates back to polar coordinates. + impedanceMagnitude = sqrt(trueR * trueR + trueX * trueX); + impedancePhase = RADIANS_TO_DEGREES * atan2(trueX, trueR); +} + +// This is a purely empirical function to correct observed errors in the real component +// of measured electrode impedances at sampling rates below 15 kS/s. At low sampling rates, +// it is difficult to approximate a smooth sine wave with the on-chip voltage DAC and 10 kHz +// 2-pole lowpass filter. This function attempts to somewhat correct for this, but a better +// solution is to always run impedance measurements at 20 kS/s, where they seem to be most +// accurate. +void RHD2000Thread::empiricalResistanceCorrection(double& impedanceMagnitude, double& impedancePhase, + double boardSampleRate) +{ + // First, convert from polar coordinates to rectangular coordinates. + double impedanceR = impedanceMagnitude * cos(DEGREES_TO_RADIANS * impedancePhase); + double impedanceX = impedanceMagnitude * sin(DEGREES_TO_RADIANS * impedancePhase); + + // Emprically derived correction factor (i.e., no physical basis for this equation). + impedanceR /= 10.0 * exp(-boardSampleRate / 2500.0) * cos(TWO_PI * boardSampleRate / 15000.0) + 1.0; + + // Now, convert from rectangular coordinates back to polar coordinates. + impedanceMagnitude = sqrt(impedanceR * impedanceR + impedanceX * impedanceX); + impedancePhase = RADIANS_TO_DEGREES * atan2(impedanceX, impedanceR); +} + +void RHD2000Thread::runImpedanceTest(Array<int>& streams, Array<int>& channels, Array<float>& magnitudes, Array<float>& phases) +{ + int commandSequenceLength, stream, channel, capRange; + double cSeries; + vector<int> commandList; + int triggerIndex; // dummy reference variable; not used + queue<Rhd2000DataBlock> bufferQueue; // dummy reference variable; not used + int numdataStreams = evalBoard->getNumEnabledDataStreams(); + + bool rhd2164ChipPresent = false; + Array<int> enabledStreams; + for (stream = 0; stream < MAX_NUM_DATA_STREAMS; ++stream) + { + + if (evalBoard->isStreamEnabled(stream)) + { + enabledStreams.add(stream); + } + + if (chipId[stream] == CHIP_ID_RHD2164_B) + { + rhd2164ChipPresent = true; + } + } + + bool validImpedanceFreq; + float actualImpedanceFreq = updateImpedanceFrequency(1000.0, validImpedanceFreq); + if (!validImpedanceFreq) + { + return ; + } + // Create a command list for the AuxCmd1 slot. + commandSequenceLength = chipRegisters.createCommandListZcheckDac(commandList, actualImpedanceFreq, 128.0); + evalBoard->uploadCommandList(commandList, Rhd2000EvalBoard::AuxCmd1, 1); + evalBoard->selectAuxCommandLength(Rhd2000EvalBoard::AuxCmd1, + 0, commandSequenceLength - 1); + bool fastSettleMode = evalBoard->getExternalFastSettle(); + if (fastSettleMode) + { + evalBoard->enableExternalFastSettle(false); + } + + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortA, + Rhd2000EvalBoard::AuxCmd1, 1); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortB, + Rhd2000EvalBoard::AuxCmd1, 1); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortC, + Rhd2000EvalBoard::AuxCmd1, 1); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortD, + Rhd2000EvalBoard::AuxCmd1, 1); + + // Select number of periods to measure impedance over + int numPeriods = (0.020 * actualImpedanceFreq); // Test each channel for at least 20 msec... + if (numPeriods < 5) numPeriods = 5; // ...but always measure across no fewer than 5 complete periods + double period = boardSampleRate / actualImpedanceFreq; + int numBlocks = ceil((numPeriods + 2.0) * period / 60.0); // + 2 periods to give time to settle initially + if (numBlocks < 2) numBlocks = 2; // need first block for command to switch channels to take effect. + + actualDspCutoffFreq = chipRegisters.setDspCutoffFreq(desiredDspCutoffFreq); + actualLowerBandwidth = chipRegisters.setLowerBandwidth(desiredLowerBandwidth); + actualUpperBandwidth = chipRegisters.setUpperBandwidth(desiredUpperBandwidth); + chipRegisters.enableDsp(dspEnabled); + chipRegisters.enableZcheck(true); + commandSequenceLength = chipRegisters.createCommandListRegisterConfig(commandList, false); + // Upload version with no ADC calibration to AuxCmd3 RAM Bank 1. + evalBoard->uploadCommandList(commandList, Rhd2000EvalBoard::AuxCmd3, 3); + evalBoard->selectAuxCommandLength(Rhd2000EvalBoard::AuxCmd3, 0, commandSequenceLength - 1); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortA, Rhd2000EvalBoard::AuxCmd3, 3); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortB, Rhd2000EvalBoard::AuxCmd3, 3); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortC, Rhd2000EvalBoard::AuxCmd3, 3); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortD, Rhd2000EvalBoard::AuxCmd3, 3); + + evalBoard->setContinuousRunMode(false); + evalBoard->setMaxTimeStep(SAMPLES_PER_DATA_BLOCK * numBlocks); + + // Create matrices of doubles of size (numStreams x 32 x 3) to store complex amplitudes + // of all amplifier channels (32 on each data stream) at three different Cseries values. + std::vector<std::vector<std::vector<double>>> measuredMagnitude; + std::vector<std::vector<std::vector<double>>> measuredPhase; + + measuredMagnitude.resize(evalBoard->getNumEnabledDataStreams()); + measuredPhase.resize(evalBoard->getNumEnabledDataStreams()); + for (int i = 0; i < evalBoard->getNumEnabledDataStreams(); ++i) + { + measuredMagnitude[i].resize(32); + measuredPhase[i].resize(32); + for (int j = 0; j < 32; ++j) + { + measuredMagnitude[i][j].resize(3); + measuredPhase[i][j].resize(3); + } + } + + + + double distance, minDistance, current, Cseries; + double impedanceMagnitude, impedancePhase; + + const double bestAmplitude = 250.0; // we favor voltage readings that are closest to 250 uV: not too large, + // and not too small. + const double dacVoltageAmplitude = 128 * (1.225 / 256); // this assumes the DAC amplitude was set to 128 + const double parasiticCapacitance = 14.0e-12; // 14 pF: an estimate of on-chip parasitic capacitance, + // including 10 pF of amplifier input capacitance. + double relativeFreq = actualImpedanceFreq / boardSampleRate; + + int bestAmplitudeIndex; + + // We execute three complete electrode impedance measurements: one each with + // Cseries set to 0.1 pF, 1 pF, and 10 pF. Then we select the best measurement + // for each channel so that we achieve a wide impedance measurement range. + for (capRange = 0; capRange < 3; ++ capRange) + { + + + switch (capRange) + { + case 0: + chipRegisters.setZcheckScale(Rhd2000Registers::ZcheckCs100fF); + cSeries = 0.1e-12; + cout << "setting capacitance to 0.1pF" << endl; + break; + case 1: + chipRegisters.setZcheckScale(Rhd2000Registers::ZcheckCs1pF); + cSeries = 1.0e-12; + cout << "setting capacitance to 1pF" << endl; + break; + case 2: + chipRegisters.setZcheckScale(Rhd2000Registers::ZcheckCs10pF); + cSeries = 10.0e-12; + cout << "setting capacitance to 10pF" << endl; + break; + } + + // Check all 32 channels across all active data streams. + for (channel = 0; channel < 32; ++channel) + { + cout << "running impedance on channel " << channel << endl; + + chipRegisters.setZcheckChannel(channel); + commandSequenceLength = + chipRegisters.createCommandListRegisterConfig(commandList, false); + // Upload version with no ADC calibration to AuxCmd3 RAM Bank 1. + evalBoard->uploadCommandList(commandList, Rhd2000EvalBoard::AuxCmd3, 3); + + evalBoard->run(); + while (evalBoard->isRunning()) + { -} \ No newline at end of file + } + queue<Rhd2000DataBlock> dataQueue; + evalBoard->readDataBlocks(numBlocks, dataQueue); + loadAmplifierData(dataQueue, numBlocks, numdataStreams); + for (stream = 0; stream < numdataStreams; ++stream) + { + if (chipId[stream] != CHIP_ID_RHD2164_B) + { + measureComplexAmplitude(measuredMagnitude, measuredPhase, + capRange, stream, channel, numBlocks, boardSampleRate, + actualImpedanceFreq, numPeriods); + } + } + + // If an RHD2164 chip is plugged in, we have to set the Zcheck select register to channels 32-63 + // and repeat the previous steps. + if (rhd2164ChipPresent) + { + chipRegisters.setZcheckChannel(channel + 32); // address channels 32-63 + commandSequenceLength = + chipRegisters.createCommandListRegisterConfig(commandList, false); + // Upload version with no ADC calibration to AuxCmd3 RAM Bank 1. + evalBoard->uploadCommandList(commandList, Rhd2000EvalBoard::AuxCmd3, 3); + + evalBoard->run(); + while (evalBoard->isRunning()) + { + + } + evalBoard->readDataBlocks(numBlocks, dataQueue); + loadAmplifierData(dataQueue, numBlocks, numdataStreams); + + for (stream = 0; stream < evalBoard->getNumEnabledDataStreams(); ++stream) + { + if (chipId[stream] == CHIP_ID_RHD2164_B) + { + measureComplexAmplitude(measuredMagnitude, measuredPhase, + capRange, stream, channel, numBlocks, boardSampleRate, + actualImpedanceFreq, numPeriods); + } + } + } + } + } + + streams.clear(); + channels.clear(); + magnitudes.clear(); + phases.clear(); + + for (stream = 0; stream < evalBoard->getNumEnabledDataStreams(); ++stream) + { + for (channel = 0; channel < 32; ++channel) + { + if (1) + { + minDistance = 9.9e99; // ridiculously large number + for (capRange = 0; capRange < 3; ++capRange) + { + // Find the measured amplitude that is closest to bestAmplitude on a logarithmic scale + distance = abs(log(measuredMagnitude[stream][channel][capRange] / bestAmplitude)); + if (distance < minDistance) + { + bestAmplitudeIndex = capRange; + minDistance = distance; + } + } + switch (bestAmplitudeIndex) + { + case 0: + Cseries = 0.1e-12; + break; + case 1: + Cseries = 1.0e-12; + break; + case 2: + Cseries = 10.0e-12; + break; + } + + // Calculate current amplitude produced by on-chip voltage DAC + current = TWO_PI * actualImpedanceFreq * dacVoltageAmplitude * Cseries; + + // Calculate impedance magnitude from calculated current and measured voltage. + impedanceMagnitude = 1.0e-6 * (measuredMagnitude[stream][channel][bestAmplitudeIndex] / current) * + (18.0 * relativeFreq * relativeFreq + 1.0); + + // Calculate impedance phase, with small correction factor accounting for the + // 3-command SPI pipeline delay. + impedancePhase = measuredPhase[stream][channel][bestAmplitudeIndex] + (360.0 * (3.0 / period)); + + // Factor out on-chip parasitic capacitance from impedance measurement. + factorOutParallelCapacitance(impedanceMagnitude, impedancePhase, actualImpedanceFreq, + parasiticCapacitance); + + // Perform empirical resistance correction to improve accuarcy at sample rates below + // 15 kS/s. + empiricalResistanceCorrection(impedanceMagnitude, impedancePhase, + boardSampleRate); + + streams.add(enabledStreams[stream]); + channels.add(channel); + magnitudes.add(impedanceMagnitude); + phases.add(impedancePhase); + + if (impedanceMagnitude > 1000000) + cout << "stream " << stream << " channel " << 1+channel << " magnitude: " << String(impedanceMagnitude/1e6,2) << " mOhm , phase : " <<impedancePhase << endl; + else + cout << "stream " << stream << " channel " << 1+channel << " magnitude: " << String(impedanceMagnitude/1e3,2) << " kOhm , phase : " <<impedancePhase << endl; + + } + } + } + + evalBoard->setContinuousRunMode(false); + evalBoard->setMaxTimeStep(0); + evalBoard->flush(); + + // Switch back to flatline + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortA, Rhd2000EvalBoard::AuxCmd1, 0); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortB, Rhd2000EvalBoard::AuxCmd1, 0); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortC, Rhd2000EvalBoard::AuxCmd1, 0); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortD, Rhd2000EvalBoard::AuxCmd1, 0); + evalBoard->selectAuxCommandLength(Rhd2000EvalBoard::AuxCmd1, 0, 1); + + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortA, Rhd2000EvalBoard::AuxCmd3, + fastSettleEnabled ? 2 : 1); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortB, Rhd2000EvalBoard::AuxCmd3, + fastSettleEnabled ? 2 : 1); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortC, Rhd2000EvalBoard::AuxCmd3, + fastSettleEnabled ? 2 : 1); + evalBoard->selectAuxCommandBank(Rhd2000EvalBoard::PortD, Rhd2000EvalBoard::AuxCmd3, + fastSettleEnabled ? 2 : 1); + + if (fastSettleMode) + { + evalBoard->enableExternalFastSettle(true); + } +} diff --git a/Source/Processors/DataThreads/RHD2000Thread.h b/Source/Processors/DataThreads/RHD2000Thread.h index 203cfa0b0ef7da76bc47a7ce44c9bea4d1b78b40..08b7831de3e38086bd7b1d29c82793b9a976e46a 100644 --- a/Source/Processors/DataThreads/RHD2000Thread.h +++ b/Source/Processors/DataThreads/RHD2000Thread.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -37,6 +37,7 @@ #include "rhythm-api/okFrontPanelDLL.h" #include "DataThread.h" +#include "../GenericProcessor/GenericProcessor.h" #define MAX_NUM_DATA_STREAMS 8 @@ -50,7 +51,7 @@ class SourceNode; */ -class RHD2000Thread : public DataThread +class RHD2000Thread : public DataThread, public Timer { public: @@ -71,34 +72,62 @@ public: void setSampleRate(int index, bool temporary = false); double setUpperBandwidth(double upper); // set desired BW, returns actual BW - double setLowerBandwidth(double lower); + double setLowerBandwidth(double lower); + double setDspCutoffFreq(double freq); double getDspCutoffFreq(); void setDSPOffset(bool state); int setNoiseSlicerLevel(int level); + void runImpedanceTest(Array<int> &stream, Array<int> &channel, Array<float> &magnitude, Array<float> &phase); + void setFastTTLSettle(bool state, int channel); + void setTTLoutputMode(bool state); + void setDAChpf(float cutoff, bool enabled); void scanPorts(); - + float updateImpedanceFrequency(float desiredImpedanceFreq, bool &impedanceFreqValid); + int loadAmplifierData(queue<Rhd2000DataBlock> &dataQueue, + int numBlocks, int numDataStreams); + void measureComplexAmplitude(std::vector<std::vector<std::vector<double>>> &measuredMagnitude, + std::vector<std::vector<std::vector<double>>> &measuredPhase, + int capIndex, int stream, int chipChannel, int numBlocks, + double sampleRate, double frequency, int numPeriods); + void amplitudeOfFreqComponent(double &realComponent, double &imagComponent, + const std::vector<double> &data, int startIndex, + int endIndex, double sampleRate, double frequency); int getNumEventChannels(); + int getNumADCchannels(); void assignAudioOut(int dacChannel, int dataChannel); void enableAdcs(bool); bool isAcquisitionActive(); - + + virtual int modifyChannelGain(channelType t, int str, int ch, float gain); + virtual int modifyChannelName(channelType t, int str, int k, String newName); + virtual void getChannelsInfo(StringArray &Names, Array<channelType> &type, Array<int> &stream, Array<int> &originalChannelNumber, Array<float> &gains); + virtual void getEventChannelNames(StringArray &Names); void updateChannelNames(); + Array<int> getDACchannels(); + void setDACchannel(int dacOutput, int stream, int channel); + void setDACthreshold(int dacOutput, float threshold); + void setDefaultNamingScheme(int scheme); private: + void setDefaultChannelNamesAndType(); + bool channelModified(channelType t, int str, int k, String &oldName, float &oldGain, int &index); ScopedPointer<Rhd2000EvalBoard> evalBoard; Rhd2000Registers chipRegisters; Rhd2000DataBlock* dataBlock; - + std::vector<std::vector<std::vector<double>>> amplifierPreFilter; Array<int> numChannelsPerDataStream; - + void factorOutParallelCapacitance(double &impedanceMagnitude, double &impedancePhase, + double frequency, double parasiticCapacitance); + void empiricalResistanceCorrection(double &impedanceMagnitude, double &impedancePhase, + double boardSampleRate); int numChannels; bool deviceFound; @@ -114,6 +143,11 @@ private: bool acquireAuxChannels; bool fastSettleEnabled; + bool fastTTLSettleEnabled; + bool fastSettleTTLChannel; + bool ttlMode; + bool desiredDAChpfState; + double desiredDAChpf; bool dspEnabled; double actualDspCutoffFreq, desiredDspCutoffFreq; @@ -125,7 +159,7 @@ private: String libraryFilePath; - + void timerCallback(); bool startAcquisition(); bool stopAcquisition(); @@ -143,6 +177,19 @@ private: double cableLengthPortA, cableLengthPortB, cableLengthPortC, cableLengthPortD; int audioOutputL, audioOutputR; + int *dacChannels, *dacStream; + float *dacThresholds; + bool *dacChannelsToUpdate; + Array<int> chipId; + + // used for data stream names... + int numberingScheme ; + StringArray Names, oldNames; + Array<channelType> type, oldType; + Array<float> gains, oldGains; + Array<int> stream, oldStream; + Array<bool> modifiedName, oldModifiedName; + Array<int> originalChannelNumber, oldChannelNumber; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(RHD2000Thread); diff --git a/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.cpp b/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.cpp index 54e5e702162843a8658edfa10d7c826d488b00d7..686aaa17385d56b1fcd1e5e7bff6d0c979711326 100755 --- a/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.cpp +++ b/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.cpp @@ -39,6 +39,7 @@ using namespace std; Rhd2000EvalBoard::Rhd2000EvalBoard() { int i; + fast_settle_enabled = false; sampleRate = SampleRate30000Hz; // Rhythm FPGA boots up with 30.0 kS/s/channel sampling rate numDataStreams = 0; dev = 0; //nullptr; @@ -47,6 +48,13 @@ Rhd2000EvalBoard::Rhd2000EvalBoard() { dataStreamEnabled[i] = 0; } + dacChannelAssignment = new int[8]; + dacChannelThreshold = new float[8]; + for (int k=0;k<8;k++) + { + dacChannelAssignment[k] = -1; + dacChannelThreshold[k] =0; + } } //Destructor: Deletes the device to avoid memory leak @@ -132,28 +140,28 @@ bool Rhd2000EvalBoard::uploadFpgaBitfile(string filename) break; case okCFrontPanel::DeviceNotOpen: cerr << "FPGA configuration failed: Device not open." << endl; - return (false); + return(false); case okCFrontPanel::FileError: cerr << "FPGA configuration failed: Cannot find configuration file." << endl; - return (false); + return(false); case okCFrontPanel::InvalidBitstream: cerr << "FPGA configuration failed: Bitstream is not properly formatted." << endl; - return (false); + return(false); case okCFrontPanel::DoneNotHigh: cerr << "FPGA configuration failed: FPGA DONE signal did not assert after configuration." << endl; - return (false); + return(false); case okCFrontPanel::TransferError: cerr << "FPGA configuration failed: USB error occurred during download." << endl; - return (false); + return(false); case okCFrontPanel::CommunicationError: cerr << "FPGA configuration failed: Communication error with firmware." << endl; - return (false); + return(false); case okCFrontPanel::UnsupportedFeature: cerr << "FPGA configuration failed: Unsupported feature." << endl; - return (false); + return(false); default: cerr << "FPGA configuration failed: Unknown error." << endl; - return (false); + return(false); } // Check for Opal Kelly FrontPanel support in the FPGA configuration. @@ -162,7 +170,7 @@ bool Rhd2000EvalBoard::uploadFpgaBitfile(string filename) cerr << "Opal Kelly FrontPanel support is not enabled in this FPGA configuration." << endl; delete dev; dev = 0; //nullptr; - return (false); + return(false); } int boardId, boardVersion; @@ -173,7 +181,7 @@ bool Rhd2000EvalBoard::uploadFpgaBitfile(string filename) if (boardId != RHYTHM_BOARD_ID) { cerr << "FPGA configuration does not support Rhythm. Incorrect board ID: " << boardId << endl; - return (false); + return(false); } else { @@ -181,9 +189,14 @@ bool Rhd2000EvalBoard::uploadFpgaBitfile(string filename) boardVersion << endl << endl; } - return (true); + return(true); } +// Uses the Opal Kelly library to reset the FPGA +void Rhd2000EvalBoard::resetFpga() +{ + dev->ResetFPGA(); +} // Reads system clock frequency from Opal Kelly board (in MHz). Should be 100 MHz for normal // Rhythm operation. @@ -275,6 +288,18 @@ void Rhd2000EvalBoard::initialize() setDacGain(0); setAudioNoiseSuppress(0); + + setTtlMode(0); // If 1 then Digital outputs 0-7 are DAC comparators; 8-15 under manual control + // by default, set to 0 (all are under manual control). + + setDacThreshold(0, 32768, true); + setDacThreshold(1, 32768, true); + setDacThreshold(2, 32768, true); + setDacThreshold(3, 32768, true); + setDacThreshold(4, 32768, true); + setDacThreshold(5, 32768, true); + setDacThreshold(6, 32768, true); + setDacThreshold(7, 32768, true); } // Set the per-channel sampling rate of the RHD2000 chips connected to the FPGA. @@ -406,7 +431,7 @@ bool Rhd2000EvalBoard::setSampleRate(AmplifierSampleRate newSampleRate) D = 25; break; default: - return (false); + return(false); } sampleRate = newSampleRate; @@ -422,7 +447,7 @@ bool Rhd2000EvalBoard::setSampleRate(AmplifierSampleRate newSampleRate) // Wait for DataClkLocked = 1 before allowing data acquisition to continue while (isDataClockLocked() == false) {} - return (true); + return(true); } // Returns the current per-channel sampling rate (in Hz) as a floating-point number. @@ -492,7 +517,7 @@ Rhd2000EvalBoard::AmplifierSampleRate Rhd2000EvalBoard::getSampleRateEnum() cons } // Print a command list to the console in readable form. -void Rhd2000EvalBoard::printCommandList(const vector<int>& commandList) const +void Rhd2000EvalBoard::printCommandList(const vector<int> &commandList) const { unsigned int i; int cmd, channel, reg, data; @@ -543,7 +568,7 @@ void Rhd2000EvalBoard::printCommandList(const vector<int>& commandList) const // Upload an auxiliary command list to a particular command slot (AuxCmd1, AuxCmd2, or AuxCmd3) and RAM bank (0-15) // on the FPGA. -void Rhd2000EvalBoard::uploadCommandList(const vector<int>& commandList, AuxCmdSlot auxCommandSlot, int bank) +void Rhd2000EvalBoard::uploadCommandList(const vector<int> &commandList, AuxCmdSlot auxCommandSlot, int bank) { unsigned int i; @@ -678,12 +703,6 @@ void Rhd2000EvalBoard::resetBoard() dev->UpdateWireIns(); } -// Use the Opal Kelly library to reset the FPGA -void Rhd2000EvalBoard::resetFpga() -{ - dev->ResetFPGA(); -} - // Set the FPGA to run continuously once started (if continuousMode == true) or to run until // maxTimeStep is reached (if continuousMode == false). void Rhd2000EvalBoard::setContinuousRunMode(bool continuousMode) @@ -906,6 +925,14 @@ void Rhd2000EvalBoard::setDataSource(int stream, BoardDataSource dataSource) dev->UpdateWireIns(); } +bool Rhd2000EvalBoard::isStreamEnabled(int streamIndex) +{ + if (streamIndex < 0 || streamIndex > (MAX_NUM_DATA_STREAMS - 1)) + return false; + + return dataStreamEnabled[streamIndex]; +} + // Enable or disable one of the eight available USB data streams (0-7). void Rhd2000EvalBoard::enableDataStream(int stream, bool enabled) { @@ -1127,6 +1154,69 @@ void Rhd2000EvalBoard::selectDacDataStream(int dacChannel, int stream) dev->UpdateWireIns(); } +void Rhd2000EvalBoard::setFastSettleByTTL(bool state) + +{ + dev->SetWireInValue(WireInResetRun, (state ? 0x10 : 0x00), 0x10); + dev->UpdateWireIns(); +} + +void Rhd2000EvalBoard::setFastSettleByTTLchannel(int channel) +{ + if (channel < 0 || channel > 7) + { + cerr << "Error in Rhd2000EvalBoard::setFastSettleByTTLchannel: channel out of range." << endl; + return; + } +// the WireInTTLSettleChannel is also used by DAC, so keep the values of 10 used bits + // and shift the channel value 10 bits to the left + dev->SetWireInValue(WireInTTLSettleChannel, channel << 10, 0x3c00); + dev->UpdateWireIns(); +} + + + +// Enable external triggering of amplifier hardware 'fast settle' function (blanking). +// If external triggering is enabled, this fast settling of amplifiers on all connected +// chips will be controlled in real time via one of the 16 TTL inputs. +void Rhd2000EvalBoard::enableExternalFastSettle(bool enable) +{ + fast_settle_enabled = enable; + dev->SetWireInValue(WireInMultiUse, enable ? 1 : 0); + dev->UpdateWireIns(); + dev->ActivateTriggerIn(TrigInExtFastSettle, 0); +} + +bool Rhd2000EvalBoard::getExternalFastSettle() +{ + return fast_settle_enabled; +} +// Select which of the TTL inputs 0-15 is used to perform a hardware 'fast settle' (blanking) +// of the amplifiers if external triggering of fast settling +// is enabled. +void Rhd2000EvalBoard::setExternalFastSettleChannel(int channel) +{ + if (channel < 0 || channel > 15) { + cerr << "Error in Rhd2000EvalBoard::setExternalFastSettleChannel: channel out of range." << endl; + return; + } + dev->SetWireInValue(WireInMultiUse, channel); + dev->UpdateWireIns(); + dev->ActivateTriggerIn(TrigInExtFastSettle, 1); +} + +int Rhd2000EvalBoard::gecDacDataChannel(int dacChannel) +{ + if (dacChannel < 0 || dacChannel > 7) + return -1; + return dacChannelAssignment[dacChannel]; +} + +void Rhd2000EvalBoard::updateDacAssignment(int dacChannel, int channel) +{ + dacChannelAssignment[dacChannel] = channel; +} + // Assign a particular amplifier channel (0-31) to a DAC channel (0-7). void Rhd2000EvalBoard::selectDacDataChannel(int dacChannel, int dataChannel) { @@ -1141,6 +1231,7 @@ void Rhd2000EvalBoard::selectDacDataChannel(int dacChannel, int dataChannel) cerr << "Error in Rhd2000EvalBoard::selectDacDataChannel: dataChannel out of range." << endl; return; } + dacChannelAssignment[dacChannel] = dataChannel; switch (dacChannel) { @@ -1172,6 +1263,112 @@ void Rhd2000EvalBoard::selectDacDataChannel(int dacChannel, int dataChannel) dev->UpdateWireIns(); } +// Enable optional FPGA-implemented digital high-pass filters associated with DAC outputs +// on USB interface board.. These one-pole filters can be used to record wideband neural data +// while viewing only spikes without LFPs on the DAC outputs, for example. This is useful when +// using the low-latency FPGA thresholds to detect spikes and produce digital pulses on the TTL +// outputs, for example. +void Rhd2000EvalBoard::enableDacHighpassFilter(bool enable) +{ + dev->SetWireInValue(WireInMultiUse, enable ? 1 : 0); + dev->UpdateWireIns(); + dev->ActivateTriggerIn(TrigInDacHpf, 0); +} + +// Set cutoff frequency (in Hz) for optional FPGA-implemented digital high-pass filters +// associated with DAC outputs on USB interface board. These one-pole filters can be used +// to record wideband neural data while viewing only spikes without LFPs on the DAC outputs, +// for example. This is useful when using the low-latency FPGA thresholds to detect spikes +// and produce digital pulses on the TTL outputs, for example. +void Rhd2000EvalBoard::setDacHighpassFilter(double cutoff) +{ + double b; + int filterCoefficient; + const double pi = 3.1415926535897; + + // Note that the filter coefficient is a function of the amplifier sample rate, so this + // function should be called after the sample rate is changed. + b = 1.0 - exp(-2.0 * pi * cutoff / getSampleRate()); + + // In hardware, the filter coefficient is represented as a 16-bit number. + filterCoefficient = (int) floor(65536.0 * b + 0.5); + + if (filterCoefficient < 1) { + filterCoefficient = 1; + } else if (filterCoefficient > 65535) { + filterCoefficient = 65535; + } + + dev->SetWireInValue(WireInMultiUse, filterCoefficient); + dev->UpdateWireIns(); + dev->ActivateTriggerIn(TrigInDacHpf, 1); +} + +// Set thresholds for DAC channels; threshold output signals appear on TTL outputs 0-7. +// The parameter 'threshold' corresponds to the RHD2000 chip ADC output value, and must fall +// in the range of 0 to 65535, where the 'zero' level is 32768. +// If trigPolarity is true, voltages equaling or rising above the threshold produce a high TTL output. +// If trigPolarity is false, voltages equaling or falling below the threshold produce a high TTL output. +// +// To convert threshold in voltage to this range, use the following: +// int threshLevel = ((double) threshold / 0.195) + 32768; +// evalBoard->setDacThreshold(0, threshLevel, threshold >= 0); + +void Rhd2000EvalBoard::setDacThresholdVoltage(int dacChannel, float voltage_threshold) +{ + int threshLevel = (voltage_threshold / 0.195) + 32768; + setDacThreshold(dacChannel, abs(threshLevel), voltage_threshold >= 0); + +} + +void Rhd2000EvalBoard::getDacInformation(int *ch, float *th) +{ + for (int k=0;k<8;k++) + { + ch[k] = dacChannelAssignment[k]; + th[k] = dacChannelThreshold[k]; + } +} + +void Rhd2000EvalBoard::setDacThreshold(int dacChannel, int threshold, bool trigPolarityPositive) +{ + if (dacChannel < 0 || dacChannel > 7) { + cerr << "Error in Rhd2000EvalBoard::setDacThreshold: dacChannel out of range." << endl; + return; + } + + if (threshold < 0 || threshold > 65535) { + cerr << "Error in Rhd2000EvalBoard::setDacThreshold: threshold out of range." << endl; + return; + } + dacChannelThreshold[dacChannel] = trigPolarityPositive? -(float)(threshold-32768)*0.195 : (float)(threshold-32768)*0.195; + + // Set threshold level. + dev->SetWireInValue(WireInMultiUse, threshold); + dev->UpdateWireIns(); + dev->ActivateTriggerIn(TrigInDacThresh, dacChannel); + + // Set threshold polarity. + dev->SetWireInValue(WireInMultiUse, (trigPolarityPositive ? 1 : 0)); + dev->UpdateWireIns(); + dev->ActivateTriggerIn(TrigInDacThresh, dacChannel + 8); +} + +// Set the TTL output mode of the board. +// mode = 0: All 16 TTL outputs are under manual control +// mode = 1: Top 8 TTL outputs are under manual control; +// Bottom 8 TTL outputs are outputs of DAC comparators +void Rhd2000EvalBoard::setTtlMode(int mode) +{ + if (mode < 0 || mode > 1) { + cerr << "Error in Rhd2000EvalBoard::setTtlMode: mode out of range." << endl; + return; + } + + dev->SetWireInValue(WireInResetRun, mode << 3, 0x0008); + dev->UpdateWireIns(); +} + // Is variable-frequency clock DCM programming done? bool Rhd2000EvalBoard::isDcmProgDone() const { @@ -1232,7 +1429,7 @@ bool Rhd2000EvalBoard::readDataBlock(Rhd2000DataBlock* dataBlock) // Reads a certain number of USB data blocks, if the specified number is available, and appends them // to queue. Returns true if data blocks were available. -bool Rhd2000EvalBoard::readDataBlocks(int numBlocks, queue<Rhd2000DataBlock>& dataQueue) +bool Rhd2000EvalBoard::readDataBlocks(int numBlocks, queue<Rhd2000DataBlock> &dataQueue) { unsigned int numWordsToRead, numBytesToRead; int i; @@ -1269,7 +1466,7 @@ bool Rhd2000EvalBoard::readDataBlocks(int numBlocks, queue<Rhd2000DataBlock>& da // Writes the contents of a data block queue (dataQueue) to a binary output stream (saveOut). // Returns the number of data blocks written. -int Rhd2000EvalBoard::queueToFile(queue<Rhd2000DataBlock>& dataQueue, ofstream& saveOut) +int Rhd2000EvalBoard::queueToFile(queue<Rhd2000DataBlock> &dataQueue, ofstream& saveOut) { int count = 0; @@ -1289,61 +1486,74 @@ string Rhd2000EvalBoard::opalKellyModelName(int model) const switch (model) { case OK_PRODUCT_XEM3001V1: - return ("XEM3001V1"); + return("XEM3001V1"); case OK_PRODUCT_XEM3001V2: - return ("XEM3001V2"); + return("XEM3001V2"); case OK_PRODUCT_XEM3010: - return ("XEM3010"); + return("XEM3010"); case OK_PRODUCT_XEM3005: - return ("XEM3005"); + return("XEM3005"); case OK_PRODUCT_XEM3001CL: - return ("XEM3001CL"); + return("XEM3001CL"); case OK_PRODUCT_XEM3020: - return ("XEM3020"); + return("XEM3020"); case OK_PRODUCT_XEM3050: - return ("XEM3050"); + return("XEM3050"); case OK_PRODUCT_XEM9002: - return ("XEM9002"); + return("XEM9002"); case OK_PRODUCT_XEM3001RB: - return ("XEM3001RB"); + return("XEM3001RB"); case OK_PRODUCT_XEM5010: - return ("XEM5010"); + return("XEM5010"); case OK_PRODUCT_XEM6110LX45: - return ("XEM6110LX45"); + return("XEM6110LX45"); case OK_PRODUCT_XEM6001: - return ("XEM6001"); + return("XEM6001"); case OK_PRODUCT_XEM6010LX45: - return ("XEM6010LX45"); + return("XEM6010LX45"); case OK_PRODUCT_XEM6010LX150: - return ("XEM6010LX150"); + return("XEM6010LX150"); case OK_PRODUCT_XEM6110LX150: - return ("XEM6110LX150"); + return("XEM6110LX150"); case OK_PRODUCT_XEM6006LX9: - return ("XEM6006LX9"); + return("XEM6006LX9"); case OK_PRODUCT_XEM6006LX16: - return ("XEM6006LX16"); + return("XEM6006LX16"); case OK_PRODUCT_XEM6006LX25: - return ("XEM6006LX25"); + return("XEM6006LX25"); case OK_PRODUCT_XEM5010LX110: - return ("XEM5010LX110"); + return("XEM5010LX110"); case OK_PRODUCT_ZEM4310: - return ("ZEM4310"); + return("ZEM4310"); case OK_PRODUCT_XEM6310LX45: - return ("XEM6310LX45"); + return("XEM6310LX45"); case OK_PRODUCT_XEM6310LX150: - return ("XEM6310LX150"); + return("XEM6310LX150"); case OK_PRODUCT_XEM6110V2LX45: - return ("XEM6110V2LX45"); + return("XEM6110V2LX45"); case OK_PRODUCT_XEM6110V2LX150: - return ("XEM6110V2LX150"); + return("XEM6110V2LX150"); case OK_PRODUCT_XEM6002LX9: - return ("XEM6002LX9"); + return("XEM6002LX9"); case OK_PRODUCT_XEM6310MTLX45: - return ("XEM6310MTLX45"); + return("XEM6310MTLX45"); case OK_PRODUCT_XEM6320LX130T: - return ("XEM6320LX130T"); + return("XEM6320LX130T"); default: - return ("UNKNOWN"); + return("UNKNOWN"); } } +// Return 4-bit "board mode" input. +int Rhd2000EvalBoard::getBoardMode() +{ + int mode; + + dev->UpdateWireOuts(); + mode = dev->GetWireOutValue(WireOutBoardMode); + + cout << "Board mode: " << mode << endl << endl; + + return mode; +} + diff --git a/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.h b/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.h index 5bc2749fa8ba775848e42cdf5c1d1223d30efb87..61b3aa0fb954a42959827d90215ab8afa623c90a 100755 --- a/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.h +++ b/Source/Processors/DataThreads/rhythm-api/rhd2000evalboard.h @@ -84,27 +84,35 @@ public: PortD }; - void uploadCommandList(const vector<int>& commandList, AuxCmdSlot auxCommandSlot, int bank); - void printCommandList(const vector<int>& commandList) const; + void uploadCommandList(const vector<int> &commandList, AuxCmdSlot auxCommandSlot, int bank); + void printCommandList(const vector<int> &commandList) const; void selectAuxCommandBank(BoardPort port, AuxCmdSlot auxCommandSlot, int bank); void selectAuxCommandLength(AuxCmdSlot auxCommandSlot, int loopIndex, int endIndex); + void runImpedance(); + bool getExternalFastSettle(); + + void resetBoard(); - void resetFpga(); void setContinuousRunMode(bool continuousMode); void setMaxTimeStep(unsigned int maxTimeStep); void run(); bool isRunning() const; unsigned int numWordsInFifo() const; static unsigned int fifoCapacityInWords(); - + void setDacThresholdVoltage(int dacChannel, float voltage_threshold); + void setDacThreshold(int dacChannel, int threshold, bool trigPolarity); + void enableDacHighpassFilter(bool enable); + void setDacHighpassFilter(double cutoff); void setCableDelay(BoardPort port, int delay); void setCableLengthMeters(BoardPort port, double lengthInMeters); void setCableLengthFeet(BoardPort port, double lengthInFeet); double estimateCableLengthMeters(int delay) const; double estimateCableLengthFeet(int delay) const; - + void setTtlMode(int mode); void setDspSettle(bool enabled); + int getBoardMode(); + void getDacInformation(int *ch, float *th); enum BoardDataSource { @@ -128,6 +136,7 @@ public: void setDataSource(int stream, BoardDataSource dataSource); void enableDataStream(int stream, bool enabled); + bool isStreamEnabled(int streamIndex); int getNumEnabledDataStreams() const; void clearTtlOut(); @@ -150,16 +159,28 @@ public: void selectDacDataStream(int dacChannel, int stream); void selectDacDataChannel(int dacChannel, int dataChannel); + int gecDacDataChannel(int dacChannel); + void updateDacAssignment(int dacChannel, int channel); + void enableExternalFastSettle(bool enable); + void setExternalFastSettleChannel(int channel); + void setFastSettleByTTL(bool state); + void setFastSettleByTTLchannel(int channel); + void flush(); bool readDataBlock(Rhd2000DataBlock* dataBlock); - bool readDataBlocks(int numBlocks, queue<Rhd2000DataBlock>& dataQueue); - int queueToFile(queue<Rhd2000DataBlock>& dataQueue, std::ofstream& saveOut); + bool readDataBlocks(int numBlocks, queue<Rhd2000DataBlock> &dataQueue); + int queueToFile(queue<Rhd2000DataBlock> &dataQueue, std::ofstream& saveOut); + + void resetFpga(); private: okCFrontPanel* dev; AmplifierSampleRate sampleRate; int numDataStreams; // total number of data streams currently enabled int dataStreamEnabled[MAX_NUM_DATA_STREAMS]; // 0 (disabled) or 1 (enabled) + int *dacChannelAssignment; + float *dacChannelThreshold; + bool fast_settle_enabled; // Buffer for reading bytes from USB interface unsigned char usbBuffer[USB_BUFFER_SIZE]; @@ -199,16 +220,23 @@ private: WireInDacSource8 = 0x1d, WireInDacManual1 = 0x1e, WireInDacManual2 = 0x1f, + WireInMultiUse = 0x1f, + WireInTTLSettleChannel = 0x16, TrigInDcmProg = 0x40, TrigInSpiStart = 0x41, TrigInRamWrite = 0x42, + TrigInDacThresh = 0x43, + TrigInDacHpf = 0x44, + TrigInExtFastSettle = 0x45, + WireOutNumWordsLsb = 0x20, WireOutNumWordsMsb = 0x21, WireOutSpiRunning = 0x22, WireOutTtlIn = 0x23, WireOutDataClkLocked = 0x24, + WireOutBoardMode = 0x25, WireOutBoardId = 0x3e, WireOutBoardVersion = 0x3f, diff --git a/Source/Dsp/Bessel.cpp b/Source/Processors/Dsp/Bessel.cpp similarity index 100% rename from Source/Dsp/Bessel.cpp rename to Source/Processors/Dsp/Bessel.cpp diff --git a/Source/Dsp/Bessel.h b/Source/Processors/Dsp/Bessel.h similarity index 100% rename from Source/Dsp/Bessel.h rename to Source/Processors/Dsp/Bessel.h diff --git a/Source/Dsp/Biquad.cpp b/Source/Processors/Dsp/Biquad.cpp similarity index 100% rename from Source/Dsp/Biquad.cpp rename to Source/Processors/Dsp/Biquad.cpp diff --git a/Source/Dsp/Biquad.h b/Source/Processors/Dsp/Biquad.h similarity index 100% rename from Source/Dsp/Biquad.h rename to Source/Processors/Dsp/Biquad.h diff --git a/Source/Dsp/Butterworth.cpp b/Source/Processors/Dsp/Butterworth.cpp similarity index 100% rename from Source/Dsp/Butterworth.cpp rename to Source/Processors/Dsp/Butterworth.cpp diff --git a/Source/Dsp/Butterworth.h b/Source/Processors/Dsp/Butterworth.h similarity index 100% rename from Source/Dsp/Butterworth.h rename to Source/Processors/Dsp/Butterworth.h diff --git a/Source/Dsp/Cascade.cpp b/Source/Processors/Dsp/Cascade.cpp similarity index 100% rename from Source/Dsp/Cascade.cpp rename to Source/Processors/Dsp/Cascade.cpp diff --git a/Source/Dsp/Cascade.h b/Source/Processors/Dsp/Cascade.h similarity index 100% rename from Source/Dsp/Cascade.h rename to Source/Processors/Dsp/Cascade.h diff --git a/Source/Dsp/ChebyshevI.cpp b/Source/Processors/Dsp/ChebyshevI.cpp similarity index 100% rename from Source/Dsp/ChebyshevI.cpp rename to Source/Processors/Dsp/ChebyshevI.cpp diff --git a/Source/Dsp/ChebyshevI.h b/Source/Processors/Dsp/ChebyshevI.h similarity index 100% rename from Source/Dsp/ChebyshevI.h rename to Source/Processors/Dsp/ChebyshevI.h diff --git a/Source/Dsp/ChebyshevII.cpp b/Source/Processors/Dsp/ChebyshevII.cpp similarity index 100% rename from Source/Dsp/ChebyshevII.cpp rename to Source/Processors/Dsp/ChebyshevII.cpp diff --git a/Source/Dsp/ChebyshevII.h b/Source/Processors/Dsp/ChebyshevII.h similarity index 100% rename from Source/Dsp/ChebyshevII.h rename to Source/Processors/Dsp/ChebyshevII.h diff --git a/Source/Dsp/Common.h b/Source/Processors/Dsp/Common.h similarity index 100% rename from Source/Dsp/Common.h rename to Source/Processors/Dsp/Common.h diff --git a/Source/Dsp/Custom.cpp b/Source/Processors/Dsp/Custom.cpp similarity index 100% rename from Source/Dsp/Custom.cpp rename to Source/Processors/Dsp/Custom.cpp diff --git a/Source/Dsp/Custom.h b/Source/Processors/Dsp/Custom.h similarity index 100% rename from Source/Dsp/Custom.h rename to Source/Processors/Dsp/Custom.h diff --git a/Source/Dsp/Design.cpp b/Source/Processors/Dsp/Design.cpp similarity index 100% rename from Source/Dsp/Design.cpp rename to Source/Processors/Dsp/Design.cpp diff --git a/Source/Dsp/Design.h b/Source/Processors/Dsp/Design.h similarity index 100% rename from Source/Dsp/Design.h rename to Source/Processors/Dsp/Design.h diff --git a/Source/Dsp/Documentation.cpp b/Source/Processors/Dsp/Documentation.cpp similarity index 100% rename from Source/Dsp/Documentation.cpp rename to Source/Processors/Dsp/Documentation.cpp diff --git a/Source/Dsp/Dsp.h b/Source/Processors/Dsp/Dsp.h similarity index 100% rename from Source/Dsp/Dsp.h rename to Source/Processors/Dsp/Dsp.h diff --git a/Source/Dsp/Elliptic.cpp b/Source/Processors/Dsp/Elliptic.cpp similarity index 100% rename from Source/Dsp/Elliptic.cpp rename to Source/Processors/Dsp/Elliptic.cpp diff --git a/Source/Dsp/Elliptic.h b/Source/Processors/Dsp/Elliptic.h similarity index 100% rename from Source/Dsp/Elliptic.h rename to Source/Processors/Dsp/Elliptic.h diff --git a/Source/Dsp/Filter.cpp b/Source/Processors/Dsp/Filter.cpp similarity index 100% rename from Source/Dsp/Filter.cpp rename to Source/Processors/Dsp/Filter.cpp diff --git a/Source/Dsp/Filter.h b/Source/Processors/Dsp/Filter.h similarity index 100% rename from Source/Dsp/Filter.h rename to Source/Processors/Dsp/Filter.h diff --git a/Source/Dsp/Layout.h b/Source/Processors/Dsp/Layout.h similarity index 100% rename from Source/Dsp/Layout.h rename to Source/Processors/Dsp/Layout.h diff --git a/Source/Dsp/Legendre.cpp b/Source/Processors/Dsp/Legendre.cpp similarity index 100% rename from Source/Dsp/Legendre.cpp rename to Source/Processors/Dsp/Legendre.cpp diff --git a/Source/Dsp/Legendre.h b/Source/Processors/Dsp/Legendre.h similarity index 100% rename from Source/Dsp/Legendre.h rename to Source/Processors/Dsp/Legendre.h diff --git a/Source/Dsp/MathSupplement.h b/Source/Processors/Dsp/MathSupplement.h similarity index 100% rename from Source/Dsp/MathSupplement.h rename to Source/Processors/Dsp/MathSupplement.h diff --git a/Source/Dsp/Param.cpp b/Source/Processors/Dsp/Param.cpp similarity index 100% rename from Source/Dsp/Param.cpp rename to Source/Processors/Dsp/Param.cpp diff --git a/Source/Dsp/Params.h b/Source/Processors/Dsp/Params.h similarity index 100% rename from Source/Dsp/Params.h rename to Source/Processors/Dsp/Params.h diff --git a/Source/Dsp/PoleFilter.cpp b/Source/Processors/Dsp/PoleFilter.cpp similarity index 100% rename from Source/Dsp/PoleFilter.cpp rename to Source/Processors/Dsp/PoleFilter.cpp diff --git a/Source/Dsp/PoleFilter.h b/Source/Processors/Dsp/PoleFilter.h similarity index 100% rename from Source/Dsp/PoleFilter.h rename to Source/Processors/Dsp/PoleFilter.h diff --git a/Source/Dsp/RBJ.cpp b/Source/Processors/Dsp/RBJ.cpp similarity index 100% rename from Source/Dsp/RBJ.cpp rename to Source/Processors/Dsp/RBJ.cpp diff --git a/Source/Dsp/RBJ.h b/Source/Processors/Dsp/RBJ.h similarity index 100% rename from Source/Dsp/RBJ.h rename to Source/Processors/Dsp/RBJ.h diff --git a/Source/Dsp/RootFinder.cpp b/Source/Processors/Dsp/RootFinder.cpp similarity index 95% rename from Source/Dsp/RootFinder.cpp rename to Source/Processors/Dsp/RootFinder.cpp index c1d1e428049f494f50a05bc18bb94f5566feadde..7bed63862cda6c8ef4e32aaeee9e4255b281ecf0 100644 --- a/Source/Dsp/RootFinder.cpp +++ b/Source/Processors/Dsp/RootFinder.cpp @@ -33,6 +33,8 @@ THE SOFTWARE. *******************************************************************************/ +#include <algorithm> + #include "Common.h" #include "RootFinder.h" #include <stdexcept> diff --git a/Source/Dsp/RootFinder.h b/Source/Processors/Dsp/RootFinder.h similarity index 100% rename from Source/Dsp/RootFinder.h rename to Source/Processors/Dsp/RootFinder.h diff --git a/Source/Dsp/SmoothedFilter.h b/Source/Processors/Dsp/SmoothedFilter.h similarity index 96% rename from Source/Dsp/SmoothedFilter.h rename to Source/Processors/Dsp/SmoothedFilter.h index 0625820e0172fdc3e3f3fe5b1ea2ae3f4b5868fa..11d99c7a3cbcb01cc0b57ee60017faf917c0ed91 100644 --- a/Source/Dsp/SmoothedFilter.h +++ b/Source/Processors/Dsp/SmoothedFilter.h @@ -36,6 +36,8 @@ THE SOFTWARE. #ifndef DSPFILTERS_SMOOTHEDFILTER_H #define DSPFILTERS_SMOOTHEDFILTER_H +#include <algorithm> + #include "Common.h" #include "Filter.h" diff --git a/Source/Dsp/State.cpp b/Source/Processors/Dsp/State.cpp similarity index 100% rename from Source/Dsp/State.cpp rename to Source/Processors/Dsp/State.cpp diff --git a/Source/Dsp/State.h b/Source/Processors/Dsp/State.h similarity index 100% rename from Source/Dsp/State.h rename to Source/Processors/Dsp/State.h diff --git a/Source/Dsp/Types.h b/Source/Processors/Dsp/Types.h similarity index 100% rename from Source/Dsp/Types.h rename to Source/Processors/Dsp/Types.h diff --git a/Source/Dsp/Utilities.h b/Source/Processors/Dsp/Utilities.h similarity index 100% rename from Source/Dsp/Utilities.h rename to Source/Processors/Dsp/Utilities.h diff --git a/Source/Processors/Editors/ChannelSelector.cpp b/Source/Processors/Editors/ChannelSelector.cpp index d860838c3bcf1a4b58af5af56328ce82abed327d..7a82ff1b3235619b3df7ce49476520aa9f22c9a5 100755 --- a/Source/Processors/Editors/ChannelSelector.cpp +++ b/Source/Processors/Editors/ChannelSelector.cpp @@ -24,16 +24,15 @@ #include "ChannelSelector.h" #include <math.h> -#include "../RecordNode.h" -#include "../AudioNode.h" -#include "../ProcessorGraph.h" +#include "../RecordNode/RecordNode.h" +#include "../AudioNode/AudioNode.h" +#include "../ProcessorGraph/ProcessorGraph.h" #include "../../UI/GraphViewer.h" ChannelSelector::ChannelSelector(bool createButtons, Font& titleFont_) : eventsOnly(false), paramsToggled(true), paramsActive(true), - radioStatus(false), isNotSink(createButtons), moveRight(false), - moveLeft(false), offsetLR(0), offsetUD(0), desiredOffset(0), - titleFont(titleFont_), acquisitionIsActive(false) + recActive(true), radioStatus(false), isNotSink(createButtons), + moveRight(false), moveLeft(false), offsetLR(0), offsetUD(0), desiredOffset(0), titleFont(titleFont_), acquisitionIsActive(false) { // initialize buttons @@ -341,6 +340,31 @@ void ChannelSelector::activateButtons() } +void ChannelSelector::inactivateRecButtons() +{ + + recActive = false; + + for (int i = 0; i < recordButtons.size(); i++) + { + recordButtons[i]->setActive(false); + recordButtons[i]->repaint(); + } +} + +void ChannelSelector::activateRecButtons() +{ + + recActive = true; + + for (int i = 0; i < recordButtons.size(); i++) + { + recordButtons[i]->setActive(true); + recordButtons[i]->repaint(); + } + +} + void ChannelSelector::startAcquisition() { acquisitionIsActive = true; diff --git a/Source/Processors/Editors/ChannelSelector.h b/Source/Processors/Editors/ChannelSelector.h index e71ee2983a0db992fa4c024906832cab79f614d9..7db6ef2b4cd6da32aec68ecda17f6142b46e34fe 100755 --- a/Source/Processors/Editors/ChannelSelector.h +++ b/Source/Processors/Editors/ChannelSelector.h @@ -25,10 +25,10 @@ #define __CHANNELSELECTOR_H_68124E35__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" #include "../../AccessClass.h" -#include "../Channel.h" +#include "../Channel/Channel.h" #include <stdio.h> @@ -115,6 +115,12 @@ public: /** Activates all the ChannelSelectorButtons under the "param" tab.*/ void activateButtons(); + /** Inactivates all the ChannelSelectorButtons under the "rec" tab.*/ + void inactivateRecButtons(); + + /** Activates all the ChannelSelectorButtons under the "rec" tab.*/ + void activateRecButtons(); + /** Refreshes Parameter Colors on change*/ void refreshParameterColors() { @@ -160,6 +166,7 @@ private: bool paramsToggled; bool paramsActive; + bool recActive; bool radioStatus; bool isNotSink; diff --git a/Source/Processors/Editors/ElectrodeButtons.cpp b/Source/Processors/Editors/ElectrodeButtons.cpp index b7b9b6583705544da0f306e05545c19cfc8a586b..01fa726a165f8afae858bd863ef0db9b36d243a1 100644 --- a/Source/Processors/Editors/ElectrodeButtons.cpp +++ b/Source/Processors/Editors/ElectrodeButtons.cpp @@ -48,6 +48,11 @@ void ElectrodeButton::paintButton(Graphics& g, bool isMouseOver, bool isButtonDo g.setColour(Colours::grey); } + if (chan < 100) + g.setFont(10.f); + else + g.setFont(8.f); + if (chan >= 0) g.drawText(getButtonText(),0,0,getWidth(),getHeight(),Justification::centred,true); } @@ -78,4 +83,5 @@ void ElectrodeEditorButton::paintButton(Graphics& g, bool isMouseOver, bool isBu g.setFont(font); g.drawText(name,0,0,getWidth(),getHeight(),Justification::left,true); -} \ No newline at end of file +} + diff --git a/Source/Processors/Editors/ElectrodeButtons.h b/Source/Processors/Editors/ElectrodeButtons.h index 00b3f0427593fb5888564102a9f1321c2855d17b..31373746e1db3181c95607ad737f85ce2909014e 100644 --- a/Source/Processors/Editors/ElectrodeButtons.h +++ b/Source/Processors/Editors/ElectrodeButtons.h @@ -34,6 +34,7 @@ */ + class ElectrodeButton : public Button { public: diff --git a/Source/Processors/Editors/GenericEditor.cpp b/Source/Processors/Editors/GenericEditor.cpp index 0079d14a90341a65fc866b612e814e352a63ea57..47e10ca283f4aee231ad38ca2b22e41ef906c4cb 100755 --- a/Source/Processors/Editors/GenericEditor.cpp +++ b/Source/Processors/Editors/GenericEditor.cpp @@ -23,10 +23,10 @@ #include "GenericEditor.h" -#include "ParameterEditor.h" +#include "../Parameter/ParameterEditor.h" #include "ChannelSelector.h" -#include "../ProcessorGraph.h" -#include "../RecordNode.h" +#include "../ProcessorGraph/ProcessorGraph.h" +#include "../RecordNode/RecordNode.h" #include "../../UI/ProcessorList.h" #include "../../UI/EditorViewport.h" @@ -39,8 +39,8 @@ GenericEditor::GenericEditor(GenericProcessor* owner, bool useDefaultParameterEditors=true) : AudioProcessorEditor(owner), desiredWidth(150), isFading(false), accumulator(0.0), acquisitionIsActive(false), - drawerButton(0), channelSelector(0),drawerWidth(170), - isSelected(false), isEnabled(true), isCollapsed(false), tNum(-1), drawerOpen(false) + drawerButton(0), drawerWidth(170), + drawerOpen(false), channelSelector(0), isSelected(false), isEnabled(true), isCollapsed(false), tNum(-1) { constructorInitialize(owner, useDefaultParameterEditors); } @@ -280,6 +280,18 @@ void GenericEditor::setEnabledState(bool t) isEnabled = p->enabledState(); } +void GenericEditor::startRecording() +{ + if (channelSelector != 0) + channelSelector->inactivateRecButtons(); +} + +void GenericEditor::stopRecording() +{ + if (channelSelector != 0) + channelSelector->activateRecButtons(); +} + void GenericEditor::startAcquisition() { @@ -961,13 +973,13 @@ void TriangleButton::paintButton(Graphics& g, bool isMouseOver, bool isButtonDow x2 = getWidth()/2; x3 = getWidth()-inset; - if (direction == 1) + if (direction == 1) // up { y1 = getHeight()-inset; y2 = inset; } - else + else if (direction == 2) // down { y1 = inset; y2 = getHeight()-inset; diff --git a/Source/Processors/Editors/GenericEditor.h b/Source/Processors/Editors/GenericEditor.h index 71fdef743c10b3ef0cc2e88e1eb6365334fc836f..f335d7e29ff25ae5d6bdb68f5c7da59fc7809f21 100755 --- a/Source/Processors/Editors/GenericEditor.h +++ b/Source/Processors/Editors/GenericEditor.h @@ -25,10 +25,10 @@ #define __GENERICEDITOR_H_DD406E71__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "../GenericProcessor.h" +#include "../GenericProcessor/GenericProcessor.h" #include "../../AccessClass.h" -#include "../Channel.h" +#include "../Channel/Channel.h" #include <stdio.h> @@ -108,6 +108,12 @@ public: /** Used to enable or disable an editor's processor.*/ void setEnabledState(bool); + /** Called at the start of a recording **/ + void startRecording(); + + /** Called at the end of a recording **/ + void stopRecording(); + /** Called just prior to the start of acquisition, to allow the editor to prepare.*/ virtual void startAcquisition(); diff --git a/Source/Processors/EventDetector.cpp b/Source/Processors/EventDetector/EventDetector.cpp similarity index 94% rename from Source/Processors/EventDetector.cpp rename to Source/Processors/EventDetector/EventDetector.cpp index 32738b2c9af3a7407e17e28c6c166dc8c2ed991f..4afe33258a5e9c1c87e3c02bf39ea6cfa9532850 100755 --- a/Source/Processors/EventDetector.cpp +++ b/Source/Processors/EventDetector/EventDetector.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/EventDetector.h b/Source/Processors/EventDetector/EventDetector.h similarity index 88% rename from Source/Processors/EventDetector.h rename to Source/Processors/EventDetector/EventDetector.h index 79ba743821441d1bfa41a6dfc4cc37311b565306..d99efdc26e54da857e02bda0ccdc926bab96c8d2 100755 --- a/Source/Processors/EventDetector.h +++ b/Source/Processors/EventDetector/EventDetector.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,8 +24,8 @@ #ifndef __EVENTDETECTOR_H_91811542__ #define __EVENTDETECTOR_H_91811542__ -#include "../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../GenericProcessor/GenericProcessor.h" /** diff --git a/Source/Processors/EventNode.cpp b/Source/Processors/EventNode/EventNode.cpp similarity index 93% rename from Source/Processors/EventNode.cpp rename to Source/Processors/EventNode/EventNode.cpp index a9a4e05a35b04fd6bc637256e6ae563027f86f66..4c96d18b78fa3e046efce1d9f889e78815ee94e9 100755 --- a/Source/Processors/EventNode.cpp +++ b/Source/Processors/EventNode/EventNode.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,7 +24,7 @@ #include <stdio.h> #include "EventNode.h" -#include "Channel.h" +#include "../Channel/Channel.h" EventNode::EventNode() : GenericProcessor("Event Generator"), accumulator(0), Hz(1) diff --git a/Source/Processors/EventNode.h b/Source/Processors/EventNode/EventNode.h similarity index 86% rename from Source/Processors/EventNode.h rename to Source/Processors/EventNode/EventNode.h index 1f356c7f0df0ca8480ff3b5b2db37d8850da3cba..8f5e03f5fa582097972eb7afbe7960bcc9112162 100755 --- a/Source/Processors/EventNode.h +++ b/Source/Processors/EventNode/EventNode.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,9 +24,9 @@ #ifndef __EVENTNODE_H_9B67A789__ #define __EVENTNODE_H_9B67A789__ -#include "../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" -#include "Editors/EventNodeEditor.h" +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "EventNodeEditor.h" /** diff --git a/Source/Processors/Editors/EventNodeEditor.cpp b/Source/Processors/EventNode/EventNodeEditor.cpp similarity index 93% rename from Source/Processors/Editors/EventNodeEditor.cpp rename to Source/Processors/EventNode/EventNodeEditor.cpp index 21ef6bbb1b171fa0b10002ed09106eb151ba5bae..9a75f55ddc4b401d96a39a89de923e63c8bab134 100755 --- a/Source/Processors/Editors/EventNodeEditor.cpp +++ b/Source/Processors/EventNode/EventNodeEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,7 +22,7 @@ */ #include "EventNodeEditor.h" -#include "ChannelSelector.h" +#include "../Editors/ChannelSelector.h" #include <stdio.h> diff --git a/Source/Processors/Editors/EventNodeEditor.h b/Source/Processors/EventNode/EventNodeEditor.h similarity index 91% rename from Source/Processors/Editors/EventNodeEditor.h rename to Source/Processors/EventNode/EventNodeEditor.h index 4ee8c002b2aae2a58c5433a3b87226a3b0fbea8c..10440ff595e4161835cba0638fadfcbc25312ab6 100755 --- a/Source/Processors/Editors/EventNodeEditor.h +++ b/Source/Processors/EventNode/EventNodeEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,7 +26,7 @@ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" class FilterViewport; diff --git a/Source/Processors/ExampleProcessor.cpp b/Source/Processors/ExampleProcessor/ExampleProcessor.cpp similarity index 98% rename from Source/Processors/ExampleProcessor.cpp rename to Source/Processors/ExampleProcessor/ExampleProcessor.cpp index f90f90615939c2821c5c33e74d09aa8db0e4b9c6..2ebc64073b709fe6e2ef9a954e1bcd82139e285c 100644 --- a/Source/Processors/ExampleProcessor.cpp +++ b/Source/Processors/ExampleProcessor/ExampleProcessor.cpp @@ -3,7 +3,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/ExampleProcessor.h b/Source/Processors/ExampleProcessor/ExampleProcessor.h similarity index 98% rename from Source/Processors/ExampleProcessor.h rename to Source/Processors/ExampleProcessor/ExampleProcessor.h index cdc59987986a4c888e8f262941325bef7619bf36..7bf796cef1dd14f9eca571bacadad22ef1b11d1d 100644 --- a/Source/Processors/ExampleProcessor.h +++ b/Source/Processors/ExampleProcessor/ExampleProcessor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/FPGAOutput.cpp b/Source/Processors/FPGAOutput/FPGAOutput.cpp similarity index 94% rename from Source/Processors/FPGAOutput.cpp rename to Source/Processors/FPGAOutput/FPGAOutput.cpp index 8f09a95cfe0d593181284bbd68e1e2e0b909391c..6e313cea80263e8b1158d592cb47fa93a3582125 100755 --- a/Source/Processors/FPGAOutput.cpp +++ b/Source/Processors/FPGAOutput/FPGAOutput.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,7 +25,7 @@ #include <stdio.h> #include "FPGAOutput.h" -#include "SourceNode.h" +#include "../SourceNode/SourceNode.h" FPGAOutput::FPGAOutput() : GenericProcessor("FPGA Output"), TTLchannel(3), diff --git a/Source/Processors/FPGAOutput.h b/Source/Processors/FPGAOutput/FPGAOutput.h similarity index 86% rename from Source/Processors/FPGAOutput.h rename to Source/Processors/FPGAOutput/FPGAOutput.h index a973a6681346d2a4ef422714561b4134454f190d..8c1b3d5ae7f235f36acbf869b42da0866f8aabdd 100755 --- a/Source/Processors/FPGAOutput.h +++ b/Source/Processors/FPGAOutput/FPGAOutput.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,10 +24,10 @@ #ifndef __FPGAOUTPUT_H_33275017__ #define __FPGAOUTPUT_H_33275017__ -#include "../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" -#include "Editors/FPGAOutputEditor.h" -#include "DataThreads/FPGAThread.h" +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "FPGAOutputEditor.h" +#include "../DataThreads/FPGAThread.h" /** diff --git a/Source/Processors/Editors/FPGAOutputEditor.cpp b/Source/Processors/FPGAOutput/FPGAOutputEditor.cpp similarity index 94% rename from Source/Processors/Editors/FPGAOutputEditor.cpp rename to Source/Processors/FPGAOutput/FPGAOutputEditor.cpp index b3805b6e02f002ed20cc557fc71e062bbd7d55fc..d30630af179da390b7879705be25278ffd7396f7 100644 --- a/Source/Processors/Editors/FPGAOutputEditor.cpp +++ b/Source/Processors/FPGAOutput/FPGAOutputEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/Editors/FPGAOutputEditor.h b/Source/Processors/FPGAOutput/FPGAOutputEditor.h similarity index 89% rename from Source/Processors/Editors/FPGAOutputEditor.h rename to Source/Processors/FPGAOutput/FPGAOutputEditor.h index 15a7f39a11306af830da125604cab0b9a1e461f2..de9239b8fc5375dbf8599cfd93f8a9a896369cd6 100644 --- a/Source/Processors/Editors/FPGAOutputEditor.h +++ b/Source/Processors/FPGAOutput/FPGAOutputEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,8 +25,8 @@ #define __FPGAOUTPUTEDITOR_H_5A646CD3__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" -#include "ImageIcon.h" +#include "../Editors/GenericEditor.h" +#include "../Editors/ImageIcon.h" class ImageIcon; diff --git a/Source/Processors/FileReader.cpp b/Source/Processors/FileReader/FileReader.cpp similarity index 94% rename from Source/Processors/FileReader.cpp rename to Source/Processors/FileReader/FileReader.cpp index b4c239f9b70163c23684173e2bdc6d794ef88259..1e46bcfffee705c834cad1fb0784c303d60195b6 100644 --- a/Source/Processors/FileReader.cpp +++ b/Source/Processors/FileReader/FileReader.cpp @@ -22,7 +22,7 @@ */ #include "FileReader.h" -#include "Editors/FileReaderEditor.h" +#include "FileReaderEditor.h" #include <stdio.h> FileReader::FileReader() diff --git a/Source/Processors/FileReader.h b/Source/Processors/FileReader/FileReader.h similarity index 91% rename from Source/Processors/FileReader.h rename to Source/Processors/FileReader/FileReader.h index 6195960fd3815911ec91d146916d3fd6e6f060d4..d5f0ca28cd0ffdd53726b3dbb125e7c681776014 100644 --- a/Source/Processors/FileReader.h +++ b/Source/Processors/FileReader/FileReader.h @@ -26,9 +26,9 @@ #define __FILEREADER_H_B327D3D2__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" +#include "../GenericProcessor/GenericProcessor.h" #define BUFFER_SIZE 102400 diff --git a/Source/Processors/Editors/FileReaderEditor.cpp b/Source/Processors/FileReader/FileReaderEditor.cpp similarity index 95% rename from Source/Processors/Editors/FileReaderEditor.cpp rename to Source/Processors/FileReader/FileReaderEditor.cpp index 0a037164e06dd20d6f12a58b96cd5678f06157b8..c565aa3ec893b29b56f835fe923486ecc9bf4fb4 100644 --- a/Source/Processors/Editors/FileReaderEditor.cpp +++ b/Source/Processors/FileReader/FileReaderEditor.cpp @@ -23,7 +23,7 @@ #include "FileReaderEditor.h" -#include "../FileReader.h" +#include "FileReader.h" #include <stdio.h> diff --git a/Source/Processors/Editors/FileReaderEditor.h b/Source/Processors/FileReader/FileReaderEditor.h similarity index 94% rename from Source/Processors/Editors/FileReaderEditor.h rename to Source/Processors/FileReader/FileReaderEditor.h index 1e789d5ffa5ccc09473a39dc17dd30b5be086bc6..d359796c7a77afc7d4e96c2409e81aa5e8cceabe 100644 --- a/Source/Processors/Editors/FileReaderEditor.h +++ b/Source/Processors/FileReader/FileReaderEditor.h @@ -26,7 +26,7 @@ #define __FILEREADEREDITOR_H_D6EC8B48__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" class FileReader; diff --git a/Source/Processors/Editors/FilterEditor.cpp b/Source/Processors/FilterNode/FilterEditor.cpp similarity index 96% rename from Source/Processors/Editors/FilterEditor.cpp rename to Source/Processors/FilterNode/FilterEditor.cpp index 6609141f87ae08c6358f9de7cabc56c6b418d1b0..2ac69c04bc72aadcffdaa4036c61dd2f762d50d5 100755 --- a/Source/Processors/Editors/FilterEditor.cpp +++ b/Source/Processors/FilterNode/FilterEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,7 +22,7 @@ */ #include "FilterEditor.h" -#include "../FilterNode.h" +#include "FilterNode.h" #include <stdio.h> diff --git a/Source/Processors/Editors/FilterEditor.h b/Source/Processors/FilterNode/FilterEditor.h similarity index 92% rename from Source/Processors/Editors/FilterEditor.h rename to Source/Processors/FilterNode/FilterEditor.h index d691ad6f3793db445c3490278a5dbac7233e5eb4..717cfe874ef3847f9e4718b836eb6edeb4947550 100755 --- a/Source/Processors/Editors/FilterEditor.h +++ b/Source/Processors/FilterNode/FilterEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,7 +26,7 @@ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" class FilterViewport; diff --git a/Source/Processors/FilterNode.cpp b/Source/Processors/FilterNode/FilterNode.cpp similarity index 95% rename from Source/Processors/FilterNode.cpp rename to Source/Processors/FilterNode/FilterNode.cpp index 9c38eb22fa8080f921bf9af659897e57c9692455..04b92d3c607a4e16961349d47ff37e46424f0734 100755 --- a/Source/Processors/FilterNode.cpp +++ b/Source/Processors/FilterNode/FilterNode.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -23,7 +23,7 @@ #include <stdio.h> #include "FilterNode.h" -#include "Editors/FilterEditor.h" +#include "FilterEditor.h" FilterNode::FilterNode() : GenericProcessor("Bandpass Filter"), defaultLowCut(300.0f), defaultHighCut(6000.0f) @@ -281,7 +281,7 @@ void FilterNode::setApplyOnADC(bool state) for (int n = 0; n < channels.size(); n++) { - if (channels[n]->isADCchannel) + if (channels[n]->getType() == ADC_CHANNEL) { setCurrentChannel(n); diff --git a/Source/Processors/FilterNode.h b/Source/Processors/FilterNode/FilterNode.h similarity index 90% rename from Source/Processors/FilterNode.h rename to Source/Processors/FilterNode/FilterNode.h index b07818fc78d851d3fd402e04e17a71f1ed55b658..4a0b9886f5ccbd55caae574b493aa6ca59defff2 100755 --- a/Source/Processors/FilterNode.h +++ b/Source/Processors/FilterNode/FilterNode.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,9 +24,9 @@ #ifndef __FILTERNODE_H_CED428E__ #define __FILTERNODE_H_CED428E__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" #include "../Dsp/Dsp.h" -#include "GenericProcessor.h" +#include "../GenericProcessor/GenericProcessor.h" /** diff --git a/Source/Processors/GenericProcessor.cpp b/Source/Processors/GenericProcessor/GenericProcessor.cpp similarity index 94% rename from Source/Processors/GenericProcessor.cpp rename to Source/Processors/GenericProcessor/GenericProcessor.cpp index 09a7e2e27f70fa965f4a94de3f3929e4c98d863b..73f6e3fdf1778ffab402ca09b67b95f470fce6d3 100755 --- a/Source/Processors/GenericProcessor.cpp +++ b/Source/Processors/GenericProcessor/GenericProcessor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,12 +22,12 @@ */ #include "GenericProcessor.h" -#include "../UI/UIComponent.h" +#include "../../UI/UIComponent.h" GenericProcessor::GenericProcessor(const String& name_) : AccessClass(), sourceNode(0), destNode(0), isEnabled(true), wasConnected(false), nextAvailableChannel(0), saveOrder(-1), loadOrder(-1), currentChannel(-1), - parametersAsXml(nullptr), name(name_), paramsWereLoaded(false), editor(0), sendSampleCount(true) + editor(0), parametersAsXml(nullptr), sendSampleCount(true), name(name_), paramsWereLoaded(false) { settings.numInputs = settings.numOutputs = settings.sampleRate = 0; @@ -360,7 +360,7 @@ void GenericProcessor::update() ch->setName("ADC"+String(1+i-(numChan-numADC_Chan))); if (i >= numChan-numADC_Chan) - ch->isADCchannel = true; + ch->getType() == ADC_CHANNEL; ch->sampleRate = getDefaultSampleRate(); @@ -412,6 +412,23 @@ void GenericProcessor::setAllChannelsToRecord() } +void GenericProcessor::setRecording(bool state) +{ + GenericEditor* ed = getEditor(); + if (state) + { + if (ed != 0) + ed->startRecording(); + startRecording(); + } + else + { + if (ed != 0) + ed->stopRecording(); + stopRecording(); + } +} + void GenericProcessor::enableEditor() { diff --git a/Source/Processors/GenericProcessor.h b/Source/Processors/GenericProcessor/GenericProcessor.h similarity index 90% rename from Source/Processors/GenericProcessor.h rename to Source/Processors/GenericProcessor/GenericProcessor.h index c4e6a8aa64d65014d8a929599e96072a9ddac6cf..2719bdfd58fa91347623d5e9f7f6bdc971057d77 100755 --- a/Source/Processors/GenericProcessor.h +++ b/Source/Processors/GenericProcessor/GenericProcessor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,11 +24,14 @@ #ifndef __GENERICPROCESSOR_H_1F469DAF__ #define __GENERICPROCESSOR_H_1F469DAF__ +enum channelType {DATA_CHANNEL = 0, AUX_CHANNEL = 1, ADC_CHANNEL = 2, EVENT_CHANNEL = 3}; -#include "../../JuceLibraryCode/JuceHeader.h" -#include "Editors/GenericEditor.h" -#include "Parameter.h" -#include "../AccessClass.h" + +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../Editors/GenericEditor.h" +#include "../Parameter/Parameter.h" +#include "../../AccessClass.h" +#include "../Channel/Channel.h" #include <time.h> #include <stdio.h> @@ -57,6 +60,7 @@ class Channel; */ + class GenericProcessor : public AudioProcessor, public AccessClass @@ -128,12 +132,30 @@ public: { return GenericProcessor::unusedNameString; } - /** Returns the name of the output channel with a given index.*/ virtual const String getOutputChannelName(int channelIndex) const { return GenericProcessor::unusedNameString; } + + /** returns the names and types of all data, aux and adc channels */ + virtual void getChannelsInfo(StringArray &Names, Array<channelType> &type, Array<int> &stream, Array<int> &originalChannelNumber, Array<float> &gains) + { + + } + + virtual int modifyChannelName(channelType t, int stream, int ch, String newName, bool updateSignalChain) + { + return -1; + } + + virtual int modifyChannelGain(channelType t, int stream, int ch, float newGain, bool updateSignalChain) + { + return -1; + } + virtual void getEventChannelNames(StringArray &Names) + { + } /** Returns the name of the parameter with a given index.*/ const String getParameterName(int parameterIndex); @@ -277,7 +299,7 @@ public: return 2; } - virtual int getDefaultADCoutputs() + virtual int getDefaultADCoutputs() { return 0; } @@ -365,7 +387,7 @@ public: { return false; } - + /** Returns true if a processor is a utility (non-merger or splitter), false otherwise.*/ virtual bool isUtility() { @@ -399,10 +421,13 @@ public: return true; } - /** Called whenever recording has started. */ + /** Called when recording starts/stops **/ + void setRecording(bool state); + + /** Called from setRecording whenever recording has started. */ virtual void startRecording() { } - /** Called whenever recording has stopped. */ + /** Called from setRecording whenever recording has stopped. */ virtual void stopRecording() { } /** Informs a processor's editor that data acquisition is about to begin. */ @@ -477,7 +502,8 @@ public: CONTINUOUS = 6, NETWORK = 7, EYE_POSITION = 8, - SERIAL = 9 + SERIAL = 9, + MESSAGE = 10 }; enum eventChannelTypes @@ -544,7 +570,6 @@ public: /** Toggles record ON for all channels */ void setAllChannelsToRecord(); - /** Each processor has a unique integer ID that can be used to identify it.*/ int nodeId; @@ -585,10 +610,7 @@ public: virtual void loadCustomChannelParametersFromXml(XmlElement* channelElement, bool isEventChannel=false); /** handle messages from other processors */ - virtual String interProcessorCommunication(String command) - { - return String("OK"); - }; + virtual String interProcessorCommunication(String command) { return String("OK"); }; /** Holds loaded parameters */ XmlElement* parametersAsXml; @@ -596,8 +618,6 @@ public: /** When set to false, this disables the sending of sample counts through the event buffer. */ bool sendSampleCount; - bool paramsWereLoaded; - private: /** Automatically extracts the number of samples in the buffer, then @@ -621,6 +641,7 @@ private: /** For getInputChannelName() and getOutputChannelName() */ static const String unusedNameString; + bool paramsWereLoaded; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(GenericProcessor); diff --git a/Source/Processors/Visualization/LfpDisplayCanvas.cpp b/Source/Processors/LfpDisplayNode/LfpDisplayCanvas.cpp similarity index 89% rename from Source/Processors/Visualization/LfpDisplayCanvas.cpp rename to Source/Processors/LfpDisplayNode/LfpDisplayCanvas.cpp index e3b567e11986d6e077be92c50d37d89dc5a48e46..15ad29b6a6cc22bc4ad3af2b322fd7688b4109ad 100755 --- a/Source/Processors/Visualization/LfpDisplayCanvas.cpp +++ b/Source/Processors/LfpDisplayNode/LfpDisplayCanvas.cpp @@ -105,11 +105,12 @@ LfpDisplayCanvas::LfpDisplayCanvas(LfpDisplayNode* processor_) : spreads.add("30"); spreads.add("40"); spreads.add("50"); - spreads.add("60"); - spreads.add("70"); - spreads.add("80"); - spreads.add("90"); - spreads.add("100"); + spreads.add("60"); + spreads.add("70"); + spreads.add("80"); + spreads.add("90"); + spreads.add("100"); + spreads.add("100"); colorGroupings.add("1"); colorGroupings.add("2"); @@ -365,22 +366,22 @@ void LfpDisplayCanvas::setParameter(int param, float val) void LfpDisplayCanvas:: setRangeSelection(float range) { - //rangeSelection->setItemEnabled(0,true); //keep custom range unavailable for direct selection - rangeSelection->setSelectedId(1,true); // but show it for display - rangeSelection->changeItemText(1,String(int(range))); // and set to correct number + //rangeSelection->setItemEnabled(0,true); //keep custom range unavailable for direct selection + rangeSelection->setSelectedItemIndex(0, sendNotificationAsync); // but show it for display + rangeSelection->changeItemText(1, String(int(range))); // and set to correct number - repaint(); - refresh(); + repaint(); + refresh(); } void LfpDisplayCanvas:: setSpreadSelection(int spread) { - spreadSelection->setSelectedId(1,true); - spreadSelection->changeItemText(1,String(int(spread))); // and set to correct number + spreadSelection->setSelectedItemIndex(0, sendNotificationAsync); + spreadSelection->changeItemText(1, String(int(spread))); // and set to correct number - repaint(); - refresh(); + repaint(); + refresh(); } @@ -644,7 +645,7 @@ bool LfpDisplayCanvas::keyPressed(const KeyPress& key) { if (key.getKeyCode() == key.spaceKey) { - pauseButton->setToggleState(!pauseButton->getToggleState(),true); + pauseButton->setToggleState(!pauseButton->getToggleState(), sendNotification); return true; } @@ -823,7 +824,7 @@ void LfpTimescale::setTimebase(float t) // --------------------------------------------------------------- LfpDisplay::LfpDisplay(LfpDisplayCanvas* c, Viewport* v) : - canvas(c), viewport(v), range(1000.0f), singleChan(-1) + singleChan(-1), canvas(c), viewport(v), range(1000.0f) { totalHeight = 0; @@ -1170,13 +1171,14 @@ void LfpDisplay::mouseWheelMove(const MouseEvent& e, const MouseWheelDetails& void LfpDisplay::toggleSingleChannel(int chan) { - std::cout << "Toggle channel " << chan << std::endl; + //std::cout << "Toggle channel " << chan << std::endl; + if (chan != singleChan) { singleChan = chan; int newHeight = viewport->getHeight(); - setChannelHeight(newHeight,false); - setSize(getWidth(),numChans*getChannelHeight()); + setChannelHeight(newHeight, false); + setSize(getWidth(), numChans*getChannelHeight()); viewport->setScrollBarsShown(false,false); //viewport->setViewPosition(Point<int>(0,chan*newHeight)); for (int n = 0; n < numChans; n++) @@ -1204,22 +1206,22 @@ void LfpDisplay::mouseDown(const MouseEvent& event) MouseEvent canvasevent = event.getEventRelativeTo(viewport); int y = canvasevent.getMouseDownY() + viewport->getViewPositionY(); // need to account for scrolling - int dist=0; - int mindist=10000; - int closest=5; + int dist = 0; + int mindist = 10000; + int closest = 5; for (int n = 0; n < numChans; n++) // select closest instead of relying ot eventComponent { channels[n]->deselect(); - int cpos=(channels[n]->getY() + (channels[n]->getHeight()/2)); - dist=int(abs(y - cpos)); + int cpos = (channels[n]->getY() + (channels[n]->getHeight()/2)); + dist = int(abs(y - cpos)); //std::cout << "Mouse down at " << y << " pos is "<< cpos << "n:" << n << " dist " << dist << std::endl; if (dist<mindist) { - mindist=dist-1; - closest=n; + mindist = dist-1; + closest = n; } } @@ -1227,7 +1229,9 @@ void LfpDisplay::mouseDown(const MouseEvent& event) //lcd->select(); channels[closest]->select(); - if (event.getNumberOfClicks() == 2) toggleSingleChannel(closest); + + if (event.getNumberOfClicks() == 2) + toggleSingleChannel(closest); canvas->fullredraw = true;//issue full redraw @@ -1307,10 +1311,10 @@ LfpChannelDisplay::~LfpChannelDisplay() void LfpChannelDisplay::setEnabledState(bool state) { - if (state) - std::cout << "Setting channel " << name << " to true." << std::endl; - else - std::cout << "Setting channel " << name << " to false." << std::endl; + //if (state) + //std::cout << "Setting channel " << name << " to true." << std::endl; + //else + //std::cout << "Setting channel " << name << " to false." << std::endl; isEnabled = state; @@ -1325,8 +1329,6 @@ void LfpChannelDisplay::paint(Graphics& g) g.drawLine(canvas->screenBufferIndex+1, 0, canvas->screenBufferIndex+1, getHeight()); - - //g.setColour(Colours::red); // draw oldest drawn sample position //g.drawLine(canvas->lastScreenBufferIndex, 0, canvas->lastScreenBufferIndex, getHeight()-channelOverlap); @@ -1343,9 +1345,33 @@ void LfpChannelDisplay::paint(Graphics& g) g.drawLine(0,center+channelHeight/2,getWidth(),center+channelHeight/2); g.drawLine(0,center-channelHeight/2,getWidth(),center-channelHeight/2); - g.setColour(Colour(25,25,25)); - g.drawLine(0,center+channelHeight/4,10,center+channelHeight/4); - g.drawLine(0,center-channelHeight/4,10,center-channelHeight/4); + if (!display->getSingleChannelState()) + { + g.setColour(Colour(25,25,25)); + g.drawLine(0,center+channelHeight/4,10,center+channelHeight/4); + g.drawLine(0,center-channelHeight/4,10,center-channelHeight/4); + } else { + g.setColour(Colour(70,70,70)); + g.drawLine(0,center+channelHeight/4,getWidth(),center+channelHeight/4); + g.drawLine(0,center-channelHeight/4,getWidth(),center-channelHeight/4); + } + + + } + + if (display->getSingleChannelState()) + { + + int leftEdge = 150; + + g.setColour(Colours::lightgrey); + g.setFont(channelFont); + g.setFont(20); + g.drawText(String(0) + " uV", 20, center, leftEdge, 25, Justification::left, false); + g.drawText(String(range/2) + " uV", 20, center-channelHeight/2, leftEdge, 25, Justification::left, false); + g.drawText(String(-range/2) + " uV", 20, center+channelHeight/2-25, leftEdge, 25, Justification::left, false); + g.drawText(String(range/4) + " uV", 20, center-channelHeight/4, leftEdge, 25, Justification::left, false); + g.drawText(String(-range/4) + " uV", 20, center+channelHeight/4, leftEdge, 25, Justification::left, false); } @@ -1561,7 +1587,7 @@ LfpChannelDisplayInfo::LfpChannelDisplayInfo(LfpDisplayCanvas* canvas_, LfpDispl chan = ch; - enableButton = new UtilityButton("CH"+String(ch+1), Font("Small Text", 13, Font::plain)); + enableButton = new UtilityButton(String(ch+1), Font("Small Text", 13, Font::plain)); enableButton->setRadius(5.0f); enableButton->setEnabledState(true); @@ -1590,7 +1616,7 @@ void LfpChannelDisplayInfo::buttonClicked(Button* button) // b->setLabel("OFF"); // } - std::cout << "Turn channel " << chan << " to " << button->getToggleState() << std::endl; + //std::cout << "Turn channel " << chan << " to " << button->getToggleState() << std::endl; } @@ -1606,7 +1632,10 @@ void LfpChannelDisplayInfo::paint(Graphics& g) g.setColour(lineColour); - g.fillRoundedRectangle(5,center-8,41,22,8.0f); + //if (chan > 98) + // g.fillRoundedRectangle(5,center-8,51,22,8.0f); + //else + g.fillRoundedRectangle(5,center-8,41,22,8.0f); // g.setFont(channelFont); // g.setFont(channelHeightFloat*0.3); @@ -1620,7 +1649,10 @@ void LfpChannelDisplayInfo::resized() int center = getHeight()/2; - enableButton->setBounds(8,center-5,35,16); + //if (chan > 98) + // enableButton->setBounds(8,center-5,45,16); + //else + enableButton->setBounds(8,center-5,35,16); } diff --git a/Source/Processors/Visualization/LfpDisplayCanvas.h b/Source/Processors/LfpDisplayNode/LfpDisplayCanvas.h similarity index 95% rename from Source/Processors/Visualization/LfpDisplayCanvas.h rename to Source/Processors/LfpDisplayNode/LfpDisplayCanvas.h index c22746500f63ebcb5089e79438f128a7531dd0fb..7f2064bb4adfc032041cd1b2dc85c5176aba495f 100755 --- a/Source/Processors/Visualization/LfpDisplayCanvas.h +++ b/Source/Processors/LfpDisplayNode/LfpDisplayCanvas.h @@ -24,8 +24,8 @@ #define __LFPDISPLAYCANVAS_H_B711873A__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "../LfpDisplayNode.h" -#include "Visualizer.h" +#include "LfpDisplayNode.h" +#include "../Visualization/Visualizer.h" class LfpDisplayNode; diff --git a/Source/Processors/Editors/LfpDisplayEditor.cpp b/Source/Processors/LfpDisplayNode/LfpDisplayEditor.cpp similarity index 100% rename from Source/Processors/Editors/LfpDisplayEditor.cpp rename to Source/Processors/LfpDisplayNode/LfpDisplayEditor.cpp diff --git a/Source/Processors/Editors/LfpDisplayEditor.h b/Source/Processors/LfpDisplayNode/LfpDisplayEditor.h similarity index 88% rename from Source/Processors/Editors/LfpDisplayEditor.h rename to Source/Processors/LfpDisplayNode/LfpDisplayEditor.h index d93f94088db2ffff6af9e760ed2dd30639a36a20..c6fcf331ac2df106b37140c6f9bb2ca34269f3f8 100755 --- a/Source/Processors/Editors/LfpDisplayEditor.h +++ b/Source/Processors/LfpDisplayNode/LfpDisplayEditor.h @@ -25,13 +25,13 @@ #define __LFPDISPLAYEDITOR_H_3438800D__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" #include "../../UI/UIComponent.h" #include "../../UI/DataViewport.h" #include "../Visualization/DataWindow.h" -#include "../LfpDisplayNode.h" -#include "../Visualization/LfpDisplayCanvas.h" -#include "VisualizerEditor.h" +#include "LfpDisplayNode.h" +#include "LfpDisplayCanvas.h" +#include "../Editors/VisualizerEditor.h" class Visualizer; diff --git a/Source/Processors/LfpDisplayNode.cpp b/Source/Processors/LfpDisplayNode/LfpDisplayNode.cpp similarity index 96% rename from Source/Processors/LfpDisplayNode.cpp rename to Source/Processors/LfpDisplayNode/LfpDisplayNode.cpp index 577e140c05a190a1ebf6b3c965c05e716ff08f7e..bc6b8dd153d91e5791bc86c0cb24c7e274d84533 100755 --- a/Source/Processors/LfpDisplayNode.cpp +++ b/Source/Processors/LfpDisplayNode/LfpDisplayNode.cpp @@ -22,7 +22,7 @@ */ #include "LfpDisplayNode.h" -#include "Visualization/LfpDisplayCanvas.h" +#include "LfpDisplayCanvas.h" #include <stdio.h> LfpDisplayNode::LfpDisplayNode() diff --git a/Source/Processors/LfpDisplayNode.h b/Source/Processors/LfpDisplayNode/LfpDisplayNode.h similarity index 89% rename from Source/Processors/LfpDisplayNode.h rename to Source/Processors/LfpDisplayNode/LfpDisplayNode.h index 0f9d8027af190297ef2e56129646fd82aecb5a76..6a061d44d482980328178747ec256ef5fe79480c 100755 --- a/Source/Processors/LfpDisplayNode.h +++ b/Source/Processors/LfpDisplayNode/LfpDisplayNode.h @@ -24,10 +24,10 @@ #ifndef __LFPDISPLAYNODE_H_D969A379__ #define __LFPDISPLAYNODE_H_D969A379__ -#include "../../JuceLibraryCode/JuceHeader.h" -#include "Editors/LfpDisplayEditor.h" -#include "Editors/VisualizerEditor.h" -#include "GenericProcessor.h" +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "LfpDisplayEditor.h" +#include "../Editors/VisualizerEditor.h" +#include "../GenericProcessor/GenericProcessor.h" class DataViewport; diff --git a/Source/Processors/Visualization/LfpTriggeredAverageCanvas.cpp b/Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageCanvas.cpp similarity index 95% rename from Source/Processors/Visualization/LfpTriggeredAverageCanvas.cpp rename to Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageCanvas.cpp index f27016100e5e0a1f1527a8a4dda0ad968ef3aad9..413a7b7412c6a00721be2304366b3e4f4529b63b 100755 --- a/Source/Processors/Visualization/LfpTriggeredAverageCanvas.cpp +++ b/Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageCanvas.cpp @@ -86,20 +86,20 @@ LfpTriggeredAverageCanvas::LfpTriggeredAverageCanvas(LfpTriggeredAverageNode* pr rangeSelection = new ComboBox("Voltage range"); rangeSelection->addItemList(voltageRanges, 1); - rangeSelection->setSelectedId(4,false); + rangeSelection->setSelectedId(4, dontSendNotification); rangeSelection->addListener(this); addAndMakeVisible(rangeSelection); timebaseSelection = new ComboBox("Timebase"); timebaseSelection->addItemList(timebases, 1); - timebaseSelection->setSelectedId(3,false); + timebaseSelection->setSelectedId(3, dontSendNotification); timebaseSelection->addListener(this); addAndMakeVisible(timebaseSelection); spreadSelection = new ComboBox("Spread"); spreadSelection->addItemList(spreads, 1); - spreadSelection->setSelectedId(5,false); + spreadSelection->setSelectedId(5, dontSendNotification); spreadSelection->addListener(this); addAndMakeVisible(spreadSelection); @@ -332,13 +332,13 @@ void LfpTriggeredAverageCanvas::updateScreenBuffer() screenBuffer->addFrom(channel, // destChannel screenBufferIndex, // destStartSample - displayBuffer->getSampleData(channel, displayBufferIndex), // source + displayBuffer->getWritePointer(channel, displayBufferIndex), // source 1, // numSamples invAlpha*gain); // gain screenBuffer->addFrom(channel, // destChannel screenBufferIndex, // destStartSample - displayBuffer->getSampleData(channel, nextPos), // source + displayBuffer->getWritePointer(channel, nextPos), // source 1, // numSamples alpha*gain); // gain @@ -380,7 +380,7 @@ int LfpTriggeredAverageCanvas::getNumChannels() float LfpTriggeredAverageCanvas::getYCoord(int chan, int samp) { - return *screenBuffer->getSampleData(chan, samp); + return *screenBuffer->getReadPointer(chan, samp); } void LfpTriggeredAverageCanvas::paint(Graphics& g) diff --git a/Source/Processors/Visualization/LfpTriggeredAverageCanvas.h b/Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageCanvas.h similarity index 94% rename from Source/Processors/Visualization/LfpTriggeredAverageCanvas.h rename to Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageCanvas.h index d4bfaee4b79da39fa2e51c28a29bd8f01a8d5dc6..94ba2623c88c4c71ebf70585f6c3b8020fe1edc2 100755 --- a/Source/Processors/Visualization/LfpTriggeredAverageCanvas.h +++ b/Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageCanvas.h @@ -24,8 +24,8 @@ #define __LfpTriggeredAverageCAVCAS_H_B711873A__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "../LfpTriggeredAverageNode.h" -#include "Visualizer.h" +#include "LfpTriggeredAverageNode.h" +#include "../Visualization/Visualizer.h" class LfpTriggeredAverageNode; diff --git a/Source/Processors/Editors/LfpTriggeredAverageEditor.cpp b/Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.cpp similarity index 100% rename from Source/Processors/Editors/LfpTriggeredAverageEditor.cpp rename to Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.cpp diff --git a/Source/Processors/Editors/LfpTriggeredAverageEditor.h b/Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.h similarity index 88% rename from Source/Processors/Editors/LfpTriggeredAverageEditor.h rename to Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.h index 34e0e043425ebacad39ff6e3f3c7d6c00466190a..8c2de426ecbb27bd84d6a129eea8ea0f185f29c3 100644 --- a/Source/Processors/Editors/LfpTriggeredAverageEditor.h +++ b/Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.h @@ -25,13 +25,13 @@ #define __LfpTriggeredAverageEDITOR_H_3438800D__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" #include "../../UI/UIComponent.h" #include "../../UI/DataViewport.h" #include "../Visualization/DataWindow.h" -#include "../LfpTriggeredAverageNode.h" -#include "../Visualization/LfpTriggeredAverageCanvas.h" -#include "VisualizerEditor.h" +#include "LfpTriggeredAverageNode.h" +#include "LfpTriggeredAverageCanvas.h" +#include "../Editors/VisualizerEditor.h" class Visualizer; diff --git a/Source/Processors/LfpTriggeredAverageNode.cpp b/Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageNode.cpp similarity index 96% rename from Source/Processors/LfpTriggeredAverageNode.cpp rename to Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageNode.cpp index 8de7d71c33022a5196e678d56c59f88c019350b2..8e9773c270c8a59f93b835915fba22f70115ffd0 100755 --- a/Source/Processors/LfpTriggeredAverageNode.cpp +++ b/Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageNode.cpp @@ -22,7 +22,7 @@ */ #include "LfpTriggeredAverageNode.h" -#include "Visualization/LfpTriggeredAverageCanvas.h" +#include "LfpTriggeredAverageCanvas.h" #include <stdio.h> LfpTriggeredAverageNode::LfpTriggeredAverageNode() diff --git a/Source/Processors/LfpTriggeredAverageNode.h b/Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageNode.h similarity index 89% rename from Source/Processors/LfpTriggeredAverageNode.h rename to Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageNode.h index b5ee62b66fa41841a487487fd5114aadef36bba9..413a1732323a19eb5933ad34c0cc1a17e83fa6cb 100755 --- a/Source/Processors/LfpTriggeredAverageNode.h +++ b/Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageNode.h @@ -24,10 +24,10 @@ #ifndef __LFPTRIGAVGNODE_H_D969A379__ #define __LFPTRIGAVGNODE_H_D969A379__ -#include "../../JuceLibraryCode/JuceHeader.h" -#include "Editors/LfpTriggeredAverageEditor.h" -#include "Editors/VisualizerEditor.h" -#include "GenericProcessor.h" +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "LfpTriggeredAverageEditor.h" +#include "../Editors/VisualizerEditor.h" +#include "../GenericProcessor/GenericProcessor.h" class DataViewport; diff --git a/Source/Processors/Utilities/Merger.cpp b/Source/Processors/Merger/Merger.cpp similarity index 94% rename from Source/Processors/Utilities/Merger.cpp rename to Source/Processors/Merger/Merger.cpp index fa88ecc55ad88a503fdbcfabd699109389193783..40ec6bc5439f0515bde717b2c5fdfcf073c02002 100755 --- a/Source/Processors/Utilities/Merger.cpp +++ b/Source/Processors/Merger/Merger.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,11 +22,11 @@ */ #include "Merger.h" -#include "../Editors/MergerEditor.h" +#include "MergerEditor.h" #include "../../UI/EditorViewport.h" -#include "../Channel.h" +#include "../Channel/Channel.h" Merger::Merger() : GenericProcessor("Merger"), diff --git a/Source/Processors/Utilities/Merger.h b/Source/Processors/Merger/Merger.h similarity index 92% rename from Source/Processors/Utilities/Merger.h rename to Source/Processors/Merger/Merger.h index 820684c1eed01f3e7aed0d4101e91871b7d3d25e..90699a154da90ffb9e21f928939ba030a346e7a8 100755 --- a/Source/Processors/Utilities/Merger.h +++ b/Source/Processors/Merger/Merger.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,7 +25,7 @@ #define __MERGER_H_ED548E77__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "../GenericProcessor.h" +#include "../GenericProcessor/GenericProcessor.h" #include <stdio.h> diff --git a/Source/Processors/Editors/MergerEditor.cpp b/Source/Processors/Merger/MergerEditor.cpp similarity index 95% rename from Source/Processors/Editors/MergerEditor.cpp rename to Source/Processors/Merger/MergerEditor.cpp index 72d37a07fd8c3ca1ea24f4b5a52c158d647208c5..28cd7835464050faf7994f6560bdc3d669406ab0 100755 --- a/Source/Processors/Editors/MergerEditor.cpp +++ b/Source/Processors/Merger/MergerEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,8 +22,8 @@ */ #include "MergerEditor.h" -#include "../Utilities/Merger.h" -#include "../ProcessorGraph.h" +#include "Merger.h" +#include "../ProcessorGraph/ProcessorGraph.h" #include "../../UI/EditorViewport.h" // PipelineSelectorButton::PipelineSelectorButton() diff --git a/Source/Processors/Editors/MergerEditor.h b/Source/Processors/Merger/MergerEditor.h similarity index 92% rename from Source/Processors/Editors/MergerEditor.h rename to Source/Processors/Merger/MergerEditor.h index a9b6b7b3d95192974bac4bf43109be23b2b0523c..b312197abe8032d29b844591b33b0b224f980cd0 100755 --- a/Source/Processors/Editors/MergerEditor.h +++ b/Source/Processors/Merger/MergerEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,7 +26,7 @@ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" /** diff --git a/Source/Processors/MessageCenter/MessageCenter.cpp b/Source/Processors/MessageCenter/MessageCenter.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e07812744df37e0146153048db9617614c5649a8 --- /dev/null +++ b/Source/Processors/MessageCenter/MessageCenter.cpp @@ -0,0 +1,91 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Open Ephys + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include "MessageCenter.h" +#include "MessageCenterEditor.h" + +//--------------------------------------------------------------------- + +MessageCenter::MessageCenter() : + GenericProcessor("Message Center"), newEventAvailable(false), isRecording(false) +{ + + setPlayConfigDetails(0, // number of inputs + 0, // number of outputs + 44100.0, // sampleRate + 128); // blockSize + +} + +MessageCenter::~MessageCenter() +{ + +} + +AudioProcessorEditor* MessageCenter::createEditor() +{ + + messageCenterEditor = new MessageCenterEditor(this); + + return messageCenterEditor; + +} + +void MessageCenter::setParameter(int parameterIndex, float newValue) +{ + if (isRecording) + { + newEventAvailable = true; + messageCenterEditor->messageReceived(true); + } + else + { + messageCenterEditor->messageReceived(false); + } + +} + +void MessageCenter::process(AudioSampleBuffer& buffer, MidiBuffer& eventBuffer, int& nSamples) +{ + + if (newEventAvailable) + { + int numBytes = 0; + + String eventString = messageCenterEditor->getLabelString(); + + CharPointer_UTF8 data = eventString.toUTF8(); + + addEvent(eventBuffer, + MESSAGE, + 0, + 0, + 0, + data.length()+1, //It doesn't hurt to send the end-string null and can help avoid issues + (uint8*) data.getAddress()); + + newEventAvailable = false; + } + + +} diff --git a/Source/UI/MessageCenter.h b/Source/Processors/MessageCenter/MessageCenter.h old mode 100755 new mode 100644 similarity index 54% rename from Source/UI/MessageCenter.h rename to Source/Processors/MessageCenter/MessageCenter.h index e47d4d2d2cb5a16350ff22b068a01d4e01f2fb95..ec4218ce6ef12ddf33c8520d076197b1c06b47ac --- a/Source/UI/MessageCenter.h +++ b/Source/Processors/MessageCenter/MessageCenter.h @@ -2,7 +2,7 @@ ----------------------------------------------------------------- This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,7 +25,12 @@ #define __MESSAGECENTER_H_2695FC38__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" +#include <stdio.h> + +#include "../GenericProcessor/GenericProcessor.h" + +class MessageCenterEditor; /** @@ -37,30 +42,35 @@ */ -class MessageCenter : public Component, - public ActionListener +class MessageCenter : public GenericProcessor { public: MessageCenter(); ~MessageCenter(); - /** Draws the message center.*/ - void paint(Graphics& g); + /** Handle incoming data and decide which files and events to write to disk. */ + void process(AudioSampleBuffer& buffer, MidiBuffer& eventBuffer, int& nSamples); -private: + /** Called when new events arrive. */ + void setParameter(int parameterIndex, float newValue); + + /** Creates the MessageCenterEditor (located in the UI component). */ + AudioProcessorEditor* createEditor(); - /** A JUCE label used to display message text. */ - ScopedPointer<Label> messageDisplayArea; + /** A pointer to the Message Center editor. */ + ScopedPointer<MessageCenterEditor> messageCenterEditor; + + void startRecording() {isRecording = true;} + void stopRecording() {isRecording = false;} + +private: - /** Called when the boundaries of the MessageCenter are changed. */ - void resized(); + bool newEventAvailable; - /** Called when a new message is received. */ - void actionListenerCallback(const String& message); + bool isRecording; - /** The background color (changes to yellow when a new message arrives). */ - Colour messageBackground; + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MessageCenter); }; diff --git a/Source/Processors/MessageCenter/MessageCenterEditor.cpp b/Source/Processors/MessageCenter/MessageCenterEditor.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ab457e9906e0b7919189bf3ff7498e3f3bc6ca0d --- /dev/null +++ b/Source/Processors/MessageCenter/MessageCenterEditor.cpp @@ -0,0 +1,177 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Open Ephys + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include "MessageCenterEditor.h" + +MessageCenterEditor::MessageCenterEditor(MessageCenter* owner) : + AudioProcessorEditor(owner), + messageCenter(owner), + incomingBackground(100, 100, 100), + outgoingBackground(100, 100, 100) +{ + + incomingMessageDisplayArea = new Label("Message Display Area","No new messages."); + outgoingMessageDisplayArea = new Label("Message Display Area","Type a new message here."); + outgoingMessageDisplayArea->setEditable(true); + + addAndMakeVisible(incomingMessageDisplayArea); + addAndMakeVisible(outgoingMessageDisplayArea); + + sendMessageButton = new UtilityButton("Save", Font("Small Text", 0, Font::plain)); + sendMessageButton->addListener(this); + sendMessageButton->setTooltip("Send a message to be saved by the record node"); + addAndMakeVisible(sendMessageButton); + +} + +MessageCenterEditor::~MessageCenterEditor() +{ + +} + + +void MessageCenterEditor::buttonClicked(Button* button) +{ + messageCenter->setParameter(1,1); + +} + +void MessageCenterEditor::labelTextChanged(Label* label) +{ + +} + +void MessageCenterEditor::timerCallback() +{ + + bool shouldRepaint = false; + + float incomingAlpha = incomingBackground.getFloatAlpha(); + + if (incomingAlpha > 0) + { + incomingAlpha -= 0.05; + + if (incomingAlpha < 0) + incomingAlpha = 0; + + incomingBackground = incomingBackground.withAlpha(incomingAlpha); + + shouldRepaint = true; + } + + if (shouldRepaint) + repaint(); + else + stopTimer(); + +} + +bool MessageCenterEditor::keyPressed(const KeyPress& key) +{ + return false; +} + +String MessageCenterEditor::getLabelString() +{ + return outgoingMessageDisplayArea->getText(); +} + + +void MessageCenterEditor::enable() +{ + //sendMessageButton->setVisible(true); +} + +void MessageCenterEditor::disable() +{ + //sendMessageButton->setVisible(false); +} + +void MessageCenterEditor::messageReceived(bool state) +{ + if (!state) + { + incomingMessageDisplayArea->setText("Cannot save messages when recording is not active.", sendNotification); + incomingBackground = Colours::red; + } else { + incomingMessageDisplayArea->setText("Message sent.", sendNotification); + incomingBackground = Colours::green; + } + + startTimer(75); +} + +void MessageCenterEditor::paint(Graphics& g) +{ + + g.setColour(Colour(58,58,58)); + + g.fillRect(0, 0, getWidth(), getHeight()); + + g.setColour(Colour(100,100,100)); + + g.fillRect(5, 5, getWidth()/2-5, getHeight()-10); + g.fillRect(getWidth()/2+5, 5, getWidth()/2-60, getHeight()-10); + + g.setColour(incomingBackground); + + g.fillRect(5, 5, getWidth()/2-5, getHeight()-10); + + g.setColour(outgoingBackground); + + g.fillRect(getWidth()/2+5, 5, getWidth()/2-60, getHeight()-10); + +} + +void MessageCenterEditor::resized() +{ + if (incomingMessageDisplayArea != 0) + incomingMessageDisplayArea->setBounds(5,0,getWidth()/2-5,getHeight()); + + if (outgoingMessageDisplayArea != 0) + outgoingMessageDisplayArea->setBounds(getWidth()/2+5,0,getWidth()/2-60, getHeight()); + + if (sendMessageButton != 0) + sendMessageButton->setBounds(getWidth()-50, 5, 45, getHeight()-10); +} + +void MessageCenterEditor::actionListenerCallback(const String& message) +{ + + incomingMessageDisplayArea->setText(message, sendNotification); + + incomingBackground = Colours::orange; + startTimer(75); + +} + +void MessageCenterEditor::saveStateToXml(XmlElement* xml) +{ + +} + +void MessageCenterEditor::loadStateFromXml(XmlElement* xml) +{ + +} diff --git a/Source/Processors/MessageCenter/MessageCenterEditor.h b/Source/Processors/MessageCenter/MessageCenterEditor.h new file mode 100644 index 0000000000000000000000000000000000000000..81df70a72fedf4335398efbfb9df21ff35b75ace --- /dev/null +++ b/Source/Processors/MessageCenter/MessageCenterEditor.h @@ -0,0 +1,97 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Open Ephys + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#ifndef MESSAGECENTEREDITOR_H_INCLUDED +#define MESSAGECENTEREDITOR_H_INCLUDED + +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "MessageCenter.h" +#include <stdio.h> + +/** + Holds the interface for adding events to the message queue + + @see MessageCenter + +*/ + +class MessageCenterEditor : public AudioProcessorEditor, + public Button::Listener, + public Label::Listener, + public AccessClass, + public Timer, + public ActionListener + +{ +public: + MessageCenterEditor(MessageCenter* owner); + ~MessageCenterEditor(); + + void paint(Graphics& g); + + bool keyPressed(const KeyPress& key); + + void resized(); + + void enable(); + void disable(); + + void messageReceived(bool state); + + void saveStateToXml(XmlElement* xml); + void loadStateFromXml(XmlElement* xml); + + String getLabelString(); + +private: + + void buttonClicked(Button* button); + void labelTextChanged(Label* slider); + void timerCallback(); + + bool isEnabled; + + /** Called when a new message is received. */ + void actionListenerCallback(const String& message); + + /** A JUCE label used to display message text. */ + ScopedPointer<Label> incomingMessageDisplayArea; + + /** A JUCE label used to display message text. */ + ScopedPointer<Label> outgoingMessageDisplayArea; + + /** A JUCE button used to send messages. */ + ScopedPointer<Button> sendMessageButton; + + MessageCenter* messageCenter; + + Colour incomingBackground; + Colour outgoingBackground; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MessageCenterEditor); + +}; + + + +#endif // MESSAGECENTEREDITOR_H_INCLUDED diff --git a/Source/Processors/Parameter.cpp b/Source/Processors/Parameter/Parameter.cpp similarity index 94% rename from Source/Processors/Parameter.cpp rename to Source/Processors/Parameter/Parameter.cpp index da0dc4444967296ccc077f52d700c9e914ba7d77..1fcd924ed5fb01726fc54a42ab59cd3dcc22117e 100755 --- a/Source/Processors/Parameter.cpp +++ b/Source/Processors/Parameter/Parameter.cpp @@ -2,7 +2,7 @@ /* ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/Parameter.h b/Source/Processors/Parameter/Parameter.h similarity index 98% rename from Source/Processors/Parameter.h rename to Source/Processors/Parameter/Parameter.h index 92ee5e7a588b2bfe900b06f5b90ee3ffb075d4ec..33cf68b40269bda6f2adb23f5a8bd914a209a95e 100755 --- a/Source/Processors/Parameter.h +++ b/Source/Processors/Parameter/Parameter.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,7 +24,7 @@ #ifndef __PARAMETER_H_62922AE5__ #define __PARAMETER_H_62922AE5__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" // #include "Editors/GenericEditor.h" // #include "GenericProcessor.h" // #include "../AccessClass.h" diff --git a/Source/Processors/Editors/ParameterEditor.cpp b/Source/Processors/Parameter/ParameterEditor.cpp similarity index 96% rename from Source/Processors/Editors/ParameterEditor.cpp rename to Source/Processors/Parameter/ParameterEditor.cpp index 9c139e065078e8b1c607db7e5423fa8eb730f261..29a03585dfee776aa573ef45e85bb5df2a71d8f7 100755 --- a/Source/Processors/Editors/ParameterEditor.cpp +++ b/Source/Processors/Parameter/ParameterEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/Editors/ParameterEditor.h b/Source/Processors/Parameter/ParameterEditor.h similarity index 92% rename from Source/Processors/Editors/ParameterEditor.h rename to Source/Processors/Parameter/ParameterEditor.h index bb2fd13589caa3259c9ed30547267babd299cf8c..5f08bd2c99b137389a95f99e5ceecd1ea711ab49 100755 --- a/Source/Processors/Editors/ParameterEditor.h +++ b/Source/Processors/Parameter/ParameterEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,9 +25,9 @@ #define __PARAMETEREDITOR_H_44537DA9__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "../GenericProcessor.h" -#include "ChannelSelector.h" -#include "../Parameter.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "../Editors/ChannelSelector.h" +#include "Parameter.h" #include <stdio.h> class ParameterButton; diff --git a/Source/Processors/PhaseDetector.cpp b/Source/Processors/PhaseDetector/PhaseDetector.cpp similarity index 95% rename from Source/Processors/PhaseDetector.cpp rename to Source/Processors/PhaseDetector/PhaseDetector.cpp index 0a6d07df0749c013b21b62073549df5b47a5bb2d..069b76454b3786709a8fc7b15cc3101eba0f510b 100644 --- a/Source/Processors/PhaseDetector.cpp +++ b/Source/Processors/PhaseDetector/PhaseDetector.cpp @@ -23,7 +23,7 @@ #include <stdio.h> #include "PhaseDetector.h" -#include "Editors/PhaseDetectorEditor.h" +#include "PhaseDetectorEditor.h" PhaseDetector::PhaseDetector() : GenericProcessor("Phase Detector"), activeModule(-1), diff --git a/Source/Processors/PhaseDetector.h b/Source/Processors/PhaseDetector/PhaseDetector.h similarity index 91% rename from Source/Processors/PhaseDetector.h rename to Source/Processors/PhaseDetector/PhaseDetector.h index 21dddad125b7ddb3d83b7c6c29affeae39f545b0..6116e2f2fe6ef0de397f5ba3233a99659d7b5a28 100644 --- a/Source/Processors/PhaseDetector.h +++ b/Source/Processors/PhaseDetector/PhaseDetector.h @@ -25,8 +25,8 @@ #define __PHASEDETECTOR_H_F411F29D__ -#include "../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../GenericProcessor/GenericProcessor.h" #define NUM_INTERVALS 5 diff --git a/Source/Processors/Editors/PhaseDetectorEditor.cpp b/Source/Processors/PhaseDetector/PhaseDetectorEditor.cpp similarity index 95% rename from Source/Processors/Editors/PhaseDetectorEditor.cpp rename to Source/Processors/PhaseDetector/PhaseDetectorEditor.cpp index 2e26307e7a5916d5def2779c32e6ffc5f880523f..5551157a617633f121a39d179c0fd60305a59907 100644 --- a/Source/Processors/Editors/PhaseDetectorEditor.cpp +++ b/Source/Processors/PhaseDetector/PhaseDetectorEditor.cpp @@ -23,7 +23,7 @@ #include "PhaseDetectorEditor.h" -#include "../PhaseDetector.h" +#include "PhaseDetector.h" #include <stdio.h> #include <cmath> diff --git a/Source/Processors/Editors/PhaseDetectorEditor.h b/Source/Processors/PhaseDetector/PhaseDetectorEditor.h similarity index 93% rename from Source/Processors/Editors/PhaseDetectorEditor.h rename to Source/Processors/PhaseDetector/PhaseDetectorEditor.h index f7bafda19202ff40aae12557a9fd0ac74d48007c..0041d45129cfad99fe6a1afbea58b1cdee409bd4 100644 --- a/Source/Processors/Editors/PhaseDetectorEditor.h +++ b/Source/Processors/PhaseDetector/PhaseDetectorEditor.h @@ -27,8 +27,8 @@ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" -#include "ElectrodeButtons.h" +#include "../Editors/GenericEditor.h" +#include "../Editors/ElectrodeButtons.h" class DetectorInterface; class PhaseDetector; diff --git a/Source/Processors/ProcessorGraph.cpp b/Source/Processors/ProcessorGraph/ProcessorGraph.cpp similarity index 85% rename from Source/Processors/ProcessorGraph.cpp rename to Source/Processors/ProcessorGraph/ProcessorGraph.cpp index bbec3de2ded58083b6de175517dff05a16dfa672..b12e4cbb2fbe4a56d1f21e2e285e2b4b458c22cd 100644 --- a/Source/Processors/ProcessorGraph.cpp +++ b/Source/Processors/ProcessorGraph/ProcessorGraph.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,34 +24,36 @@ #include <stdio.h> #include "ProcessorGraph.h" - -#include "AudioNode.h" -#include "LfpDisplayNode.h" -#include "SpikeDisplayNode.h" -#include "EventNode.h" -#include "FilterNode.h" -#include "GenericProcessor.h" -#include "RecordNode.h" -#include "ResamplingNode.h" -#include "ReferenceNode.h" -#include "ChannelMappingNode.h" -#include "AudioResamplingNode.h" -#include "SignalGenerator.h" -#include "SourceNode.h" -#include "EventDetector.h" -#include "SpikeDetector.h" -#include "PhaseDetector.h" -#include "WiFiOutput.h" -#include "FileReader.h" -#include "ArduinoOutput.h" -#include "FPGAOutput.h" -#include "PulsePalOutput.h" -#include "SerialInput.h" -#include "Utilities/RecordControl.h" -#include "Utilities/Splitter.h" -#include "Utilities/Merger.h" -#include "../UI/UIComponent.h" -#include "../UI/EditorViewport.h" +#include "../GenericProcessor/GenericProcessor.h" + +#include "../AudioNode/AudioNode.h" +#include "../LfpDisplayNode/LfpDisplayNode.h" +#include "../SpikeDisplayNode/SpikeDisplayNode.h" +#include "../EventNode/EventNode.h" +#include "../FilterNode/FilterNode.h" +#include "../RecordNode/RecordNode.h" +#include "../ResamplingNode/ResamplingNode.h" +#include "../ReferenceNode/ReferenceNode.h" +#include "../ChannelMappingNode/ChannelMappingNode.h" +#include "../AudioResamplingNode/AudioResamplingNode.h" +#include "../SignalGenerator/SignalGenerator.h" +#include "../SourceNode/SourceNode.h" +#include "../EventDetector/EventDetector.h" +#include "../SpikeDetector/SpikeDetector.h" +#include "../SpikeSorter/SpikeSorter.h" +#include "../PhaseDetector/PhaseDetector.h" +#include "../WiFiOutput/WiFiOutput.h" +#include "../FileReader/FileReader.h" +#include "../ArduinoOutput/ArduinoOutput.h" +#include "../FPGAOutput/FPGAOutput.h" +#include "../PulsePalOutput/PulsePalOutput.h" +#include "../SerialInput/SerialInput.h" +#include "../MessageCenter/MessageCenter.h" +#include "../RecordControl/RecordControl.h" +#include "../Splitter/Splitter.h" +#include "../Merger/Merger.h" +#include "../../UI/UIComponent.h" +#include "../../UI/EditorViewport.h" ProcessorGraph::ProcessorGraph() : currentNodeId(100) { @@ -63,8 +65,6 @@ ProcessorGraph::ProcessorGraph() : currentNodeId(100) 44100.0, // sampleRate 1024); // blockSize - createDefaultNodes(); - } ProcessorGraph::~ProcessorGraph() @@ -88,15 +88,19 @@ void ProcessorGraph::createDefaultNodes() AudioNode* an = new AudioNode(); an->setNodeId(AUDIO_NODE_ID); - // add audio resampling node -- resamples continuous signals to 44.1kHz AudioResamplingNode* arn = new AudioResamplingNode(); arn->setNodeId(RESAMPLING_NODE_ID); + // add message center + MessageCenter* msgCenter = new MessageCenter(); + msgCenter->setNodeId(MESSAGE_CENTER_ID); + addNode(on, OUTPUT_NODE_ID); addNode(recn, RECORD_NODE_ID); addNode(an, AUDIO_NODE_ID); addNode(arn, RESAMPLING_NODE_ID); + addNode(msgCenter, MESSAGE_CENTER_ID); } @@ -105,13 +109,22 @@ void ProcessorGraph::updatePointers() getAudioNode()->setUIComponent(getUIComponent()); getAudioNode()->updateBufferSize(); getRecordNode()->setUIComponent(getUIComponent()); + getMessageCenter()->setUIComponent(getUIComponent()); } void* ProcessorGraph::createNewProcessor(String& description, int id)//, { - GenericProcessor* processor = createProcessorFromDescription(description); + GenericProcessor* processor = 0; + try // Try/catch block added by Michael Borisov + { + processor = createProcessorFromDescription(description); + } + catch (std::exception& e) + { + NativeMessageBox::showMessageBoxAsync(AlertWindow::WarningIcon, "OpenEphys", e.what()); + } // int id = currentNodeId++; @@ -175,7 +188,8 @@ void ProcessorGraph::refreshColors() if (nodeId != OUTPUT_NODE_ID && nodeId != AUDIO_NODE_ID && nodeId != RECORD_NODE_ID && - nodeId != RESAMPLING_NODE_ID) + nodeId != RESAMPLING_NODE_ID && + nodeId != MESSAGE_CENTER_ID) { GenericProcessor* p =(GenericProcessor*) node->getProcessor(); GenericEditor* e = (GenericEditor*) p->getEditor(); @@ -198,7 +212,8 @@ void ProcessorGraph::restoreParameters() if (nodeId != OUTPUT_NODE_ID && nodeId != AUDIO_NODE_ID && nodeId != RECORD_NODE_ID && - nodeId != RESAMPLING_NODE_ID) + nodeId != RESAMPLING_NODE_ID && + nodeId != MESSAGE_CENTER_ID) { GenericProcessor* p =(GenericProcessor*) node->getProcessor(); p->loadFromXml(); @@ -221,7 +236,8 @@ Array<GenericProcessor*> ProcessorGraph::getListOfProcessors() if (nodeId != OUTPUT_NODE_ID && nodeId != AUDIO_NODE_ID && nodeId != RECORD_NODE_ID && - nodeId != RESAMPLING_NODE_ID) + nodeId != RESAMPLING_NODE_ID && + nodeId != MESSAGE_CENTER_ID) { GenericProcessor* p =(GenericProcessor*) node->getProcessor(); a.add(p); @@ -269,6 +285,9 @@ void ProcessorGraph::clearConnections() addConnection(AUDIO_NODE_ID, midiChannelIndex, RESAMPLING_NODE_ID, midiChannelIndex); + + addConnection(MESSAGE_CENTER_ID, midiChannelIndex, + RECORD_NODE_ID, midiChannelIndex); } @@ -435,6 +454,7 @@ void ProcessorGraph::connectProcessorToAudioAndRecordNodes(GenericProcessor* sou if (source == nullptr) return; + getRecordNode()->registerProcessor(source); for (int chan = 0; chan < source->getNumOutputs(); chan++) { @@ -491,6 +511,7 @@ GenericProcessor* ProcessorGraph::createProcessorFromDescription(String& descrip if (subProcessorType.equalsIgnoreCase("RHA2000-EVAL") || // subProcessorType.equalsIgnoreCase("File Reader") || subProcessorType.equalsIgnoreCase("Custom FPGA") || + subProcessorType.equalsIgnoreCase("eCube") || // Added by Michael Borisov subProcessorType.equalsIgnoreCase("Rhythm FPGA")) { @@ -547,6 +568,11 @@ GenericProcessor* ProcessorGraph::createProcessorFromDescription(String& descrip std::cout << "Creating a new spike detector." << std::endl; processor = new SpikeDetector(); } + else if (subProcessorType.equalsIgnoreCase("Spike Sorter")) + { + std::cout << "Creating a new spike sorter." << std::endl; + processor = new SpikeSorter(); + } else if (subProcessorType.equalsIgnoreCase("Event Detector")) { std::cout << "Creating a new event detector." << std::endl; @@ -662,6 +688,7 @@ void ProcessorGraph::removeProcessor(GenericProcessor* processor) std::cout << "Removing processor with ID " << processor->getNodeId() << std::endl; + disconnectNode(processor->getNodeId()); removeNode(processor->getNodeId()); } @@ -732,7 +759,7 @@ bool ProcessorGraph::disableProcessors() for (int i = 0; i < getNumNodes(); i++) { Node* node = getNode(i); - if (node->nodeId != OUTPUT_NODE_ID) + if (node->nodeId != OUTPUT_NODE_ID && node->nodeId != MESSAGE_CENTER_ID) { GenericProcessor* p = (GenericProcessor*) node->getProcessor(); std::cout << "Disabling " << p->getName() << std::endl; @@ -774,11 +801,7 @@ void ProcessorGraph::setRecordState(bool isRecording) { GenericProcessor* p = (GenericProcessor*) node->getProcessor(); - if (isRecording) - p->startRecording(); - else - p->stopRecording(); - + p->setRecording(isRecording); } } @@ -802,3 +825,12 @@ RecordNode* ProcessorGraph::getRecordNode() return (RecordNode*) node->getProcessor(); } + + +MessageCenter* ProcessorGraph::getMessageCenter() +{ + + Node* node = getNodeForId(MESSAGE_CENTER_ID); + return (MessageCenter*) node->getProcessor(); + +} diff --git a/Source/Processors/ProcessorGraph.h b/Source/Processors/ProcessorGraph/ProcessorGraph.h similarity index 89% rename from Source/Processors/ProcessorGraph.h rename to Source/Processors/ProcessorGraph/ProcessorGraph.h index 48919679b6b86a3644f6d5b55a66709aa110b764..2edbf0180db47e4d17f8f33022adfbbcfe75e5b3 100644 --- a/Source/Processors/ProcessorGraph.h +++ b/Source/Processors/ProcessorGraph/ProcessorGraph.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,13 +24,14 @@ #ifndef __PROCESSORGRAPH_H_124F8B50__ #define __PROCESSORGRAPH_H_124F8B50__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" -#include "../AccessClass.h" +#include "../../AccessClass.h" class GenericProcessor; class RecordNode; class AudioNode; +class MessageCenter; class SignalChainTabButton; /** @@ -69,6 +70,7 @@ public: RecordNode* getRecordNode(); AudioNode* getAudioNode(); + MessageCenter* getMessageCenter(); void updateConnections(Array<SignalChainTabButton*, CriticalSection>); @@ -85,6 +87,8 @@ public: void refreshColors(); + void createDefaultNodes(); + private: int currentNodeId; @@ -94,11 +98,10 @@ private: RECORD_NODE_ID = 900, AUDIO_NODE_ID = 901, OUTPUT_NODE_ID = 902, - RESAMPLING_NODE_ID = 903 + RESAMPLING_NODE_ID = 903, + MESSAGE_CENTER_ID = 904 }; - void createDefaultNodes(); - void clearConnections(); void connectProcessors(GenericProcessor* source, GenericProcessor* dest); diff --git a/Source/Processors/PulsePalOutput.cpp b/Source/Processors/PulsePalOutput/PulsePalOutput.cpp similarity index 95% rename from Source/Processors/PulsePalOutput.cpp rename to Source/Processors/PulsePalOutput/PulsePalOutput.cpp index 6cbfe51dc0598fee333d129c85c3ad9aed390b33..addb53f28b75ca92a542b4d319593c9a3c49cfe1 100644 --- a/Source/Processors/PulsePalOutput.cpp +++ b/Source/Processors/PulsePalOutput/PulsePalOutput.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/PulsePalOutput.h b/Source/Processors/PulsePalOutput/PulsePalOutput.h similarity index 86% rename from Source/Processors/PulsePalOutput.h rename to Source/Processors/PulsePalOutput/PulsePalOutput.h index 85f192ccaf9b2b36bf88128b1cc6f335f9218131..e9f52a13b60178757136c5568e2db767424af58a 100644 --- a/Source/Processors/PulsePalOutput.h +++ b/Source/Processors/PulsePalOutput/PulsePalOutput.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,10 +24,10 @@ #ifndef __PULSEPALOUTPUT_H_A8BF66D6__ #define __PULSEPALOUTPUT_H_A8BF66D6__ -#include "../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" -#include "Editors/PulsePalOutputEditor.h" -#include "Serial/PulsePal.h" +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "PulsePalOutputEditor.h" +#include "../Serial/PulsePal.h" /** diff --git a/Source/Processors/Editors/PulsePalOutputEditor.cpp b/Source/Processors/PulsePalOutput/PulsePalOutputEditor.cpp similarity index 95% rename from Source/Processors/Editors/PulsePalOutputEditor.cpp rename to Source/Processors/PulsePalOutput/PulsePalOutputEditor.cpp index 443d5a8aec31525ea3d8ded3f67241fc37f180b2..f4f6648f38cb3c4230dd4da465231147a5fd6821 100644 --- a/Source/Processors/Editors/PulsePalOutputEditor.cpp +++ b/Source/Processors/PulsePalOutput/PulsePalOutputEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,7 +24,7 @@ #include <stdio.h> #include "PulsePalOutputEditor.h" -#include "../PulsePalOutput.h" +#include "PulsePalOutput.h" #include "../Serial/PulsePal.h" PulsePalOutputEditor::PulsePalOutputEditor(GenericProcessor* parentNode, PulsePal* pp, bool useDefaultParameterEditors=true) diff --git a/Source/Processors/Editors/PulsePalOutputEditor.h b/Source/Processors/PulsePalOutput/PulsePalOutputEditor.h similarity index 93% rename from Source/Processors/Editors/PulsePalOutputEditor.h rename to Source/Processors/PulsePalOutput/PulsePalOutputEditor.h index a7036704d38740a221c44e3525f753daa8c966ef..9abc2a8903ce06df38733dbeb52cf3da0113260f 100644 --- a/Source/Processors/Editors/PulsePalOutputEditor.h +++ b/Source/Processors/PulsePalOutput/PulsePalOutputEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,7 +25,7 @@ #define __PULSEPALOUTPUTEDITOR_H_BB5F0ECC__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" /** diff --git a/Source/Processors/Utilities/RecordControl.cpp b/Source/Processors/RecordControl/RecordControl.cpp similarity index 82% rename from Source/Processors/Utilities/RecordControl.cpp rename to Source/Processors/RecordControl/RecordControl.cpp index 8a440fd09f126569ae0ce5d3a63e6181b62129cf..b3ca5b019e3f32dc6a7252f140ed5f01a241a1ba 100644 --- a/Source/Processors/Utilities/RecordControl.cpp +++ b/Source/Processors/RecordControl/RecordControl.cpp @@ -28,7 +28,7 @@ RecordControl::RecordControl() : GenericProcessor("Record Control"), - createNewFilesOnTrigger(false), triggerChannel(0), recordNode(0) + triggerChannel(0), recordNode(0) { } @@ -50,21 +50,6 @@ void RecordControl::setParameter(int parameterIndex, float newValue) { updateTriggerChannel((int) newValue); } - else - { - - if (newValue == 0.0) - { - createNewFilesOnTrigger = false; - - - } - else - { - createNewFilesOnTrigger = true; - } - //recordNode->appendTrialNumber(createNewFilesOnTrigger); - } } void RecordControl::updateTriggerChannel(int newChannel) @@ -77,7 +62,7 @@ bool RecordControl::enable() if (recordNode == 0) recordNode = getProcessorGraph()->getRecordNode(); - recordNode->appendTrialNumber(createNewFilesOnTrigger); + //recordNode->appendTrialNumber(createNewFilesOnTrigger); return true; } @@ -108,10 +93,6 @@ void RecordControl::handleEvent(int eventType, MidiMessage& event, int) if (eventId == 1) { - if (createNewFilesOnTrigger) - { - recordNode->updateTrialNumber(); - } getControlPanel()->setRecordState(true); } else diff --git a/Source/Processors/Utilities/RecordControl.h b/Source/Processors/RecordControl/RecordControl.h similarity index 92% rename from Source/Processors/Utilities/RecordControl.h rename to Source/Processors/RecordControl/RecordControl.h index 594c8d04acb2eb421c592da49f0278de3f89d072..ffdfb4239694930dd6027cb8bace79c2216dc156 100644 --- a/Source/Processors/Utilities/RecordControl.h +++ b/Source/Processors/RecordControl/RecordControl.h @@ -25,9 +25,9 @@ #define __RECORDCONTROL_H_120DD434__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "../GenericProcessor.h" -#include "../Editors/RecordControlEditor.h" -#include "../RecordNode.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "RecordControlEditor.h" +#include "../RecordNode/RecordNode.h" /** @@ -49,8 +49,6 @@ public: void handleEvent(int eventType, MidiMessage& event, int); bool enable(); - bool createNewFilesOnTrigger; - bool isUtility() { return true; diff --git a/Source/Processors/Editors/RecordControlEditor.cpp b/Source/Processors/RecordControl/RecordControlEditor.cpp similarity index 78% rename from Source/Processors/Editors/RecordControlEditor.cpp rename to Source/Processors/RecordControl/RecordControlEditor.cpp index e97638e92e7ef4e9c97f9d67a6d9c47c78b12584..a8b0f3b3238db8de1db0e0f1579aab904bae7164 100644 --- a/Source/Processors/Editors/RecordControlEditor.cpp +++ b/Source/Processors/RecordControl/RecordControlEditor.cpp @@ -22,8 +22,8 @@ */ #include "RecordControlEditor.h" -#include "../Utilities/RecordControl.h" -#include "ChannelSelector.h" +#include "RecordControl.h" +#include "../Editors/ChannelSelector.h" #include <stdio.h> RecordControlEditor::RecordControlEditor(GenericProcessor* parentNode, bool useDefaultParameterEditors=true) @@ -58,14 +58,6 @@ RecordControlEditor::RecordControlEditor(GenericProcessor* parentNode, bool useD channelName += i + 1; availableChans->addItem(channelName,i+2); } - - newFileToggleButton = new UtilityButton("SPLIT FILES", Font("Small Text", 13, Font::plain)); - newFileToggleButton->setRadius(3.0f); - newFileToggleButton->setBounds(35, 95, 90, 18); - newFileToggleButton->addListener(this); - newFileToggleButton->setClickingTogglesState(true); - addAndMakeVisible(newFileToggleButton); - } RecordControlEditor::~RecordControlEditor() @@ -82,18 +74,6 @@ void RecordControlEditor::comboBoxChanged(ComboBox* comboBox) getProcessor()->setParameter(0, -1); } -void RecordControlEditor::buttonEvent(Button* button) -{ - - if (button->getToggleState()) - { - getProcessor()->setParameter(1, 1.0f); - } - else - { - getProcessor()->setParameter(1, 0.0f); - } -} void RecordControlEditor::updateSettings() { @@ -110,7 +90,6 @@ void RecordControlEditor::saveCustomParameters(XmlElement* xml) info->setAttribute("Type", "RecordControlEditor"); info->setAttribute("Channel",availableChans->getSelectedId()); - info->setAttribute("FileSaveOption",newFileToggleButton->getToggleState()); } @@ -122,7 +101,6 @@ void RecordControlEditor::loadCustomParameters(XmlElement* xml) if (xmlNode->hasTagName("PARAMETERS")) { - newFileToggleButton->setToggleState(xmlNode->getBoolAttribute("FileSaveOption"), sendNotification); availableChans->setSelectedId(xmlNode->getIntAttribute("Channel"), sendNotification); } diff --git a/Source/Processors/Editors/RecordControlEditor.h b/Source/Processors/RecordControl/RecordControlEditor.h similarity index 89% rename from Source/Processors/Editors/RecordControlEditor.h rename to Source/Processors/RecordControl/RecordControlEditor.h index 0976ac133237f0e87964658d41e651269175f39c..792c3d5eb566ddf9815a0e5a5900aab48bed0e0e 100644 --- a/Source/Processors/Editors/RecordControlEditor.h +++ b/Source/Processors/RecordControl/RecordControlEditor.h @@ -25,7 +25,7 @@ #define __RECORDCONTROLEDITOR_H_F9C69E2B__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" /** @@ -43,16 +43,14 @@ public: ~RecordControlEditor(); void comboBoxChanged(ComboBox* comboBox); void updateSettings(); - void buttonEvent(Button* button); void loadCustomParameters(XmlElement*); void saveCustomParameters(XmlElement*); private: ScopedPointer<ComboBox> availableChans; ScopedPointer<Label> chanSel; - ScopedPointer<UtilityButton> newFileToggleButton; - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(RecordControlEditor); + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(RecordControlEditor); }; diff --git a/Source/Processors/RecordNode.cpp b/Source/Processors/RecordNode.cpp deleted file mode 100755 index f66b720480293aed9206250a8ba2a8c7be33ec63..0000000000000000000000000000000000000000 --- a/Source/Processors/RecordNode.cpp +++ /dev/null @@ -1,864 +0,0 @@ -/* - ------------------------------------------------------------------ - - This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys - - ------------------------------------------------------------------ - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - -*/ - -#include "RecordNode.h" -#include "ProcessorGraph.h" -#include "../UI/EditorViewport.h" -#include "../UI/ControlPanel.h" - -#include "Channel.h" - -RecordNode::RecordNode() - : GenericProcessor("Record Node"), - newDirectoryNeeded(true), zeroBuffer(1, 50000), timestamp(0), - appendTrialNum(false), trialNum(0) -{ - - isProcessing = false; - isRecording = false; - allFilesOpened = false; - blockIndex = 0; - signalFilesShouldClose = false; - - continuousDataIntegerBuffer = new int16[10000]; - continuousDataFloatBuffer = new float[10000]; - signalFilesShouldClose = false; - - settings.numInputs = 2048; - settings.numOutputs = 0; - - eventChannel = new Channel(this, 0); - eventChannel->isEventChannel = true; - - recordMarker = new char[10]; - for (int i = 0; i < 9; i++) - { - recordMarker[i] = i; - } - recordMarker[9] = 255; - - recordingNumber = 0; - - // 128 inputs, 0 outputs - setPlayConfigDetails(getNumInputs(),getNumOutputs(),44100.0,128); - - zeroBuffer.clear(); - -} - - -RecordNode::~RecordNode() -{ - -} - -void RecordNode::setChannel(Channel* ch) -{ - - int channelNum = channelPointers.indexOf(ch); - - std::cout << "Record node setting channel to " << channelNum << std::endl; - - setCurrentChannel(channelNum); - - // for (int i = 0; i < con.size(); i++) - // { - - // if (continuousChannels[i].nodeId == id && - // continuousChannels[i].chan == chan) - // { - // std::cout << "Found channel " << i << std::endl; - // setCurrentChannel(i); - // break; - // } - - // } -} - -void RecordNode::setChannelStatus(Channel* ch, bool status) -{ - - //std::cout << "Setting channel status!" << std::endl; - setChannel(ch); - - if (status) - setParameter(2, 1.0f); - else - setParameter(2, 0.0f); - -} - -// void RecordNode::enableCurrentChannel(bool state) -// { -// continuousChannels[nextAvailableChannel].isRecording = state; -// } - -void RecordNode::resetConnections() -{ - //std::cout << "Resetting connections" << std::endl; - nextAvailableChannel = 0; - wasConnected = false; - - channelPointers.clear(); - eventChannelPointers.clear(); - - - -} - -void RecordNode::filenameComponentChanged(FilenameComponent* fnc) -{ - - //std::cout << "Got a new file" << std::endl; - dataDirectory = fnc->getCurrentFile(); - // std::cout << "File name: " << dataDirectory.getFullPathName(); - // if (dataDirectory.isDirectory()) - // std::cout << " is a directory." << std::endl; - // else - // std::cout << " is NOT a directory." << std::endl; - - //createNewDirectory(); - - - -} - - -void RecordNode::addInputChannel(GenericProcessor* sourceNode, int chan) -{ - - if (chan != getProcessorGraph()->midiChannelIndex) - { - - int channelIndex = getNextChannel(false); - - setPlayConfigDetails(channelIndex+1,0,44100.0,128); - - channelPointers.add(sourceNode->channels[chan]); - - // std::cout << channelIndex << std::endl; - - updateFileName(channelPointers[channelIndex]); - - - - //if (channelPointers[channelIndex]->isRecording) - // std::cout << " This channel will be recorded." << std::endl; - //else - // std::cout << " This channel will NOT be recorded." << std::endl; - - //std::cout << "adding channel " << getNextChannel(false) << std::endl; - - //std::pair<int, Channel> newPair (getNextChannel(false), newChannel); - - //std::cout << "adding channel " << getNextChannel(false) << std::endl; - - //continuouschannelPointers.insert(newPair); - - - } - else - { - - for (int n = 0; n < sourceNode->eventChannels.size(); n++) - { - - eventChannelPointers.add(sourceNode->eventChannels[n]); - - } - - } - -} - -void RecordNode::updateFileName(Channel* ch) -{ - String filename = rootFolder.getFullPathName(); - filename += rootFolder.separatorString; - - if (!ch->isEventChannel) - { - filename += ch->nodeId; - filename += "_"; - filename += ch->name; - - if (appendTrialNum) - { - filename += "_"; - filename += trialNum; - } - - filename += ".continuous"; - } - else - { - filename += "all_channels.events"; - } - - - ch->filename = filename; - ch->file = 0; - - - //std::cout << "Updating " << filename << std::endl; - -} - -void RecordNode::updateTrialNumber() -{ - trialNum++; -} - -void RecordNode::appendTrialNumber(bool t) -{ - appendTrialNum = t; -} - -void RecordNode::createNewDirectory() -{ - std::cout << "Creating new directory." << std::endl; - - rootFolder = File(dataDirectory.getFullPathName() + File::separator + generateDirectoryName()); - - updateFileName(eventChannel); - - for (int i = 0; i < channelPointers.size(); i++) - { - updateFileName(channelPointers[i]); - } - - newDirectoryNeeded = false; - - trialNum = 0; - -} - -void RecordNode::createNewFiles() -{ - for (int i = 0; i < channelPointers.size(); i++) - { - updateFileName(channelPointers[i]); - } - -} - -String RecordNode::generateDirectoryName() -{ - Time calendar = Time::getCurrentTime(); - - Array<int> t; - t.add(calendar.getYear()); - t.add(calendar.getMonth()+1); // January = 0 - t.add(calendar.getDayOfMonth()); - t.add(calendar.getHours()); - t.add(calendar.getMinutes()); - t.add(calendar.getSeconds()); - - String filename = getControlPanel()->getTextToPrepend(); - - String datestring = ""; - - for (int n = 0; n < t.size(); n++) - { - if (t[n] < 10) - datestring += "0"; - - datestring += t[n]; - - if (n == 2) - datestring += "_"; - else if (n < 5) - datestring += "-"; - } - - getControlPanel()->setDateText(datestring); - - filename += datestring; - filename += getControlPanel()->getTextToAppend(); - - return filename; - -} - -String RecordNode::generateDateString() -{ - Time calendar = Time::getCurrentTime(); - - String datestring; - - datestring += String(calendar.getDayOfMonth()); - datestring += "-"; - datestring += calendar.getMonthName(true); - datestring += "-"; - datestring += String(calendar.getYear()); - datestring += " "; - - int hrs, mins, secs; - hrs = calendar.getHours(); - mins = calendar.getMinutes(); - secs = calendar.getSeconds(); - - datestring += hrs; - - if (mins < 10) - datestring += 0; - - datestring += mins; - - if (secs < 0) - datestring += 0; - - datestring += secs; - - return datestring; - -} - - -void RecordNode::setParameter(int parameterIndex, float newValue) -{ - //editor->updateParameterButtons(parameterIndex); - - // 0 = stop recording - // 1 = start recording - // 2 = toggle individual channel (0.0f = OFF, anything else = ON) - - if (parameterIndex == 1) - { - - isRecording = true; - // std::cout << "START RECORDING." << std::endl; - - if (newDirectoryNeeded) - { - createNewDirectory(); - recordingNumber = 0; - } - else - { - recordingNumber++; // increment recording number within this directory - } - - if (!rootFolder.exists()) - { - rootFolder.createDirectory(); - String settingsFileName = rootFolder.getFullPathName() + File::separator + "settings.xml"; - getEditorViewport()->saveState(File(settingsFileName)); - } - - createNewFiles(); - - openFile(eventChannel); - - blockIndex = 0; // reset index - - - // create / open necessary files - for (int i = 0; i < channelPointers.size(); i++) - { - // std::cout << "Checking channel " << i << std::endl; - - if (channelPointers[i]->getRecordState()) - { - openFile(channelPointers[i]); - } - } - - allFilesOpened = true; - - } - else if (parameterIndex == 0) - { - - - // std::cout << "STOP RECORDING." << std::endl; - - if (isRecording) - { - - // close necessary files - signalFilesShouldClose = true; - - } - - isRecording = false; - - - } - else if (parameterIndex == 2) - { - - if (isProcessing) - { - - std::cout << "Toggling channel " << currentChannel << std::endl; - - if (newValue == 0.0f) - { - channelPointers[currentChannel]->setRecordState(false); - - if (isRecording) - { - - if (blockIndex < BLOCK_LENGTH) - { - // fill out the rest of the current buffer - writeContinuousBuffer(zeroBuffer.getReadPointer(0), BLOCK_LENGTH - blockIndex, currentChannel); - } - - closeFile(channelPointers[currentChannel]); - } - - } - else - { - channelPointers[currentChannel]->setRecordState(true); - - if (isRecording) - { - - openFile(channelPointers[currentChannel]); - - if (blockIndex > 0) - { - writeTimestampAndSampleCount(channelPointers[currentChannel]->file); - // fill up the first data block up to sample count - writeContinuousBuffer(zeroBuffer.getReadPointer(0), blockIndex, currentChannel); - } - - } - } - } - } -} - -void RecordNode::openFile(Channel* ch) -{ - std::cout << "OPENING FILE: " << ch->filename << std::endl; - - File f = File(ch->filename); - FILE* chFile; - - bool fileExists = f.exists(); - - diskWriteLock.enter(); - - chFile = fopen(ch->filename.toUTF8(), "ab"); - - if (!fileExists) - { - // create and write header - std::cout << "Writing header." << std::endl; - String header = generateHeader(ch); - //std::cout << header << std::endl; - std::cout << "File ID: " << chFile << ", number of bytes: " << header.getNumBytesAsUTF8() << std::endl; - - - fwrite(header.toUTF8(), 1, header.getNumBytesAsUTF8(), chFile); - - std::cout << "Wrote header." << std::endl; - - std::cout << "Block index: " << blockIndex << std::endl; - - } - else - { - std::cout << "File already exists, just opening." << std::endl; - } - - diskWriteLock.exit(); - - //To avoid a race condition resulting on data written before the header, - //do not assign the channel pointer until the header has been written - ch->file = chFile; - - -} - -void RecordNode::closeFile(Channel* ch) -{ - - diskWriteLock.enter(); - - std::cout << "CLOSING FILE: " << ch->filename << std::endl; - if (ch->file != NULL) - fclose(ch->file); - - diskWriteLock.exit(); -} - -String RecordNode::generateHeader(Channel* ch) -{ - - String header = "header.format = 'Open Ephys Data Format'; \n"; - - header += "header.version = 0.2;"; - header += "header.header_bytes = "; - header += String(HEADER_SIZE); - header += ";\n"; - - if (ch->isEventChannel) - { - header += "header.description = 'each record contains one 64-bit timestamp, one 16-bit sample position, one uint8 event type, one uint8 processor ID, one uint8 event ID, one uint8 event channel, and one uint16 recordingNumber'; \n"; - - } - else - { - header += "header.description = 'each record contains one 64-bit timestamp, one 16-bit sample count (N), 1 uint16 recordingNumber, N 16-bit samples, and one 10-byte record marker (0 1 2 3 4 5 6 7 8 255)'; \n"; - } - - - header += "header.date_created = '"; - header += generateDateString(); - header += "';\n"; - - header += "header.channel = '"; - header += ch->name; - header += "';\n"; - - if (ch->isEventChannel) - { - - header += "header.channelType = 'Event';\n"; - } - else - { - header += "header.channelType = 'Continuous';\n"; - } - - header += "header.sampleRate = "; - // all channels need to have the same sample rate under the current scheme - header += String(channelPointers[0]->sampleRate); - header += ";\n"; - header += "header.blockLength = "; - header += BLOCK_LENGTH; - header += ";\n"; - header += "header.bufferSize = "; - header += getAudioComponent()->getBufferSize(); - header += ";\n"; - header += "header.bitVolts = "; - header += String(ch->bitVolts); - header += ";\n"; - - header = header.paddedRight(' ', HEADER_SIZE); - - //std::cout << header << std::endl; - - return header; - -} - -void RecordNode::closeAllFiles() -{ - if (allFilesOpened) - { - for (int i = 0; i < channelPointers.size(); i++) - { - if (channelPointers[i]->getRecordState()) - { - - if (blockIndex < BLOCK_LENGTH) - { - // fill out the rest of the current buffer - writeContinuousBuffer(zeroBuffer.getReadPointer(0), BLOCK_LENGTH - blockIndex, i); - } - - closeFile(channelPointers[i]); - } - } - - closeFile(eventChannel); - blockIndex = 0; // back to the beginning of the block - allFilesOpened = false; - } -} - -bool RecordNode::enable() -{ - - isProcessing = true; - return true; -} - - -bool RecordNode::disable() -{ - // close files if necessary - setParameter(0, 10.0f); - - if (isProcessing) - closeAllFiles(); - - isProcessing = false; - - return true; -} - -float RecordNode::getFreeSpace() -{ - return 1.0f - float(dataDirectory.getBytesFreeOnVolume())/float(dataDirectory.getVolumeTotalSize()); -} - -void RecordNode::writeContinuousBuffer(const float* data, int nSamples, int channel) -{ - - // check to see if the file exists - if (channelPointers[channel]->file == NULL) - return; - - // scale the data back into the range of int16 - float scaleFactor = float(0x7fff) * channelPointers[channel]->bitVolts; - for (int n = 0; n < nSamples; n++) - { - *(continuousDataFloatBuffer+n) = *(data+n) / scaleFactor; - } - AudioDataConverters::convertFloatToInt16BE(continuousDataFloatBuffer, continuousDataIntegerBuffer, nSamples); - - if (blockIndex == 0) - { - writeTimestampAndSampleCount(channelPointers[channel]->file); - } - - diskWriteLock.enter(); - - size_t count = fwrite(continuousDataIntegerBuffer, // ptr - 2, // size of each element - nSamples, // count - channelPointers[channel]->file); // ptr to FILE object - - jassert(count == nSamples); // make sure all the data was written - - diskWriteLock.exit(); - - if (blockIndex + nSamples == BLOCK_LENGTH) - { - writeRecordMarker(channelPointers[channel]->file); - } - -} - -void RecordNode::writeTimestampAndSampleCount(FILE* file) -{ - - - diskWriteLock.enter(); - - uint16 samps = BLOCK_LENGTH; - - fwrite(×tamp, // ptr - 8, // size of each element - 1, // count - file); // ptr to FILE object - - fwrite(&samps, // ptr - 2, // size of each element - 1, // count - file); // ptr to FILE object - - fwrite(&recordingNumber, // ptr - 2, // size of each element - 1, // count - file); // ptr to FILE object - - diskWriteLock.exit(); - -} - -void RecordNode::writeRecordMarker(FILE* file) -{ - // write a 10-byte marker indicating the end of a record - - diskWriteLock.enter(); - fwrite(recordMarker, // ptr - 1, // size of each element - 10, // count - file); // ptr to FILE object - - diskWriteLock.exit(); - -} - -void RecordNode::writeEventBuffer(MidiMessage& event, int samplePosition) //, int node, int channel) -{ - // find file and write samples to disk - // std::cout << "Received event!" << std::endl; - - if (eventChannel->file == NULL) - return; - - const uint8* dataptr = event.getRawData(); - - if (event.getNoteNumber() > 0) // processor ID > 0 - { - uint64 samplePos = (uint64) samplePosition; - - int64 eventTimestamp = timestamp + samplePos; // add the sample position to the buffer timestamp - - diskWriteLock.enter(); - - fwrite(&eventTimestamp, // ptr - 8, // size of each element - 1, // count - eventChannel->file); // ptr to FILE object - - fwrite(&samplePos, // ptr - 2, // size of each element - 1, // count - eventChannel->file); // ptr to FILE object - - // write 1st four bytes of event (type, nodeId, eventId, eventChannel) - fwrite(dataptr, 1, 4, eventChannel->file); - - // write recording number - fwrite(&recordingNumber, // ptr - 2, // size of each element - 1, // count - eventChannel->file); // ptr to FILE object - - diskWriteLock.exit(); - } - -} - -void RecordNode::handleEvent(int eventType, MidiMessage& event, int samplePosition) -{ - if (eventType == TTL) - { - writeEventBuffer(event, samplePosition); - } - else if (eventType == TIMESTAMP) - { - const uint8* dataptr = event.getRawData(); - - // // double-check buffer contents:s - // std::cout << (int) *(dataptr + 11) << " " << - // (int) *(dataptr + 10) << " " << - // (int) *(dataptr + 9) << " " << - // (int) *(dataptr + 8) << " " << - // (int) *(dataptr + 7) << " " << - // (int) *(dataptr + 6) << " " << - // (int) *(dataptr + 5) << " " << - // (int) *(dataptr + 4) << std::endl; - - memcpy(×tamp, dataptr + 4, 8); // remember to skip first four bytes - } - -} - -void RecordNode::process(AudioSampleBuffer& buffer, - MidiBuffer& events, - int& nSamples) -{ - - // TERMINOLOGY: - // buffer -- incoming data stored in AudioSampleBuffer (nSamples long) - // block -- 1024-sample sequence for disk writing (BLOCK_LENGTH long) - // samplesWritten -- number of samples written from the current buffer - // blockIndex -- index within the current block (used outside this function) - // numSamplesToWrite -- number of unwritten samples from the buffer - - // CONSTRAINTS: - // samplesWritten must equal nSamples by the end of the process() method - - if (isRecording && allFilesOpened) - { - - // FIRST: cycle through events -- extract the TTLs and the timestamps - checkForEvents(events); - - // SECOND: cycle through buffer channels - int samplesWritten = 0; - - if (channelPointers.size() > 0) - { - - while (samplesWritten < nSamples) // there are still unwritten samples in the buffer - { - - int numSamplesToWrite = nSamples - samplesWritten; // samples remaining in the buffer - - if (blockIndex + numSamplesToWrite < BLOCK_LENGTH) // we still have space in this block - { - - for (int i = 0; i < buffer.getNumChannels(); i++) - { - - if (channelPointers[i]->getRecordState()) - { - // write buffer to disk! - writeContinuousBuffer(buffer.getReadPointer(i,samplesWritten), - numSamplesToWrite, - i); - - } - } - - // update our variables - samplesWritten += numSamplesToWrite; - timestamp += numSamplesToWrite; - blockIndex += numSamplesToWrite; - - } - else // there's not enough space left in this block for all remaining samples - { - - numSamplesToWrite = BLOCK_LENGTH - blockIndex; - - for (int i = 0; i < buffer.getNumChannels(); i++) - { - - if (channelPointers[i]->getRecordState()) - { - // write buffer to disk! - writeContinuousBuffer(buffer.getReadPointer(i,samplesWritten), - numSamplesToWrite, - i); - - //std::cout << "Record channel " << i << std::endl; - } - } - - // update our variables - samplesWritten += numSamplesToWrite; - timestamp += numSamplesToWrite; - blockIndex = 0; // back to the beginning of the block - - } - } - } - - // std::cout << nSamples << " " << samplesWritten << " " << blockIndex << std::endl; - - return; - - } - - // this is intended to prevent parameter changes from closing files - // before recording stops - if (signalFilesShouldClose) - { - closeAllFiles(); - signalFilesShouldClose = false; - } - -} diff --git a/Source/Processors/RecordNode/EngineConfigWindow.cpp b/Source/Processors/RecordNode/EngineConfigWindow.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d93b6428fc586dd454d05808e3e9ef824c7936e3 --- /dev/null +++ b/Source/Processors/RecordNode/EngineConfigWindow.cpp @@ -0,0 +1,189 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Florian Franzen + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + */ + +#include "EngineConfigWindow.h" + +EngineParameterComponent::EngineParameterComponent(EngineParameter ¶m) + : Component(param.name), type(param.type), parameter(param) +{ + if (param.type == EngineParameter::BOOL) + { + ToggleButton* but = new ToggleButton(); + but->setToggleState(param.boolParam.value,dontSendNotification); + but->setBounds(120,0,20,20); + addAndMakeVisible(but); + control = but; + } + else + { + Label* lab = new Label(); + lab->setFont(Font("Small Text",10,Font::plain)); + switch (param.type) + { + case EngineParameter::INT: + lab->setText(String(param.intParam.value),dontSendNotification); + lab->setBounds(120,0,50,20); + break; + case EngineParameter::FLOAT: + lab->setText(String(param.floatParam.value),dontSendNotification); + lab->setBounds(120,0,50,20); + break; + case EngineParameter::STR: + lab->setText(String(param.strParam.value),dontSendNotification); + lab->setBounds(120,0,150,20); + } + lab->setEditable(true); + lab->setColour(Label::ColourIds::backgroundColourId,Colours::lightgrey); + lab->setColour(Label::ColourIds::outlineColourId,Colours::black); + lab->addListener(this); + addAndMakeVisible(lab); + control = lab; + } +} + +EngineParameterComponent::~EngineParameterComponent() +{ +} + +void EngineParameterComponent::paint(Graphics& g) +{ + g.setColour(Colours::black); + g.setFont(13); + g.drawText(parameter.name+":",0,0,100,30,Justification::left,false); +} + +void EngineParameterComponent::labelTextChanged(Label *l) +{ + if (parameter.type == EngineParameter::INT) + { + int value = l->getText().getIntValue(); + if (value < parameter.intParam.min) + value = parameter.intParam.min; + if (value > parameter.intParam.max) + value = parameter.intParam.max; + l->setText(String(value),dontSendNotification); + } + else if (parameter.type == EngineParameter::FLOAT) + { + float value = l->getText().getFloatValue(); + if (value < parameter.floatParam.min) + value = parameter.floatParam.min; + if (value > parameter.floatParam.max) + value = parameter.floatParam.max; + l->setText(String(value),dontSendNotification); + } +} + +void EngineParameterComponent::saveValue() +{ + switch (parameter.type) + { + case EngineParameter::BOOL: + parameter.boolParam.value = ((ToggleButton*)control.get())->getToggleState(); + break; + case EngineParameter::INT: + parameter.intParam.value = ((Label*)control.get())->getText().getIntValue(); + if (parameter.intParam.value < parameter.intParam.min) + parameter.intParam.value = parameter.intParam.min; + if (parameter.intParam.value > parameter.intParam.max) + parameter.intParam.value = parameter.intParam.max; + break; + case EngineParameter::FLOAT: + parameter.floatParam.value = ((Label*)control.get())->getText().getFloatValue(); + if (parameter.floatParam.value < parameter.floatParam.min) + parameter.floatParam.value = parameter.floatParam.min; + if (parameter.floatParam.value > parameter.floatParam.max) + parameter.floatParam.value = parameter.floatParam.max; + break; + case EngineParameter::STR: + parameter.strParam.value = ((Label*)control.get())->getText(); + break; + } +} + +EngineConfigComponent::EngineConfigComponent(RecordEngineManager* man, int height) + : Component(man->getID()) +{ + bool hasString = false; + setName(man->getName()+" Recording Configuration"); + + for (int i = 0; i < man->getNumParameters(); i++) + { + EngineParameterComponent* par = new EngineParameterComponent(man->getParameter(i)); + if (man->getParameter(i).type == EngineParameter::STR) + hasString=true; + par->setBounds(10,10+40*i,300,30); + addAndMakeVisible(par); + parameters.add(par); + } + if (hasString) + this->setSize(300,height); + else + this->setSize(200,height); +} + +EngineConfigComponent::~EngineConfigComponent() +{ +} + +void EngineConfigComponent::saveParameters() +{ + for (int i=0; i < parameters.size(); i++) + parameters[i]->saveValue(); +} + +void EngineConfigComponent::paint(Graphics& g) +{ + g.setColour(Colours::darkgrey); + g.fillAll(); +} + +EngineConfigWindow::EngineConfigWindow(RecordEngineManager* man) + : DocumentWindow("RecordEngine Configuration", Colours::red, + DocumentWindow::closeButton), manager(man) +{ + int height = man->getNumParameters() * 50; + if (height == 0) + height = 10; + centreWithSize(200,height); + setUsingNativeTitleBar(true); + setResizable(false,false); + setName(man->getName()+" recording configuration"); + + ui = new EngineConfigComponent(man,height); + setContentOwned(ui,true); +} + +EngineConfigWindow::~EngineConfigWindow() +{ +} + +void EngineConfigWindow::closeButtonPressed() +{ + manager->toggleConfigWindow(); +} + +void EngineConfigWindow::saveParameters() +{ + ui->saveParameters(); +} \ No newline at end of file diff --git a/Source/Processors/RecordNode/EngineConfigWindow.h b/Source/Processors/RecordNode/EngineConfigWindow.h new file mode 100644 index 0000000000000000000000000000000000000000..d45e062f094da6ac28a51b6f1fbc0b0270cc32c8 --- /dev/null +++ b/Source/Processors/RecordNode/EngineConfigWindow.h @@ -0,0 +1,81 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Florian Franzen + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + */ + +#ifndef ENGINECONFIGWINDOW_H_INCLUDED +#define ENGINECONFIGWINDOW_H_INCLUDED + +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "RecordEngine.h" + +class EngineParameterComponent : public Component, + public Label::Listener +{ +public: + EngineParameterComponent(EngineParameter& param); + ~EngineParameterComponent(); + + void paint(Graphics& g); + void labelTextChanged(Label* lab); + + void saveValue(); + +private: + ScopedPointer<Component> control; + EngineParameter::EngineParameterType type; + EngineParameter& parameter; + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(EngineParameterComponent); +}; + +class EngineConfigComponent : public Component +{ +public: + EngineConfigComponent(RecordEngineManager *man, int height); + ~EngineConfigComponent(); + void paint(Graphics& g); + void saveParameters(); + +private: + OwnedArray<EngineParameterComponent> parameters; + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(EngineConfigComponent); +}; + +class EngineConfigWindow : public DocumentWindow +{ +public: + EngineConfigWindow(RecordEngineManager* man); + ~EngineConfigWindow(); + void saveParameters(); + +private: + RecordEngineManager* manager; + void closeButtonPressed(); + ScopedPointer<EngineConfigComponent> ui; + + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(EngineConfigWindow); + +}; + + + +#endif // ENGINECONFIGWINDOW_H_INCLUDED diff --git a/Source/Processors/RecordNode/HDF5FileFormat.cpp b/Source/Processors/RecordNode/HDF5FileFormat.cpp new file mode 100644 index 0000000000000000000000000000000000000000..62a7466c5079695a0dd4ffd445d506e9ed1eec26 --- /dev/null +++ b/Source/Processors/RecordNode/HDF5FileFormat.cpp @@ -0,0 +1,903 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Florian Franzen + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + */ + +#include <H5Cpp.h> +#include "HDF5FileFormat.h" + +#ifndef CHUNK_XSIZE +#define CHUNK_XSIZE 256 +#endif + +#ifndef EVENT_CHUNK_SIZE +#define EVENT_CHUNK_SIZE 8 +#endif + +#ifndef SPIKE_CHUNK_XSIZE +#define SPIKE_CHUNK_XSIZE 8 +#endif + +#ifndef SPIKE_CHUNK_YSIZE +#define SPIKE_CHUNK_YSIZE 40 +#endif + +#define MAX_TRANSFORM_SIZE 512 + +#define MAX_STR_SIZE 256 + +#define PROCESS_ERROR std::cerr << error.getCDetailMsg() << std::endl; return -1 +#define CHECK_ERROR(x) if (x) std::cerr << "Error at HDFRecording " << __LINE__ << std::endl; + +using namespace H5; + +//HDF5FileBase + +HDF5FileBase::HDF5FileBase() : readyToOpen(false), opened(false) +{ + Exception::dontPrint(); +}; + +HDF5FileBase::~HDF5FileBase() +{ + close(); +} + +bool HDF5FileBase::isOpen() const +{ + return opened; +} + +int HDF5FileBase::open() +{ + if (!readyToOpen) return -1; + if (File(getFileName()).existsAsFile()) + return open(false); + else + return open(true); + +} + +int HDF5FileBase::open(bool newfile) +{ + int accFlags,ret=0; + + if (opened) return -1; + + try + { + + if (newfile) accFlags = H5F_ACC_TRUNC; + else accFlags = H5F_ACC_RDWR; + file = new H5File(getFileName().toUTF8(),accFlags); + opened = true; + if (newfile) + { + ret = createFileStructure(); + } + + if (ret) + { + file = nullptr; + opened = false; + std::cerr << "Error creating file structure" << std::endl; + } + + + return ret; + } + catch (FileIException error) + { + PROCESS_ERROR; + } +} + +void HDF5FileBase::close() +{ + file = nullptr; + opened = false; +} + +int HDF5FileBase::setAttribute(DataTypes type, void* data, String path, String name) +{ + Group loc; + Attribute attr; + DataType H5type; + DataType origType; + + if (!opened) return -1; + try + { + loc = file->openGroup(path.toUTF8()); + + H5type = getH5Type(type); + origType = getNativeType(type); + + if (loc.attrExists(name.toUTF8())) + { + attr = loc.openAttribute(name.toUTF8()); + } + else + { + DataSpace attr_dataspace(H5S_SCALAR); + attr = loc.createAttribute(name.toUTF8(),H5type,attr_dataspace); + } + + attr.write(origType,data); + + } + catch (GroupIException error) + { + PROCESS_ERROR; + } + catch (AttributeIException error) + { + PROCESS_ERROR; + } + + return 0; +} + +int HDF5FileBase::setAttributeStr(String value, String path, String name) +{ + Group loc; + Attribute attr; + + if (!opened) return -1; + + StrType type(PredType::C_S1, value.length()); + try + { + loc = file->openGroup(path.toUTF8()); + + if (loc.attrExists(name.toUTF8())) + { + //attr = loc.openAttribute(name.toUTF8()); + return -1; //string attributes cannot change size easily, better not allow overwritting. + } + else + { + DataSpace attr_dataspace(H5S_SCALAR); + attr = loc.createAttribute(name.toUTF8(), type, attr_dataspace); + } + attr.write(type,value.toUTF8()); + + } + catch (GroupIException error) + { + PROCESS_ERROR; + } + catch (AttributeIException error) + { + PROCESS_ERROR; + } + catch (FileIException error) + { + PROCESS_ERROR; + } + + return 0; +} + +int HDF5FileBase::createGroup(String path) +{ + if (!opened) return -1; + try + { + file->createGroup(path.toUTF8()); + } + catch (FileIException error) + { + PROCESS_ERROR; + } + catch (GroupIException error) + { + PROCESS_ERROR; + } + return 0; +} + +HDF5RecordingData* HDF5FileBase::getDataSet(String path) +{ + ScopedPointer<DataSet> data; + + if (!opened) return nullptr; + + try + { + data = new DataSet(file->openDataSet(path.toUTF8())); + return new HDF5RecordingData(data.release()); + } + catch (DataSetIException error) + { + error.printError(); + return nullptr; + } + catch (FileIException error) + { + error.printError(); + return nullptr; + } + catch (DataSpaceIException error) + { + error.printError(); + return nullptr; + } +} + +HDF5RecordingData* HDF5FileBase::createDataSet(DataTypes type, int sizeX, int chunkX, String path) +{ + int chunks[3] = {chunkX, 0, 0}; + return createDataSet(type,1,&sizeX,chunks,path); +} + +HDF5RecordingData* HDF5FileBase::createDataSet(DataTypes type, int sizeX, int sizeY, int chunkX, String path) +{ + int size[2]; + int chunks[3] = {chunkX, 0, 0}; + size[0] = sizeX; + size[1] = sizeY; + return createDataSet(type,2,size,chunks,path); +} + +HDF5RecordingData* HDF5FileBase::createDataSet(DataTypes type, int sizeX, int sizeY, int sizeZ, int chunkX, String path) +{ + int size[3]; + int chunks[3] = {chunkX, 0, 0}; + size[0] = sizeX; + size[1] = sizeY; + size[2] = sizeZ; + return createDataSet(type,2,size,chunks,path); +} + +HDF5RecordingData* HDF5FileBase::createDataSet(DataTypes type, int sizeX, int sizeY, int sizeZ, int chunkX, int chunkY, String path) +{ + int size[3]; + int chunks[3] = {chunkX, chunkY, 0}; + size[0] = sizeX; + size[1] = sizeY; + size[2] = sizeZ; + return createDataSet(type,3,size,chunks,path); +} + +HDF5RecordingData* HDF5FileBase::createDataSet(DataTypes type, int dimension, int* size, int* chunking, String path) +{ + ScopedPointer<DataSet> data; + DSetCreatPropList prop; + if (!opened) return nullptr; + + //Right now this classes don't support datasets with rank > 3. + //If it's needed in the future we can extend them to be of generic rank + if ((dimension > 3) || (dimension < 1)) return nullptr; + + DataType H5type = getH5Type(type); + + hsize_t dims[3], chunk_dims[3], max_dims[3]; + + for (int i=0; i < dimension; i++) + { + dims[i] = size[i]; + if (chunking[i] > 0) + { + chunk_dims[i] = chunking[i]; + max_dims[i] = H5S_UNLIMITED; + } + else + { + chunk_dims[i] = size[i]; + max_dims[i] = size[i]; + } + } + + try + { + DataSpace dSpace(dimension,dims,max_dims); + prop.setChunk(dimension,chunk_dims); + + data = new DataSet(file->createDataSet(path.toUTF8(),H5type,dSpace,prop)); + return new HDF5RecordingData(data.release()); + } + catch (DataSetIException error) + { + error.printError(); + return nullptr; + } + catch (FileIException error) + { + error.printError(); + return nullptr; + } + catch (DataSpaceIException error) + { + error.printError(); + return nullptr; + } + + +} + +H5::DataType HDF5FileBase::getNativeType(DataTypes type) +{ + switch (type) + { + case I8: + return PredType::NATIVE_INT8; + break; + case I16: + return PredType::NATIVE_INT16; + break; + case I32: + return PredType::NATIVE_INT32; + break; + case I64: + return PredType::NATIVE_INT64; + break; + case U8: + return PredType::NATIVE_UINT8; + break; + case U16: + return PredType::NATIVE_UINT16; + break; + case U32: + return PredType::NATIVE_UINT32; + break; + case U64: + return PredType::NATIVE_UINT64; + break; + case F32: + return PredType::NATIVE_FLOAT; + break; + case STR: + return StrType(PredType::C_S1,MAX_STR_SIZE); + break; + } + return PredType::NATIVE_INT32; +} + +H5::DataType HDF5FileBase::getH5Type(DataTypes type) +{ + switch (type) + { + case I8: + return PredType::STD_I8LE; + break; + case I16: + return PredType::STD_I16LE; + break; + case I32: + return PredType::STD_I32LE; + break; + case I64: + return PredType::STD_I64LE; + break; + case U8: + return PredType::STD_U8LE; + break; + case U16: + return PredType::STD_U16LE; + break; + case U32: + return PredType::STD_U32LE; + break; + case U64: + return PredType::STD_U64LE; + break; + case F32: + return PredType::IEEE_F32LE; + break; + case STR: + return StrType(PredType::C_S1,MAX_STR_SIZE); + break; + } + return PredType::STD_I32LE; +} + +HDF5RecordingData::HDF5RecordingData(DataSet* data) +{ + DataSpace dSpace; + DSetCreatPropList prop; + ScopedPointer<DataSet> dataSet = data; + hsize_t dims[3], chunk[3]; + + dSpace = dataSet->getSpace(); + prop = dataSet->getCreatePlist(); + + dimension = dSpace.getSimpleExtentDims(dims); + prop.getChunk(dimension,chunk); + + this->size[0] = dims[0]; + if (dimension > 1) + this->size[1] = dims[1]; + else + this->size[1] = 1; + if (dimension > 1) + this->size[2] = dims[2]; + else + this->size[2] = 1; + + this->xChunkSize = chunk[0]; + this->xPos = dims[0]; + this->dSet = dataSet; + this->rowXPos = 0; + this->rowDataSize = 0; +} + +HDF5RecordingData::~HDF5RecordingData() +{ +} +int HDF5RecordingData::writeDataBlock(int xDataSize, HDF5FileBase::DataTypes type, void* data) +{ + return writeDataBlock(xDataSize,size[1],type,data); +} + +int HDF5RecordingData::writeDataBlock(int xDataSize, int yDataSize, HDF5FileBase::DataTypes type, void* data) +{ + hsize_t dim[3],offset[3]; + DataSpace fSpace; + DataType nativeType; + + dim[2] = size[2]; + //only modify y size if new required size is larger than what we had. + if (yDataSize > size[1]) + dim[1] = yDataSize; + else + dim[1] = size[1]; + dim[0] = xPos + xDataSize; + try + { + //First be sure that we have enough space + dSet->extend(dim); + + fSpace = dSet->getSpace(); + fSpace.getSimpleExtentDims(dim); + size[0]=dim[0]; + if (dimension > 1) + size[1]=dim[1]; + + //Create memory space + dim[0]=xDataSize; + dim[1]=yDataSize; + dim[2] = size[2]; + + DataSpace mSpace(dimension,dim); + //select where to write + offset[0]=xPos; + offset[1]=0; + offset[2]=0; + + fSpace.selectHyperslab(H5S_SELECT_SET, dim, offset); + + nativeType = HDF5FileBase::getNativeType(type); + + dSet->write(data,nativeType,mSpace,fSpace); + xPos += xDataSize; + } + catch (DataSetIException error) + { + PROCESS_ERROR; + } + catch (DataSpaceIException error) + { + PROCESS_ERROR; + } + return 0; +} + +int HDF5RecordingData::prepareDataBlock(int xDataSize) +{ + hsize_t dim[3]; + DataSpace fSpace; + if (dimension > 2) return -4; //We're not going to write rows in datasets bigger than 2d. + + dim[2] = size[2]; + dim[1] = size[1]; + dim[0] = xPos + xDataSize; + try + { + dSet->extend(dim); + + fSpace = dSet->getSpace(); + fSpace.getSimpleExtentDims(dim); + size[0]=dim[0]; + } + catch (DataSetIException error) + { + PROCESS_ERROR; + } + rowXPos = xPos; + rowDataSize = xDataSize; + xPos += xDataSize; + return 0; +} + +int HDF5RecordingData::writeDataRow(int yPos, int xDataSize, HDF5FileBase::DataTypes type, void* data) +{ + hsize_t dim[2],offset[2]; + DataSpace fSpace; + DataType nativeType; + if (dimension > 2) return -4; //We're not going to write rows in datasets bigger than 2d. + if (xDataSize != rowDataSize) return -2; + if ((yPos < 0) || (yPos >= size[1])) return -3; + + try + { + dim[0] = xDataSize; + dim[1] = 1; + DataSpace mSpace(dimension,dim); + + fSpace = dSet->getSpace(); + offset[0] = rowXPos; + offset[1] = yPos; + fSpace.selectHyperslab(H5S_SELECT_SET, dim, offset); + + nativeType = HDF5FileBase::getNativeType(type); + + + dSet->write(data,nativeType,mSpace,fSpace); + } + catch (DataSetIException error) + { + PROCESS_ERROR; + } + catch (DataSpaceIException error) + { + PROCESS_ERROR; + } + catch (FileIException error) + { + PROCESS_ERROR; + } + return 0; +} + +//KWD File + +KWDFile::KWDFile(int processorNumber, String basename) : HDF5FileBase() +{ + initFile(processorNumber, basename); +} + +KWDFile::KWDFile() : HDF5FileBase() +{ +} + +KWDFile::~KWDFile() {} + +String KWDFile::getFileName() +{ + return filename; +} + +void KWDFile::initFile(int processorNumber, String basename) +{ + if (isOpen()) return; + filename = basename + "_" + String(processorNumber) + ".raw.kwd"; + readyToOpen=true; +} + +void KWDFile::startNewRecording(int recordingNumber, int nChannels, HDF5RecordingInfo* info) +{ + this->recordingNumber = recordingNumber; + this->nChannels = nChannels; + + String recordPath = String("/recordings/")+String(recordingNumber); + CHECK_ERROR(createGroup(recordPath)); + CHECK_ERROR(setAttributeStr(info->name,recordPath,String("name"))); + CHECK_ERROR(setAttribute(U64,&(info->start_time),recordPath,String("start_time"))); + // CHECK_ERROR(setAttribute(U32,&(info->start_sample),recordPath,String("start_sample"))); + CHECK_ERROR(setAttribute(F32,&(info->sample_rate),recordPath,String("sample_rate"))); + CHECK_ERROR(setAttribute(U32,&(info->bit_depth),recordPath,String("bit_depth"))); + recdata = createDataSet(I16,0,nChannels,CHUNK_XSIZE,recordPath+"/data"); + if (!recdata.get()) + std::cerr << "Error creating data set" << std::endl; + curChan = nChannels; +} + +void KWDFile::stopRecording() +{ + //ScopedPointer does the deletion and destructors the closings + recdata = nullptr; +} + +int KWDFile::createFileStructure() +{ + const uint16 ver = 2; + if (createGroup("/recordings")) return -1; + if (setAttribute(U16,(void*)&ver,"/","kwik_version")) return -1; + return 0; +} + +void KWDFile::writeBlockData(int16* data, int nSamples) +{ + CHECK_ERROR(recdata->writeDataBlock(nSamples,I16,data)); +} + +void KWDFile::writeRowData(int16* data, int nSamples) +{ + if (curChan >= nChannels) + { + CHECK_ERROR(recdata->prepareDataBlock(nSamples)); + curChan=0; + } + CHECK_ERROR(recdata->writeDataRow(curChan,nSamples,I16,data)); + curChan++; +} + +//KWIK File + +KWIKFile::KWIKFile(String basename) : HDF5FileBase() +{ + initFile(basename); +} + +KWIKFile::KWIKFile() : HDF5FileBase() +{ + +} + +KWIKFile::~KWIKFile() {} + +String KWIKFile::getFileName() +{ + return filename; +} + +void KWIKFile::initFile(String basename) +{ + if (isOpen()) return; + filename = basename + ".kwik"; + readyToOpen=true; +} + +int KWIKFile::createFileStructure() +{ + const uint16 ver = 2; + if (createGroup("/recordings")) return -1; + if (createGroup("/event_types")) return -1; + for (int i=0; i < eventNames.size(); i++) + { + ScopedPointer<HDF5RecordingData> dSet; + String path = "/event_types/" + eventNames[i]; + if (createGroup(path)) return -1; + path += "/events"; + if (createGroup(path)) return -1; + dSet = createDataSet(U64,0,EVENT_CHUNK_SIZE,path + "/time_samples"); + if (!dSet) return -1; + dSet = createDataSet(U16,0,EVENT_CHUNK_SIZE,path + "/recording"); + if (!dSet) return -1; + path += "/user_data"; + if (createGroup(path)) return -1; + dSet = createDataSet(U8,0,EVENT_CHUNK_SIZE,path + "/eventID"); + if (!dSet) return -1; + dSet = createDataSet(U8,0,EVENT_CHUNK_SIZE,path + "/nodeID"); + if (!dSet) return -1; + dSet = createDataSet(eventTypes[i],0,EVENT_CHUNK_SIZE,path + "/" + eventDataNames[i]); + if (!dSet) return -1; + } + if (setAttribute(U16,(void*)&ver,"/","kwik_version")) return -1; + return 0; +} + +void KWIKFile::startNewRecording(int recordingNumber, HDF5RecordingInfo* info) +{ + this->recordingNumber = recordingNumber; + kwdIndex=0; + String recordPath = String("/recordings/")+String(recordingNumber); + CHECK_ERROR(createGroup(recordPath)); + CHECK_ERROR(setAttributeStr(info->name,recordPath,String("name"))); + CHECK_ERROR(setAttribute(U64,&(info->start_time),recordPath,String("start_time"))); + // CHECK_ERROR(setAttribute(U32,&(info->start_sample),recordPath,String("start_sample"))); + CHECK_ERROR(setAttribute(F32,&(info->sample_rate),recordPath,String("sample_rate"))); + CHECK_ERROR(setAttribute(U32,&(info->bit_depth),recordPath,String("bit_depth"))); + CHECK_ERROR(createGroup(recordPath + "/raw")); + CHECK_ERROR(createGroup(recordPath + "/raw/hdf5_paths")); + + for (int i = 0; i < eventNames.size(); i++) + { + HDF5RecordingData* dSet; + String path = "/event_types/" + eventNames[i] + "/events"; + dSet = getDataSet(path + "/time_samples"); + if (!dSet) + std::cerr << "Error loading event timestamps dataset for type " << i << std::endl; + timeStamps.add(dSet); + dSet = getDataSet(path + "/recording"); + if (!dSet) + std::cerr << "Error loading event recordings dataset for type " << i << std::endl; + recordings.add(dSet); + dSet = getDataSet(path + "/user_data/eventID"); + if (!dSet) + std::cerr << "Error loading event ID dataset for type " << i << std::endl; + eventID.add(dSet); + dSet = getDataSet(path + "/user_data/nodeID"); + if (!dSet) + std::cerr << "Error loading event node ID dataset for type " << i << std::endl; + nodeID.add(dSet); + dSet = getDataSet(path + "/user_data/" + eventDataNames[i]); + if (!dSet) + std::cerr << "Error loading event channel dataset for type " << i << std::endl; + eventData.add(dSet); + } +} + +void KWIKFile::stopRecording() +{ + timeStamps.clear(); + recordings.clear(); + eventID.clear(); + nodeID.clear(); + eventData.clear(); +} + +void KWIKFile::writeEvent(int type, uint8 id, uint8 processor, void* data, uint64 timestamp) +{ + if (type > eventNames.size() || type < 0) + { + std::cerr << "HDF5::writeEvent Invalid event type " << type << std::endl; + return; + } + CHECK_ERROR(timeStamps[type]->writeDataBlock(1,U64,×tamp)); + CHECK_ERROR(recordings[type]->writeDataBlock(1,I32,&recordingNumber)); + CHECK_ERROR(eventID[type]->writeDataBlock(1,U8,&id)); + CHECK_ERROR(nodeID[type]->writeDataBlock(1,U8,&processor)); + CHECK_ERROR(eventData[type]->writeDataBlock(1,eventTypes[type],data)); +} + +void KWIKFile::addKwdFile(String filename) +{ + CHECK_ERROR(setAttributeStr(filename + "/recordings/" + String(recordingNumber),"/recordings/" + String(recordingNumber) + + "/raw/hdf5_paths",String(kwdIndex))); + kwdIndex++; +} + +void KWIKFile::addEventType(String name, DataTypes type, String dataName) +{ + eventNames.add(name); + eventTypes.add(type); + eventDataNames.add(dataName); +} + +//KWX File + +KWXFile::KWXFile(String basename) : HDF5FileBase() +{ + initFile(basename); + numElectrodes=0; + transformVector = new int16[MAX_TRANSFORM_SIZE]; +} + +KWXFile::KWXFile() : HDF5FileBase() +{ + numElectrodes=0; + transformVector = new int16[MAX_TRANSFORM_SIZE]; +} + +KWXFile::~KWXFile() +{ + delete transformVector; +} + +String KWXFile::getFileName() +{ + return filename; +} + +void KWXFile::initFile(String basename) +{ + if (isOpen()) return; + filename = basename + ".kwx"; + readyToOpen=true; +} + +int KWXFile::createFileStructure() +{ + const uint16 ver = 2; + if (createGroup("/channel_groups")) return -1; + if (setAttribute(U16,(void*)&ver,"/","kwik_version")) return -1; + for (int i=0; i < channelArray.size(); i++) + { + int res = createChannelGroup(i); + if (res) return -1; + } + return 0; +} + +void KWXFile::addChannelGroup(int nChannels) +{ + channelArray.add(nChannels); + numElectrodes++; +} + +int KWXFile::createChannelGroup(int index) +{ + ScopedPointer<HDF5RecordingData> dSet; + int nChannels = channelArray[index]; + String path("/channel_groups/"+String(index)); + CHECK_ERROR(createGroup(path)); + dSet = createDataSet(I16,0,0,nChannels,SPIKE_CHUNK_XSIZE,SPIKE_CHUNK_YSIZE,path+"/waveforms_filtered"); + if (!dSet) return -1; + dSet = createDataSet(U64,0,SPIKE_CHUNK_XSIZE,path+"/time_samples"); + if (!dSet) return -1; + dSet = createDataSet(U16,0,SPIKE_CHUNK_XSIZE,path+"/recordings"); + if (!dSet) return -1; + return 0; +} + +void KWXFile::startNewRecording(int recordingNumber) +{ + HDF5RecordingData* dSet; + String path; + this->recordingNumber = recordingNumber; + + for (int i=0; i < channelArray.size(); i++) + { + path = "/channel_groups/"+String(i); + dSet=getDataSet(path+"/waveforms_filtered"); + if (!dSet) + std::cerr << "Error loading spikes dataset for group " << i << std::endl; + spikeArray.add(dSet); + dSet=getDataSet(path+"/time_samples"); + if (!dSet) + std::cerr << "Error loading spike timestamp dataset for group " << i << std::endl; + timeStamps.add(dSet); + dSet=getDataSet(path+"/recordings"); + if (!dSet) + std::cerr << "Error loading spike recordings dataset for group " << i << std::endl; + recordingArray.add(dSet); + } +} + +void KWXFile::stopRecording() +{ + spikeArray.clear(); + timeStamps.clear(); + recordingArray.clear(); +} + +void KWXFile::resetChannels() +{ + stopRecording(); //Just in case + channelArray.clear(); +} + +void KWXFile::writeSpike(int groupIndex, int nSamples, const uint16* data, uint64 timestamp) +{ + if ((groupIndex < 0) || (groupIndex >= numElectrodes)) + { + std::cerr << "HDF5::writeSpike Electrode index out of bounds " << groupIndex << std::endl; + return; + } + int nChans= channelArray[groupIndex]; + int16* dst=transformVector; + + //Given the way we store spike data, we need to transpose it to store in + //N x NSAMPLES x NCHANNELS as well as convert from u16 to i16 + for (int i = 0; i < nSamples; i++) + { + for (int j = 0; j < nChans; j++) + { + *(dst++) = *(data+j*nSamples+i)-32768; + } + } + + CHECK_ERROR(spikeArray[groupIndex]->writeDataBlock(1,nSamples,I16,transformVector)); + CHECK_ERROR(recordingArray[groupIndex]->writeDataBlock(1,I32,&recordingNumber)); + CHECK_ERROR(timeStamps[groupIndex]->writeDataBlock(1,U64,×tamp)); +} diff --git a/Source/Processors/RecordNode/HDF5FileFormat.h b/Source/Processors/RecordNode/HDF5FileFormat.h new file mode 100644 index 0000000000000000000000000000000000000000..1fc8e675fb5d9c5d9dae130ec4fc0317e5f14f86 --- /dev/null +++ b/Source/Processors/RecordNode/HDF5FileFormat.h @@ -0,0 +1,203 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Florian Franzen + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + */ + +#ifndef HDF5FILEFORMAT_H_INCLUDED +#define HDF5FILEFORMAT_H_INCLUDED + +#include "../../../JuceLibraryCode/JuceHeader.h" + +class HDF5RecordingData; +namespace H5 +{ +class DataSet; +class H5File; +class DataType; +} + +struct HDF5RecordingInfo +{ + String name; + int64 start_time; + uint32 start_sample; + float sample_rate; + uint32 bit_depth; +}; + +class HDF5FileBase +{ +public: + HDF5FileBase(); + virtual ~HDF5FileBase(); + + int open(); + void close(); + virtual String getFileName() = 0; + bool isOpen() const; + typedef enum DataTypes { U8, U16, U32, U64, I8, I16, I32, I64, F32, STR} DataTypes; + + static H5::DataType getNativeType(DataTypes type); + static H5::DataType getH5Type(DataTypes type); + +protected: + + virtual int createFileStructure() = 0; + + int setAttribute(DataTypes type, void* data, String path, String name); + int setAttributeStr(String value, String path, String name); + int createGroup(String path); + + HDF5RecordingData* getDataSet(String path); + + //aliases for createDataSet + HDF5RecordingData* createDataSet(DataTypes type, int sizeX, int chunkX, String path); + HDF5RecordingData* createDataSet(DataTypes type, int sizeX, int sizeY, int chunkX, String path); + HDF5RecordingData* createDataSet(DataTypes type, int sizeX, int sizeY, int sizeZ, int chunkX, String path); + HDF5RecordingData* createDataSet(DataTypes type, int sizeX, int sizeY, int sizeZ, int chunkX, int chunkY, String path); + + bool readyToOpen; + +private: + //create an extendable dataset + HDF5RecordingData* createDataSet(DataTypes type, int dimension, int* size, int* chunking, String path); + int open(bool newfile); + ScopedPointer<H5::H5File> file; + bool opened; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(HDF5FileBase); +}; + +class HDF5RecordingData +{ +public: + HDF5RecordingData(H5::DataSet* data); + ~HDF5RecordingData(); + + int writeDataBlock(int xDataSize, HDF5FileBase::DataTypes type, void* data); + int writeDataBlock(int xDataSize, int yDataSize, HDF5FileBase::DataTypes type, void* data); + + int prepareDataBlock(int xDataSize); + int writeDataRow(int yPos, int xDataSize, HDF5FileBase::DataTypes type, void* data); + +private: + int xPos; + int xChunkSize; + int size[3]; + int dimension; + int rowXPos; + int rowDataSize; + ScopedPointer<H5::DataSet> dSet; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(HDF5RecordingData); +}; + +class KWDFile : public HDF5FileBase +{ +public: + KWDFile(int processorNumber, String basename); + KWDFile(); + virtual ~KWDFile(); + void initFile(int processorNumber, String basename); + void startNewRecording(int recordingNumber, int nChannels, HDF5RecordingInfo* info); + void stopRecording(); + void writeBlockData(int16* data, int nSamples); + void writeRowData(int16* data, int nSamples); + String getFileName(); + +protected: + int createFileStructure(); + +private: + int recordingNumber; + int nChannels; + int curChan; + String filename; + ScopedPointer<HDF5RecordingData> recdata; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(KWDFile); +}; + +class KWIKFile : public HDF5FileBase +{ +public: + KWIKFile(String basename); + KWIKFile(); + virtual ~KWIKFile(); + void initFile(String basename); + void startNewRecording(int recordingNumber, HDF5RecordingInfo* info); + void stopRecording(); + void writeEvent(int type, uint8 id, uint8 processor, void* data, uint64 timestamp); + void addKwdFile(String filename); + void addEventType(String name, DataTypes type, String dataName); + String getFileName(); + +protected: + int createFileStructure(); + +private: + int recordingNumber; + String filename; + OwnedArray<HDF5RecordingData> timeStamps; + OwnedArray<HDF5RecordingData> recordings; + OwnedArray<HDF5RecordingData> eventID; + OwnedArray<HDF5RecordingData> nodeID; + OwnedArray<HDF5RecordingData> eventData; + Array<String> eventNames; + Array<DataTypes> eventTypes; + Array<String> eventDataNames; + int kwdIndex; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(KWIKFile); +}; + +class KWXFile : public HDF5FileBase +{ +public: + KWXFile(String basename); + KWXFile(); + virtual ~KWXFile(); + void initFile(String basename); + void startNewRecording(int recordingNumber); + void stopRecording(); + void addChannelGroup(int nChannels); + void resetChannels(); + void writeSpike(int groupIndex, int nSamples, const uint16* data, uint64 timestamp); + String getFileName(); + +protected: + int createFileStructure(); + +private: + int createChannelGroup(int index); + int recordingNumber; + String filename; + OwnedArray<HDF5RecordingData> spikeArray; + OwnedArray<HDF5RecordingData> recordingArray; + OwnedArray<HDF5RecordingData> timeStamps; + Array<int> channelArray; + int numElectrodes; + int16* transformVector; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(KWXFile); +}; + +#endif // HDF5FILEFORMAT_H_INCLUDED diff --git a/Source/Processors/RecordNode/HDF5Recording.cpp b/Source/Processors/RecordNode/HDF5Recording.cpp new file mode 100644 index 0000000000000000000000000000000000000000..31ad28329d580eeb6cdf83c24ed47717b1052b72 --- /dev/null +++ b/Source/Processors/RecordNode/HDF5Recording.cpp @@ -0,0 +1,184 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Florian Franzen + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + */ + +#include "HDF5Recording.h" +#define MAX_BUFFER_SIZE 10000 + +HDF5Recording::HDF5Recording() : processorIndex(-1) +{ + timestamp = 0; + scaledBuffer = new float[MAX_BUFFER_SIZE]; + intBuffer = new int16[MAX_BUFFER_SIZE]; +} + +HDF5Recording::~HDF5Recording() +{ + delete scaledBuffer; + delete intBuffer; +} + +String HDF5Recording::getEngineID() +{ + return "KWIK"; +} + +void HDF5Recording::updateTimeStamp(int64 timestamp) +{ + this->timestamp = timestamp; +} + +void HDF5Recording::registerProcessor(GenericProcessor* proc) +{ + HDF5RecordingInfo* info = new HDF5RecordingInfo(); + info->sample_rate = proc->getSampleRate(); + info->bit_depth = 16; + infoArray.add(info); + fileArray.add(new KWDFile()); + activeChannelCount.add(0); + processorIndex++; +} + +void HDF5Recording::resetChannels() +{ + processorIndex = -1; + fileArray.clear(); + activeChannelCount.clear(); + processorMap.clear(); + infoArray.clear(); + if (spikesFile) + spikesFile->resetChannels(); +} + +void HDF5Recording::addChannel(int index, Channel* chan) +{ + processorMap.add(processorIndex); +} + +void HDF5Recording::openFiles(File rootFolder, int experimentNumber, int recordingNumber) +{ + String basepath = rootFolder.getFullPathName() + rootFolder.separatorString + "experiment" + String(experimentNumber); + //KWIK file + mainFile->initFile(basepath); + mainFile->open(); + + //KWX file + spikesFile->initFile(basepath); + spikesFile->open(); + spikesFile->startNewRecording(recordingNumber); + + //Let's just put the first processor (usually the source node) on the KWIK for now + infoArray[0]->name = String("Open-Ephys Recording #") + String(recordingNumber); + infoArray[0]->start_time = timestamp; + infoArray[0]->start_sample = 0; + mainFile->startNewRecording(recordingNumber,infoArray[0]); + + //KWD files + for (int i = 0; i < processorMap.size(); i++) + { + int index = processorMap[i]; + if (getChannel(i)->getRecordState()) + { + if (!fileArray[index]->isOpen()) + { + fileArray[index]->initFile(getChannel(i)->nodeId,basepath); + fileArray[index]->open(); + } + activeChannelCount.set(index,activeChannelCount[index]+1); + } + } + for (int i = 0; i < fileArray.size(); i++) + { + if (fileArray[i]->isOpen()) + { + File f(fileArray[i]->getFileName()); + mainFile->addKwdFile(f.getFileName()); + + infoArray[i]->name = String("Open-Ephys Recording #") + String(recordingNumber); + infoArray[i]->start_time = timestamp; + infoArray[i]->start_sample = 0; + fileArray[i]->startNewRecording(recordingNumber,activeChannelCount[i],infoArray[i]); + } + } +} + +void HDF5Recording::closeFiles() +{ + mainFile->stopRecording(); + mainFile->close(); + spikesFile->stopRecording(); + spikesFile->close(); + for (int i = 0; i < fileArray.size(); i++) + { + fileArray[i]->stopRecording(); + fileArray[i]->close(); + activeChannelCount.set(i,0); + } +} + +void HDF5Recording::writeData(AudioSampleBuffer& buffer, int nSamples) +{ + int index; + for (int i = 0; i < buffer.getNumChannels(); i++) + { + if (getChannel(i)->getRecordState()) + { + double multFactor = 1/(float(0x7fff) * getChannel(i)->bitVolts); + int index = processorMap[getChannel(i)->recordIndex]; + FloatVectorOperations::copyWithMultiply(scaledBuffer,buffer.getReadPointer(i,0),multFactor,nSamples); + AudioDataConverters::convertFloatToInt16LE(scaledBuffer,intBuffer,nSamples); + fileArray[index]->writeRowData(intBuffer,nSamples); + } + } +} + +void HDF5Recording::writeEvent(int eventType, MidiMessage& event, int samplePosition) +{ + const uint8* dataptr = event.getRawData(); + if (eventType == GenericProcessor::TTL) + mainFile->writeEvent(0,*(dataptr+2),*(dataptr+1),(void*)(dataptr+3),timestamp+samplePosition); + else if (eventType == GenericProcessor::MESSAGE) + mainFile->writeEvent(1,*(dataptr+2),*(dataptr+1),(void*)(dataptr+4),timestamp+samplePosition); +} + +void HDF5Recording::addSpikeElectrode(int index, SpikeRecordInfo* elec) +{ + spikesFile->addChannelGroup(elec->numChannels); +} +void HDF5Recording::writeSpike(const SpikeObject& spike, int electrodeIndex) +{ + spikesFile->writeSpike(electrodeIndex,spike.nSamples,spike.data,spike.timestamp); +} + +void HDF5Recording::startAcquisition() +{ + mainFile = new KWIKFile(); + mainFile->addEventType("TTL",HDF5FileBase::U8,"event_channels"); + mainFile->addEventType("Messages",HDF5FileBase::STR,"Text"); + spikesFile = new KWXFile(); +} + +RecordEngineManager* HDF5Recording::getEngineManager() +{ + RecordEngineManager* man = new RecordEngineManager("KWIK","Kwik",nullptr); + return man; +} \ No newline at end of file diff --git a/Source/Processors/RecordNode/HDF5Recording.h b/Source/Processors/RecordNode/HDF5Recording.h new file mode 100644 index 0000000000000000000000000000000000000000..50a2657348bbac75fcdec3f8f1a21924b932fffc --- /dev/null +++ b/Source/Processors/RecordNode/HDF5Recording.h @@ -0,0 +1,67 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Florian Franzen + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + */ + +#ifndef HDF5RECORDING_H_INCLUDED +#define HDF5RECORDING_H_INCLUDED + +#include "RecordEngine.h" +#include "HDF5FileFormat.h" + +class HDF5Recording : public RecordEngine +{ +public: + HDF5Recording(); + ~HDF5Recording(); + String getEngineID(); + void openFiles(File rootFolder, int experimentNumber, int recordingNumber); + void closeFiles(); + void writeData(AudioSampleBuffer& buffer, int nSamples); + void writeEvent(int eventType, MidiMessage& event, int samplePosition); + void addChannel(int index, Channel* chan); + void addSpikeElectrode(int index, SpikeRecordInfo* elec); + void writeSpike(const SpikeObject& spike, int electrodeIndex); + void registerProcessor(GenericProcessor* processor); + void resetChannels(); + void updateTimeStamp(int64 timestamp); + void startAcquisition(); + + static RecordEngineManager* getEngineManager(); +private: + + int processorIndex; + + Array<int> processorMap; + Array<int> activeChannelCount; + OwnedArray<KWDFile> fileArray; + OwnedArray<HDF5RecordingInfo> infoArray; + ScopedPointer<KWIKFile> mainFile; + ScopedPointer<KWXFile> spikesFile; + float* scaledBuffer; + int16* intBuffer; + int64 timestamp; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(HDF5Recording); +}; + + +#endif // HDF5RECORDING_H_INCLUDED diff --git a/Source/Processors/RecordNode/OriginalRecording.cpp b/Source/Processors/RecordNode/OriginalRecording.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9ef5d8762f0d08a8efd51d007625412f10e2ce8d --- /dev/null +++ b/Source/Processors/RecordNode/OriginalRecording.cpp @@ -0,0 +1,634 @@ +/* +------------------------------------------------------------------ + +This file is part of the Open Ephys GUI +Copyright (C) 2013 Florian Franzen + +------------------------------------------------------------------ + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include "OriginalRecording.h" +#include "../../Audio/AudioComponent.h" + +OriginalRecording::OriginalRecording() : separateFiles(false), + blockIndex(0), recordingNumber(0), experimentNumber(0), zeroBuffer(1, 50000), eventFile(nullptr), messageFile(nullptr) +{ + continuousDataIntegerBuffer = new int16[10000]; + continuousDataFloatBuffer = new float[10000]; + + recordMarker = new char[10]; + for (int i = 0; i < 9; i++) + { + recordMarker[i] = i; + } + recordMarker[9] = 255; + + zeroBuffer.clear(); +} + +OriginalRecording::~OriginalRecording() +{ + //Cleanup just in case + for (int i=0; i < fileArray.size(); i++) + { + if (fileArray[i] != nullptr) fclose(fileArray[i]); + } + for (int i=0; i < spikeFileArray.size(); i++) + { + if (spikeFileArray[i] != nullptr) fclose(spikeFileArray[i]); + } + delete continuousDataFloatBuffer; + delete continuousDataIntegerBuffer; + delete recordMarker; +} + +String OriginalRecording::getEngineID() +{ + return "OPENEPHYS"; +} + +void OriginalRecording::addChannel(int index, Channel* chan) +{ + //Just populate the file array with null so we can address it by index afterwards + fileArray.add(nullptr); +} + +void OriginalRecording::addSpikeElectrode(int index, SpikeRecordInfo* elec) +{ + spikeFileArray.add(nullptr); +} + +void OriginalRecording::resetChannels() +{ + fileArray.clear(); + spikeFileArray.clear(); +} + +void OriginalRecording::openFiles(File rootFolder, int experimentNumber, int recordingNumber) +{ + this->recordingNumber = recordingNumber; + this->experimentNumber = experimentNumber; + openFile(rootFolder,nullptr); + openMessageFile(rootFolder); + for (int i = 0; i < fileArray.size(); i++) + { + if (getChannel(i)->getRecordState()) + { + openFile(rootFolder,getChannel(i)); + } + } + for (int i = 0; i < spikeFileArray.size(); i++) + { + openSpikeFile(rootFolder,getSpikeElectrode(i)); + } + blockIndex = 0; +} + +void OriginalRecording::openFile(File rootFolder, Channel* ch) +{ + FILE* chFile; + bool isEvent; + String fullPath(rootFolder.getFullPathName() + rootFolder.separatorString); + + std::cout << "OPENING FILE: " << fullPath << std::endl; + + isEvent = (ch == nullptr) ? true : false; + if (isEvent) + { + if (experimentNumber > 1) + fullPath += "all_channels_" + String(experimentNumber) + ".events"; + else + fullPath += "all_channels.events"; + } + else + { + fullPath += getFileName(ch); + } + + File f = File(fullPath); + + bool fileExists = f.exists(); + + diskWriteLock.enter(); + + chFile = fopen(fullPath.toUTF8(), "ab"); + + if (!fileExists) + { + // create and write header + std::cout << "Writing header." << std::endl; + String header = generateHeader(ch); + //std::cout << header << std::endl; + std::cout << "File ID: " << chFile << ", number of bytes: " << header.getNumBytesAsUTF8() << std::endl; + + + fwrite(header.toUTF8(), 1, header.getNumBytesAsUTF8(), chFile); + + std::cout << "Wrote header." << std::endl; + + std::cout << "Block index: " << blockIndex << std::endl; + + } + else + { + std::cout << "File already exists, just opening." << std::endl; + } + + diskWriteLock.exit(); + + if (isEvent) + eventFile = chFile; + else + fileArray.set(ch->recordIndex,chFile); + +} + +void OriginalRecording::openSpikeFile(File rootFolder, SpikeRecordInfo* elec) +{ + + FILE* spFile; + String fullPath(rootFolder.getFullPathName() + rootFolder.separatorString); + fullPath += elec->name.removeCharacters(" "); + + if (experimentNumber > 1) + { + fullPath += "_" + String(experimentNumber); + } + + fullPath += ".spikes"; + + std::cout << "OPENING FILE: " << fullPath << std::endl; + + File f = File(fullPath); + + bool fileExists = f.exists(); + + diskWriteLock.enter(); + + spFile = fopen(fullPath.toUTF8(),"ab"); + + if (!fileExists) + { + String header = generateSpikeHeader(elec); + fwrite(header.toUTF8(), 1, header.getNumBytesAsUTF8(), spFile); + } + diskWriteLock.exit(); + spikeFileArray.set(elec->recordIndex,spFile); + +} + +void OriginalRecording::openMessageFile(File rootFolder) +{ + FILE* mFile; + String fullPath(rootFolder.getFullPathName() + rootFolder.separatorString); + fullPath += "messages.events"; + + std::cout << "OPENING FILE: " << fullPath << std::endl; + + File f = File(fullPath); + + bool fileExists = f.exists(); + + diskWriteLock.enter(); + + mFile = fopen(fullPath.toUTF8(),"ab"); + + //If this file needs a header, it goes here + + diskWriteLock.exit(); + messageFile = mFile; + +} + +String OriginalRecording::getFileName(Channel* ch) +{ + String filename; + + filename += ch->nodeId; + filename += "_"; + filename += ch->name; + + if (experimentNumber > 1) + { + filename += "_" + String(experimentNumber); + } + + if (separateFiles) + { + filename += "_"; + filename += recordingNumber; + } + filename += ".continuous"; + + return filename; +} + +String OriginalRecording::generateHeader(Channel* ch) +{ + + String header = "header.format = 'Open Ephys Data Format'; \n"; + + header += "header.version = 0.4; \n"; + header += "header.header_bytes = "; + header += String(HEADER_SIZE); + header += ";\n"; + + if (ch == nullptr) + { + header += "header.description = 'each record contains one 64-bit timestamp, one 16-bit sample position, one uint8 event type, one uint8 processor ID, one uint8 event ID, one uint8 event channel, and one uint16 recordingNumber'; \n"; + + } + else + { + header += "header.description = 'each record contains one 64-bit timestamp, one 16-bit sample count (N), 1 uint16 recordingNumber, N 16-bit samples, and one 10-byte record marker (0 1 2 3 4 5 6 7 8 255)'; \n"; + } + + + header += "header.date_created = '"; + header += generateDateString(); + header += "';\n"; + + header += "header.channel = '"; + header += (ch != nullptr) ? ch->name : "Events"; + header += "';\n"; + + if (ch == nullptr) + { + + header += "header.channelType = 'Event';\n"; + } + else + { + header += "header.channelType = 'Continuous';\n"; + } + + header += "header.sampleRate = "; + // all channels need to have the same sample rate under the current scheme + header += String(getChannel(0)->sampleRate); + header += ";\n"; + header += "header.blockLength = "; + header += BLOCK_LENGTH; + header += ";\n"; + header += "header.bufferSize = "; + header += getAudioComponent()->getBufferSize(); + header += ";\n"; + header += "header.bitVolts = "; + header += (ch != nullptr) ? String(ch->bitVolts) : "1"; + header += ";\n"; + + header = header.paddedRight(' ', HEADER_SIZE); + + //std::cout << header << std::endl; + + return header; + +} + +String OriginalRecording::generateSpikeHeader(SpikeRecordInfo* elec) +{ + String header = "header.format = 'Open Ephys Data Format'; \n"; + header += "header.version = 0.4; \n"; + header += "header.header_bytes = "; + header += String(HEADER_SIZE); + header += ";\n"; + + header += "header.description = 'Each record contains 1 uint8 eventType, 1 uint64 timestamp, 1 uint16 electrodeID, 1 uint16 numChannels (n), 1 uint16 numSamples (m), n*m uint16 samples, n uint16 channelGains, n uint16 thresholds, and 1 uint16 recordingNumber'; \n"; + + header += "header.date_created = '"; + header += generateDateString(); + header += "';\n"; + + header += "header.electrode = '"; + header += elec->name; + header += "';\n"; + + header += "header.num_channels = "; + header += elec->numChannels; + header += ";\n"; + + header += "header.sampleRate = "; + header += String(elec->sampleRate); + header += ";\n"; + + header = header.paddedRight(' ', HEADER_SIZE); + + //std::cout << header << std::endl; + + return header; +} + +void OriginalRecording::writeEvent(int eventType, MidiMessage& event, int samplePosition) +{ + if (eventType == GenericProcessor::TTL) + writeTTLEvent(event,samplePosition); + else if (eventType == GenericProcessor::MESSAGE) + writeMessage(event,samplePosition); +} + +void OriginalRecording::writeMessage(MidiMessage& event, int samplePosition) +{ + if (messageFile == nullptr) + return; + uint64 samplePos = (uint64) samplePosition; + + int64 eventTimestamp = timestamp + samplePos; + + int msgLength = event.getRawDataSize() - 5; + const char* dataptr = (const char*)event.getRawData() + 4; + + String timestampText(eventTimestamp); + + diskWriteLock.enter(); + fwrite(timestampText.toUTF8(),1,timestampText.length(),messageFile); + fwrite(" ",1,1,messageFile); + fwrite(dataptr,1,msgLength,messageFile); + fwrite("\n",1,1,messageFile); + diskWriteLock.exit(); + +} + +void OriginalRecording::writeTTLEvent(MidiMessage& event, int samplePosition) +{ + // find file and write samples to disk + // std::cout << "Received event!" << std::endl; + + if (eventFile == nullptr) + return; + + const uint8* dataptr = event.getRawData(); + + uint64 samplePos = (uint64) samplePosition; + + int64 eventTimestamp = timestamp + samplePos; // add the sample position to the buffer timestamp + + diskWriteLock.enter(); + + fwrite(&eventTimestamp, // ptr + 8, // size of each element + 1, // count + eventFile); // ptr to FILE object + + fwrite(&samplePos, // ptr + 2, // size of each element + 1, // count + eventFile); // ptr to FILE object + + // write 1st four bytes of event (type, nodeId, eventId, eventChannel) + fwrite(dataptr, 1, 4, eventFile); + + // write recording number + fwrite(&recordingNumber, // ptr + 2, // size of each element + 1, // count + eventFile); // ptr to FILE object + + diskWriteLock.exit(); +} + +void OriginalRecording::writeData(AudioSampleBuffer& buffer, int nSamples) +{ + int samplesWritten = 0; + + while (samplesWritten < nSamples) // there are still unwritten samples in the buffer + { + + int numSamplesToWrite = nSamples - samplesWritten; // samples remaining in the buffer + + if (blockIndex + numSamplesToWrite < BLOCK_LENGTH) // we still have space in this block + { + for (int i = 0; i < buffer.getNumChannels(); i++) + { + + if (getChannel(i)->getRecordState()) + { + // write buffer to disk! + writeContinuousBuffer(buffer.getReadPointer(i,samplesWritten), + numSamplesToWrite, + i); + + + } + } + + // update our variables + samplesWritten += numSamplesToWrite; + timestamp += numSamplesToWrite; + blockIndex += numSamplesToWrite; + + } + else // there's not enough space left in this block for all remaining samples + { + + numSamplesToWrite = BLOCK_LENGTH - blockIndex; + + for (int i = 0; i < buffer.getNumChannels(); i++) + { + + if (getChannel(i)->getRecordState()) + { + // write buffer to disk! + writeContinuousBuffer(buffer.getReadPointer(i,samplesWritten), + numSamplesToWrite, + i); + + //std::cout << "Record channel " << i << std::endl; + } + } + + // update our variables + samplesWritten += numSamplesToWrite; + timestamp += numSamplesToWrite; + blockIndex = 0; // back to the beginning of the block + + } + } +} + +void OriginalRecording::writeContinuousBuffer(const float* data, int nSamples, int channel) +{ + // check to see if the file exists + if (fileArray[channel] == nullptr) + return; + + // scale the data back into the range of int16 + float scaleFactor = float(0x7fff) * getChannel(channel)->bitVolts; + for (int n = 0; n < nSamples; n++) + { + *(continuousDataFloatBuffer+n) = *(data+n) / scaleFactor; + } + AudioDataConverters::convertFloatToInt16BE(continuousDataFloatBuffer, continuousDataIntegerBuffer, nSamples); + + if (blockIndex == 0) + { + writeTimestampAndSampleCount(fileArray[channel]); + } + + diskWriteLock.enter(); + + size_t count = fwrite(continuousDataIntegerBuffer, // ptr + 2, // size of each element + nSamples, // count + fileArray[channel]); // ptr to FILE object + + jassert(count == nSamples); // make sure all the data was written + + diskWriteLock.exit(); + + if (blockIndex + nSamples == BLOCK_LENGTH) + { + writeRecordMarker(fileArray[channel]); + } +} + +void OriginalRecording::writeTimestampAndSampleCount(FILE* file) +{ + diskWriteLock.enter(); + + uint16 samps = BLOCK_LENGTH; + + fwrite(×tamp, // ptr + 8, // size of each element + 1, // count + file); // ptr to FILE object + + fwrite(&samps, // ptr + 2, // size of each element + 1, // count + file); // ptr to FILE object + + fwrite(&recordingNumber, // ptr + 2, // size of each element + 1, // count + file); // ptr to FILE object + + diskWriteLock.exit(); +} + +void OriginalRecording::writeRecordMarker(FILE* file) +{ + // write a 10-byte marker indicating the end of a record + + diskWriteLock.enter(); + fwrite(recordMarker, // ptr + 1, // size of each element + 10, // count + file); // ptr to FILE object + + diskWriteLock.exit(); +} + +void OriginalRecording::closeFiles() +{ + for (int i = 0; i < fileArray.size(); i++) + { + if (fileArray[i] != nullptr) + { + if (blockIndex < BLOCK_LENGTH) + { + // fill out the rest of the current buffer + writeContinuousBuffer(zeroBuffer.getReadPointer(0), BLOCK_LENGTH - blockIndex, i); + diskWriteLock.enter(); + fclose(fileArray[i]); + fileArray.set(i,nullptr); + diskWriteLock.exit(); + } + } + } + for (int i = 0; i < spikeFileArray.size(); i++) + { + if (spikeFileArray[i] != nullptr) + { + diskWriteLock.enter(); + fclose(spikeFileArray[i]); + spikeFileArray.set(i,nullptr); + diskWriteLock.exit(); + } + } + if (eventFile != nullptr) + { + diskWriteLock.enter(); + fclose(eventFile); + eventFile = nullptr; + diskWriteLock.exit(); + } + if (messageFile != nullptr) + { + diskWriteLock.enter(); + fclose(messageFile); + messageFile = nullptr; + diskWriteLock.exit(); + } + blockIndex = 0; +} + +void OriginalRecording::updateTimeStamp(int64 timestamp) +{ + this->timestamp = timestamp; +} + +void OriginalRecording::writeSpike(const SpikeObject& spike, int electrodeIndex) +{ + uint8_t spikeBuffer[MAX_SPIKE_BUFFER_LEN]; + + if (spikeFileArray[electrodeIndex] == nullptr) + return; + + packSpike(&spike, spikeBuffer, MAX_SPIKE_BUFFER_LEN); + + int totalBytes = spike.nSamples * spike.nChannels * 2 + // account for samples + spike.nChannels * 4 + // acount for gain + spike.nChannels * 2 + // account for thresholds + SPIKE_METADATA_SIZE; // 42, from SpikeObject.h + + + // format: + // 1 byte of event type (always = 4 for spikes) + // 8 bytes for 64-bit timestamp + // 2 bytes for 16-bit electrode ID + // 2 bytes for 16-bit number of channels (n) + // 2 bytes for 16-bit number of samples (m) + // 2*n*m bytes for 16-bit samples + // 2*n bytes for 16-bit gains + // 2*n bytes for 16-bit thresholds + + // const MessageManagerLock mmLock; + + diskWriteLock.enter(); + + fwrite(spikeBuffer, 1, totalBytes, spikeFileArray[electrodeIndex]); + + fwrite(&recordingNumber, // ptr + 2, // size of each element + 1, // count + spikeFileArray[electrodeIndex]); // ptr to FILE object + + diskWriteLock.exit(); +} + +void OriginalRecording::setParameter(EngineParameter& parameter) +{ + boolParameter(0, separateFiles); +} + +RecordEngineManager* OriginalRecording::getEngineManager() +{ + RecordEngineManager* man = new RecordEngineManager("OPENEPHYS","Open Ephys",nullptr); + EngineParameter* param; + param = new EngineParameter(EngineParameter::BOOL,0,"Separate Files",false); + man->addParameter(param); + return man; +} \ No newline at end of file diff --git a/Source/Processors/RecordNode/OriginalRecording.h b/Source/Processors/RecordNode/OriginalRecording.h new file mode 100644 index 0000000000000000000000000000000000000000..97c63b915b5fe172dc6f287db16408dfbb01c8c5 --- /dev/null +++ b/Source/Processors/RecordNode/OriginalRecording.h @@ -0,0 +1,100 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Florian Franzen + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + */ + +#ifndef ORIGINALRECORDING_H_INCLUDED +#define ORIGINALRECORDING_H_INCLUDED + +#include "../../../JuceLibraryCode/JuceHeader.h" + +#include "RecordEngine.h" +#include <stdio.h> + +#define HEADER_SIZE 1024 +#define BLOCK_LENGTH 1024 + +class OriginalRecording : public RecordEngine +{ +public: + OriginalRecording(); + ~OriginalRecording(); + + void setParameter(EngineParameter& parameter); + String getEngineID(); + void openFiles(File rootFolder, int experimentNumber, int recordingNumber); + void closeFiles(); + void writeData(AudioSampleBuffer& buffer, int nSamples); + void writeEvent(int eventType, MidiMessage& event, int samplePosition); + void addChannel(int index, Channel* chan); + void resetChannels(); + void updateTimeStamp(int64 timestamp); + void addSpikeElectrode(int index, SpikeRecordInfo* elec); + void writeSpike(const SpikeObject& spike, int electrodeIndex); + + static RecordEngineManager* getEngineManager(); + +private: + String getFileName(Channel* ch); + void openFile(File rootFolder, Channel* ch); + String generateHeader(Channel* ch); + void writeContinuousBuffer(const float* data, int nSamples, int channel); + void writeTimestampAndSampleCount(FILE* file); + void writeRecordMarker(FILE* file); + + void openSpikeFile(File rootFolder, SpikeRecordInfo* elec); + String generateSpikeHeader(SpikeRecordInfo* elec); + + void openMessageFile(File rootFolder); + void writeTTLEvent(MidiMessage& event, int samplePosition); + void writeMessage(MidiMessage& event, int samplePosition); + + bool separateFiles; + int blockIndex; + int recordingNumber; + int experimentNumber; + + /** Holds data that has been converted from float to int16 before + saving. + */ + int16* continuousDataIntegerBuffer; + + /** Holds data that has been converted from float to int16 before + saving. + */ + float* continuousDataFloatBuffer; + + /** Used to indicate the end of each record */ + char* recordMarker; + + AudioSampleBuffer zeroBuffer; + int64 timestamp; + + FILE* eventFile; + FILE* messageFile; + Array<FILE*> fileArray; + Array<FILE*> spikeFileArray; + CriticalSection diskWriteLock; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(OriginalRecording); +}; + +#endif // ORIGINALRECORDING_H_INCLUDED diff --git a/Source/Processors/RecordNode/RecordEngine.cpp b/Source/Processors/RecordNode/RecordEngine.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3d187092502ecfb2dc987d5ff8c55b1147424de1 --- /dev/null +++ b/Source/Processors/RecordNode/RecordEngine.cpp @@ -0,0 +1,260 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Florian Franzen + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + */ + +#include "RecordEngine.h" +#include "RecordNode.h" +#include "../ProcessorGraph/ProcessorGraph.h" + +#include "EngineConfigWindow.h" +#include "HDF5Recording.h" +#include "OriginalRecording.h" + +RecordEngine::RecordEngine() + : manager(nullptr) +{ +} + +RecordEngine::~RecordEngine() {} + +void RecordEngine::setParameter(EngineParameter& parameter) {} + +void RecordEngine::resetChannels() {} + +void RecordEngine::registerProcessor(GenericProcessor* processor) {} + +Channel* RecordEngine::getChannel(int index) +{ + return getProcessorGraph()->getRecordNode()->getDataChannel(index); +} + +String RecordEngine::generateDateString() +{ + return getProcessorGraph()->getRecordNode()->generateDateString(); +} + +SpikeRecordInfo* RecordEngine::getSpikeElectrode(int index) +{ + return getProcessorGraph()->getRecordNode()->getSpikeElectrode(index); +} + +void RecordEngine::updateTimeStamp(int64 timestamp) {} + +void RecordEngine::registerSpikeSource(GenericProcessor* processor) {} + +void RecordEngine::startAcquisition() {} + +void RecordEngine::directoryChanged() {} + +void RecordEngine::registerManager(RecordEngineManager* recordManager) +{ + manager = recordManager; +} + +void RecordEngine::configureEngine() +{ + if (!manager) + return; + + for (int i=0; i < manager->getNumParameters(); i++) + setParameter(manager->getParameter(i)); +} + +//Manager + +EngineParameter::EngineParameter(EngineParameter::EngineParameterType paramType, int paramId, String paramName, var defaultValue, var min, var max) + : type(paramType), name(paramName), id(paramId), def(defaultValue) +{ + if (paramType == BOOL && defaultValue.isBool()) + boolParam.value = defaultValue; + else if (paramType == INT) + { + intParam.value = defaultValue; + intParam.min= min; + intParam.max= max; + } + else if (paramType == FLOAT) + { + floatParam.value = defaultValue; + floatParam.min= min; + floatParam.max= max; + } + else if (paramType == STR) + strParam.value = defaultValue; +} + + +void EngineParameter::restoreDefault() +{ + switch (type) + { + case INT: + intParam.value = def; + break; + case FLOAT: + floatParam.value = def; + break; + case BOOL: + boolParam.value = def; + break; + case STR: + strParam.value = def; + } +} + +RecordEngineManager::RecordEngineManager(String engineID, String engineName, EngineCreator creatorFunc) : + creator(creatorFunc), id(engineID), name(engineName), window(nullptr) +{ +} + +RecordEngineManager::~RecordEngineManager() +{ +} + +void RecordEngineManager::addParameter(EngineParameter* param) +{ + parameters.add(param); +} + +RecordEngine* RecordEngineManager::instantiateEngine() +{ + if (creator) + return creator(); + + //Built-in engines + if (id == "KWIK") + return new HDF5Recording(); + + if (id == "OPENEPHYS") + return new OriginalRecording(); + + return nullptr; +} + +int RecordEngineManager::getNumParameters() +{ + return parameters.size(); +} + +EngineParameter& RecordEngineManager::getParameter(int index) +{ + return *(parameters[index]); +} + +String RecordEngineManager::getName() +{ + return name; +} + +String RecordEngineManager::getID() +{ + return id; +} + +bool RecordEngineManager::isWindowOpen() +{ + return window ? true : false; +} + +void RecordEngineManager::toggleConfigWindow() +{ + if (window) + { + window->saveParameters(); + window->setVisible(false); + window = nullptr; + } + else + { + window = new EngineConfigWindow(this); + window->setVisible(true); + } +} + +void RecordEngineManager::saveParametersToXml(XmlElement* xml) +{ + for (int i=0; i < parameters.size(); i++) + { + XmlElement* param = xml->createNewChildElement("PARAMETER"); + param->setAttribute("id",parameters[i]->id); + switch (parameters[i]->type) + { + case EngineParameter::BOOL: + param->setAttribute("type","bool"); + param->setAttribute("value",parameters[i]->boolParam.value); + break; + case EngineParameter::INT: + param->setAttribute("type","int"); + param->setAttribute("value",parameters[i]->intParam.value); + break; + case EngineParameter::FLOAT: + param->setAttribute("type","float"); + param->setAttribute("value",parameters[i]->floatParam.value); + break; + case EngineParameter::STR: + param->setAttribute("type","string"); + param->setAttribute("value",parameters[i]->strParam.value); + break; + } + } +} + +void RecordEngineManager::loadParametersFromXml(XmlElement* xml) +{ + for (int i=0; i < parameters.size(); i++) + { + forEachXmlChildElementWithTagName(*xml,xmlNode,"PARAMETER") + { + if (xmlNode->getIntAttribute("id") == parameters[i]->id) + { + if ((xmlNode->getStringAttribute("type") == "bool") && (parameters[i]->type == EngineParameter::BOOL)) + parameters[i]->boolParam.value = xmlNode->getBoolAttribute("value"); + else if ((xmlNode->getStringAttribute("type") == "int") && (parameters[i]->type == EngineParameter::INT)) + parameters[i]->intParam.value = xmlNode->getIntAttribute("value"); + else if ((xmlNode->getStringAttribute("type") == "float") && (parameters[i]->type == EngineParameter::FLOAT)) + parameters[i]->floatParam.value = xmlNode->getDoubleAttribute("value"); + else if ((xmlNode->getStringAttribute("type") == "string") && (parameters[i]->type == EngineParameter::STR)) + parameters[i]->strParam.value = xmlNode->getStringAttribute("value"); + } + } + } +} + +int RecordEngineManager::getNumOfBuiltInEngines() +{ + return 2; +} + +RecordEngineManager* RecordEngineManager::createBuiltInEngineManager(int index) +{ + switch (index) + { + case 0: + return OriginalRecording::getEngineManager(); + break; + case 1: + return HDF5Recording::getEngineManager(); + break; + default: + return nullptr; + } +} \ No newline at end of file diff --git a/Source/Processors/RecordNode/RecordEngine.h b/Source/Processors/RecordNode/RecordEngine.h new file mode 100644 index 0000000000000000000000000000000000000000..2afd58d39fe5dfa2d1b1d0e7ba28d34d444e9343 --- /dev/null +++ b/Source/Processors/RecordNode/RecordEngine.h @@ -0,0 +1,239 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Florian Franzen + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + */ + +#ifndef RECORDENGINE_H_INCLUDED +#define RECORDENGINE_H_INCLUDED + +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../Channel/Channel.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "../Visualization/SpikeObject.h" + +//Handy macros for setParameter +#define boolParameter(i,v) if ((parameter.id == i) && (parameter.type == EngineParameter::BOOL)) \ + v = parameter.boolParam.value +#define intParameter(i,v) if ((parameter.id == i) && (parameter.type == EngineParameter::INT)) \ + v = parameter.intParam.value +#define floatParameter(i,v) if ((parameter.id == i) && (parameter.type == EngineParameter::FLOAT)) \ + v = parameter.floatParam.value +#define strParameter(i,v) if ((parameter.id == i) && (parameter.type == EngineParameter::STR)) \ + v = parameter.strParam.value + +struct SpikeRecordInfo +{ + String name; + int numChannels; + int sampleRate; + + int recordIndex; +}; + +class EngineParameter; +class RecordNode; +class RecordEngineManager; + +class RecordEngine : public AccessClass +{ +public: + RecordEngine(); + ~RecordEngine(); + virtual String getEngineID() =0; + + /** All the public methods (except registerManager) are called by RecordNode: + When acquisition starts (in the specified order): + 1-resetChannels + 2-registerProcessor, addChannel, registerSpikeSource, addspikeelectrode + 3-configureEngine (which calls setParameter) + 3-startAcquisition + When recording starts (in the specified order): + 1-directoryChanged (if needed) + 2-openFiles + During recording: + writeData, writeEvent, writeSpike, updateTimeStamp + When recording stops: + closeFiles + */ + + /** Called for registering parameters + */ + virtual void setParameter(EngineParameter& parameter); + + /** Called when recording starts to open all needed files + */ + virtual void openFiles(File rootFolder, int experimentNumber, int recordingNumber) = 0; + + /** Called when recording stops to close all files + and do all the necessary cleanups + */ + virtual void closeFiles() = 0; + + /** Write continuous data. + This method gets the full data buffer, it must query getRecordState for + each registered channel to determine which channels to actually write to disk + */ + virtual void writeData(AudioSampleBuffer& buffer, int nSamples) = 0; + + /** Write a single event to disk. + */ + virtual void writeEvent(int eventType, MidiMessage& event, int samplePosition) = 0; + + /** Called when acquisition starts once for each processor that might record continuous data + */ + virtual void registerProcessor(GenericProcessor* processor); + + /** Called after registerProcessor, once for each output + channel of the processor + */ + virtual void addChannel(int index, Channel* chan) = 0; + + /** Called when acquisition starts once for each processor that might record spikes + */ + virtual void registerSpikeSource(GenericProcessor* processor); + + /** Called after registerSpikesource, once for each channel group + */ + virtual void addSpikeElectrode(int index, SpikeRecordInfo* elec) = 0; + + /** Write a spike to disk + */ + virtual void writeSpike(const SpikeObject& spike, int electrodeIndex) = 0; + + /** Called when a new acquisition starts, to clean all channel data + before registering the processors + */ + virtual void resetChannels(); + + /** Called every time a new timestamp event is received + */ + virtual void updateTimeStamp(int64 timestamp); + + /** Called after all channels and spike groups have been registered, + just before acquisition starts + */ + virtual void startAcquisition(); + + /** Called when the recording directory changes during an acquisition + */ + virtual void directoryChanged(); + + + void registerManager(RecordEngineManager* engineManager); + void configureEngine(); + +protected: + /** Functions to access RecordNode arrays and utilities + */ + + /** Gets the specified channel from the channel array stored in RecordNode + */ + Channel* getChannel(int index); + + /** Gets the specified channel group info structure from the array stored in RecordNode + */ + SpikeRecordInfo* getSpikeElectrode(int index); + + /** Generate a Matlab-compatible datestring + */ + String generateDateString(); + +private: + RecordEngineManager* manager; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(RecordEngine); +}; + +typedef RecordEngine* (*EngineCreator)(); + +struct EngineParameter +{ +public: + enum EngineParameterType {STR, INT, FLOAT, BOOL}; + EngineParameter(EngineParameterType paramType, int paramId, String paramName, var defaultValue, var min = 0, var max = 100); + void restoreDefault(); + + union + { + struct + { + int min; + int max; + int value; + } intParam; + struct + { + float min; + float max; + float value; + } floatParam; + struct + { + bool value; + } boolParam; + }; + //Strings can't be inside an union. This means wasting a bit of memory, but adds more safety than using char* + struct + { + String value; + } strParam; + + const EngineParameterType type; + const String name; + const int id; +private: + var def; +}; + +class EngineConfigWindow; +class RecordEngineManager +{ +public: + RecordEngineManager(String engineID, String engineName, EngineCreator creatorFunc); + ~RecordEngineManager(); + void addParameter(EngineParameter* param); + + RecordEngine* instantiateEngine(); + void toggleConfigWindow(); + bool isWindowOpen(); + + void saveParametersToXml(XmlElement* xml); + void loadParametersFromXml(XmlElement* xml); + + EngineParameter& getParameter(int index); + int getNumParameters(); + + String getID(); + String getName(); + + static int getNumOfBuiltInEngines(); + static RecordEngineManager* createBuiltInEngineManager(int index); + +private: + EngineCreator creator; + String id; + String name; + OwnedArray<EngineParameter> parameters; + ScopedPointer<EngineConfigWindow> window; + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(RecordEngineManager); +}; + +#endif // RECORDENGINE_H_INCLUDED diff --git a/Source/Processors/RecordNode/RecordNode.cpp b/Source/Processors/RecordNode/RecordNode.cpp new file mode 100755 index 0000000000000000000000000000000000000000..be85f4f21a78aa61205be4080daec55b662431cd --- /dev/null +++ b/Source/Processors/RecordNode/RecordNode.cpp @@ -0,0 +1,519 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2014 Open Ephys + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include "RecordNode.h" +#include "../ProcessorGraph/ProcessorGraph.h" +#include "../../UI/EditorViewport.h" +#include "../../UI/ControlPanel.h" + +#define EVERY_ENGINE for(int eng = 0; eng < engineArray.size(); eng++) engineArray[eng] + + + +#include "../Channel/Channel.h" + +RecordNode::RecordNode() + : GenericProcessor("Record Node"), + newDirectoryNeeded(true), timestamp(0) +{ + + isProcessing = false; + isRecording = false; + allFilesOpened = false; + signalFilesShouldClose = false; + + signalFilesShouldClose = false; + + settings.numInputs = 2048; + settings.numOutputs = 0; + + eventChannel = new Channel(this, 0); + eventChannel->setType(EVENT_CHANNEL); + recordingNumber = 0; + + + spikeElectrodeIndex = 0; + + experimentNumber = 0; + hasRecorded = false; + + // 128 inputs, 0 outputs + setPlayConfigDetails(getNumInputs(),getNumOutputs(),44100.0,128); + +} + + +RecordNode::~RecordNode() +{ + +} + +void RecordNode::setChannel(Channel* ch) +{ + + int channelNum = channelPointers.indexOf(ch); + + std::cout << "Record node setting channel to " << channelNum << std::endl; + + setCurrentChannel(channelNum); + +} + +void RecordNode::setChannelStatus(Channel* ch, bool status) +{ + + //std::cout << "Setting channel status!" << std::endl; + setChannel(ch); + + if (status) + setParameter(2, 1.0f); + else + setParameter(2, 0.0f); + +} + + +void RecordNode::resetConnections() +{ + //std::cout << "Resetting connections" << std::endl; + nextAvailableChannel = 0; + wasConnected = false; + spikeElectrodeIndex = 0; + + channelPointers.clear(); + eventChannelPointers.clear(); + spikeElectrodePointers.clear(); + + EVERY_ENGINE->resetChannels(); + +} + +void RecordNode::filenameComponentChanged(FilenameComponent* fnc) +{ + + dataDirectory = fnc->getCurrentFile(); + + +} + +void RecordNode::updateChannelName(int channelIndex, String newname) +{ + /* if (channelPointers[channelIndex] != nullptr && channelIndex < channelPointers.size()) + { + channelPointers[channelIndex]->name = newname; + updateFileName(channelPointers[channelIndex]); + } else*/ + { + // keep name and do the change when the pointer actually points to something... ? + modifiedChannelNames.add(newname); + modifiedChannelInd.add(channelIndex); + } +} + +void RecordNode::getChannelNamesAndRecordingStatus(StringArray& names, Array<bool>& recording) +{ + names.clear(); + recording.clear(); + + for (int k = 0; k < channelPointers.size(); k++) + { + if (channelPointers[k] == nullptr) + { + names.add("not allocated"); + recording.add(false); + + } + else + { + Channel* ch = channelPointers[k]; + String n = ch->name; + names.add(n); + recording.add(channelPointers[k]->getRecordState()); + } + } +} + +void RecordNode::addInputChannel(GenericProcessor* sourceNode, int chan) +{ + + if (chan != getProcessorGraph()->midiChannelIndex) + { + + int channelIndex = getNextChannel(false); + + channelPointers.add(sourceNode->channels[chan]); + setPlayConfigDetails(channelIndex+1,0,44100.0,128); + + // std::cout << channelIndex << std::endl; + + channelPointers[channelIndex]->recordIndex = channelIndex; + + EVERY_ENGINE->addChannel(channelIndex,channelPointers[channelIndex]); + + } + else + { + + for (int n = 0; n < sourceNode->eventChannels.size(); n++) + { + + eventChannelPointers.add(sourceNode->eventChannels[n]); + + } + + } + +} + +void RecordNode::updateTrialNumber() +{ + trialNum++; +} + +void RecordNode::appendTrialNumber(bool t) +{ + appendTrialNum = t; +} + + +void RecordNode::createNewDirectory() +{ + std::cout << "Creating new directory." << std::endl; + + rootFolder = File(dataDirectory.getFullPathName() + File::separator + generateDirectoryName()); + newDirectoryNeeded = false; + +} + +String RecordNode::generateDirectoryName() +{ + Time calendar = Time::getCurrentTime(); + + Array<int> t; + t.add(calendar.getYear()); + t.add(calendar.getMonth()+1); // January = 0 + t.add(calendar.getDayOfMonth()); + t.add(calendar.getHours()); + t.add(calendar.getMinutes()); + t.add(calendar.getSeconds()); + + String filename = getControlPanel()->getTextToPrepend(); + + String datestring = ""; + + for (int n = 0; n < t.size(); n++) + { + if (t[n] < 10) + datestring += "0"; + + datestring += t[n]; + + if (n == 2) + datestring += "_"; + else if (n < 5) + datestring += "-"; + } + + getControlPanel()->setDateText(datestring); + + filename += datestring; + filename += getControlPanel()->getTextToAppend(); + + return filename; + +} + +String RecordNode::generateDateString() +{ + Time calendar = Time::getCurrentTime(); + + String datestring; + + datestring += String(calendar.getDayOfMonth()); + datestring += "-"; + datestring += calendar.getMonthName(true); + datestring += "-"; + datestring += String(calendar.getYear()); + datestring += " "; + + int hrs, mins, secs; + hrs = calendar.getHours(); + mins = calendar.getMinutes(); + secs = calendar.getSeconds(); + + datestring += hrs; + + if (mins < 10) + datestring += 0; + + datestring += mins; + + if (secs < 0) + datestring += 0; + + datestring += secs; + + return datestring; + +} + + +void RecordNode::setParameter(int parameterIndex, float newValue) +{ + //editor->updateParameterButtons(parameterIndex); + + // 0 = stop recording + // 1 = start recording + // 2 = toggle individual channel (0.0f = OFF, anything else = ON) + + if (parameterIndex == 1) + { + + isRecording = true; + hasRecorded = true; + // std::cout << "START RECORDING." << std::endl; + + if (newDirectoryNeeded) + { + createNewDirectory(); + recordingNumber = 0; + experimentNumber = 1; + EVERY_ENGINE->directoryChanged(); + } + else + { + recordingNumber++; // increment recording number within this directory + } + + if (!rootFolder.exists()) + { + rootFolder.createDirectory(); + String settingsFileName = rootFolder.getFullPathName() + File::separator + "settings.xml"; + getEditorViewport()->saveState(File(settingsFileName)); + } + + EVERY_ENGINE->openFiles(rootFolder, experimentNumber, recordingNumber); + + allFilesOpened = true; + + } + else if (parameterIndex == 0) + { + + + // std::cout << "STOP RECORDING." << std::endl; + + if (isRecording) + { + + // close necessary files + signalFilesShouldClose = true; + + } + + isRecording = false; + + + } + else if (parameterIndex == 2) + { + + if (isProcessing) + { + + std::cout << "Toggling channel " << currentChannel << std::endl; + + if (isRecording) + { + //Toggling channels while recording isn't allowed. Code shouldn't reach here. + //In case it does, display an error and exit. + sendActionMessage("Toggling record channels while recording is not allowed"); + std::cout << "ERROR: Wrong code section reached\n Toggling record channels while recording is not allowed." << std::endl; + return; + } + + if (newValue == 0.0f) + { + channelPointers[currentChannel]->setRecordState(false); + } + else + { + channelPointers[currentChannel]->setRecordState(true); + } + } + } +} + +void RecordNode::closeAllFiles() +{ + if (allFilesOpened) + { + EVERY_ENGINE->closeFiles(); + allFilesOpened = false; + } +} + +bool RecordNode::enable() +{ + if (hasRecorded) + { + hasRecorded = false; + experimentNumber++; + } + + //When starting a recording, if a new directory is needed it gets rewritten. Else is incremented by one. + recordingNumber = -1; + EVERY_ENGINE->configureEngine(); + EVERY_ENGINE->startAcquisition(); + isProcessing = true; + return true; +} + + +bool RecordNode::disable() +{ + // close files if necessary + setParameter(0, 10.0f); + + if (isProcessing) + closeAllFiles(); + + isProcessing = false; + + return true; +} + +float RecordNode::getFreeSpace() +{ + return 1.0f - float(dataDirectory.getBytesFreeOnVolume())/float(dataDirectory.getVolumeTotalSize()); +} + + +void RecordNode::handleEvent(int eventType, MidiMessage& event, int samplePosition) +{ + if ((eventType == TTL) || (eventType == MESSAGE)) + { + if (event.getNoteNumber() > 0) // processor ID > 0 + { + EVERY_ENGINE->writeEvent(eventType, event, samplePosition); + } + } + else if (eventType == TIMESTAMP) + { + const uint8* dataptr = event.getRawData(); + + // // double-check buffer contents:s + // std::cout << (int) *(dataptr + 11) << " " << + // (int) *(dataptr + 10) << " " << + // (int) *(dataptr + 9) << " " << + // (int) *(dataptr + 8) << " " << + // (int) *(dataptr + 7) << " " << + // (int) *(dataptr + 6) << " " << + // (int) *(dataptr + 5) << " " << + // (int) *(dataptr + 4) << std::endl; + + memcpy(×tamp, dataptr + 4, 8); // remember to skip first four bytes + EVERY_ENGINE->updateTimeStamp(timestamp); + } + else if (eventType == MESSAGE) + { + std::cout << "Received event!" << std::endl; + } + +} + +void RecordNode::process(AudioSampleBuffer& buffer, + MidiBuffer& events, + int& nSamples) +{ + + if (isRecording && allFilesOpened) + { + + // FIRST: cycle through events -- extract the TTLs and the timestamps + checkForEvents(events); + + // SECOND: write channel data + if (channelPointers.size() > 0) + { + EVERY_ENGINE->writeData(buffer,nSamples); + } + + // std::cout << nSamples << " " << samplesWritten << " " << blockIndex << std::endl; + + return; + + } + + // this is intended to prevent parameter changes from closing files + // before recording stops + if (signalFilesShouldClose) + { + closeAllFiles(); + signalFilesShouldClose = false; + } + +} + +void RecordNode::registerProcessor(GenericProcessor* sourceNode) +{ + EVERY_ENGINE->registerProcessor(sourceNode); +} + +Channel* RecordNode::getDataChannel(int index) +{ + return channelPointers[index]; +} + +void RecordNode::registerRecordEngine(RecordEngine* engine) +{ + engineArray.add(engine); +} + +void RecordNode::registerSpikeSource(GenericProcessor* processor) +{ + EVERY_ENGINE->registerSpikeSource(processor); +} + +int RecordNode::addSpikeElectrode(SpikeRecordInfo* elec) +{ + elec->recordIndex=spikeElectrodeIndex; + spikeElectrodePointers.add(elec); + EVERY_ENGINE->addSpikeElectrode(spikeElectrodeIndex,elec); + return spikeElectrodeIndex++; +} + +void RecordNode::writeSpike(SpikeObject& spike, int electrodeIndex) +{ + EVERY_ENGINE->writeSpike(spike,electrodeIndex); +} + +SpikeRecordInfo* RecordNode::getSpikeElectrode(int index) +{ + return spikeElectrodePointers[index]; +} + +void RecordNode::clearRecordEngines() +{ + engineArray.clear(); +} diff --git a/Source/Processors/RecordNode.h b/Source/Processors/RecordNode/RecordNode.h similarity index 72% rename from Source/Processors/RecordNode.h rename to Source/Processors/RecordNode/RecordNode.h index 39b3c1d031b7ebf0786b0f17c326c88745ed5a5d..446ba15968ced19e3c20a4330d1f07958c46da3e 100755 --- a/Source/Processors/RecordNode.h +++ b/Source/Processors/RecordNode/RecordNode.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -23,15 +23,16 @@ #ifndef __RECORDNODE_H_FB9B1CA7__ #define __RECORDNODE_H_FB9B1CA7__ - - -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" #include <stdio.h> #include <map> -#include "GenericProcessor.h" -#include "Channel.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "../Channel/Channel.h" +#include "RecordEngine.h" + + #define HEADER_SIZE 1024 #define BLOCK_LENGTH 1024 @@ -71,11 +72,26 @@ public: */ void setParameter(int parameterIndex, float newValue); + /** Called by the processor graph for each processor that could record data + */ + void registerProcessor(GenericProcessor* sourceNode); + /** Called by the processor graph for each recordable channel + */ void addInputChannel(GenericProcessor* sourceNode, int chan); bool enable(); bool disable(); + /** returns channel names and whether we record them */ + void getChannelNamesAndRecordingStatus(StringArray &names, Array<bool> &recording); + + /** update channel name */ + void updateChannelName(int channelIndex, String newname); + + /** Get channel stored in channelPointers array + */ + Channel* getDataChannel(int index); + /** Called by the ControlPanel to determine the amount of space left in the current dataDirectory. */ @@ -103,21 +119,40 @@ public: */ void createNewDirectory(); - /** Creates a new data file for each channel. - */ - void createNewFiles(); - - /** Creates a new data file for each channel. - */ - void appendTrialNumber(bool); - - void updateTrialNumber(); File getDataDirectory() { return rootFolder; } + void appendTrialNumber(bool); + + void updateTrialNumber(); + + /** Adds a Record Engine to use + */ + void registerRecordEngine(RecordEngine* engine); + + /** Clears the list of active Record Engines + */ + void clearRecordEngines(); + + /** Must be called by a spike recording source on the "enable" method + */ + void registerSpikeSource(GenericProcessor* processor); + + /** Registers an electrode group for spike recording + Must be called by a spike recording source on the "enable" method + after the call to registerSpikeSource + */ + int addSpikeElectrode(SpikeRecordInfo* elec); + + /** Called by a spike recording source to write a spike to file + */ + void writeSpike(SpikeObject& spike, int electrodeIndex); + + SpikeRecordInfo* getSpikeElectrode(int index); + /** Signals when to create a new data directory when recording starts.*/ bool newDirectoryNeeded; @@ -127,12 +162,6 @@ public: /** Generate a Matlab-compatible datestring */ String generateDateString(); - CriticalSection* getLock() - { - return &diskWriteLock; - } - - private: /** Keep the RecordNode informed of acquisition and record states. @@ -148,25 +177,11 @@ private: */ File rootFolder; - /** Holds data that has been converted from float to int16 before - saving. - */ - int16* continuousDataIntegerBuffer; - - /** Holds data that has been converted from float to int16 before - saving. - */ - float* continuousDataFloatBuffer; - - AudioSampleBuffer zeroBuffer; /** Integer timestamp saved for each buffer. */ int64 timestamp; - /** Integer to keep track of the number samples written in each block */ - int blockIndex; - /** Integer to keep track of number of recording sessions in the same file */ uint16 recordingNumber; @@ -174,12 +189,6 @@ private: */ Time timer; - /** Opens a single file */ - void openFile(Channel* ch); - - /** Closes a single file */ - void closeFile(Channel* ch); - /** Closes all open files after recording has finished. */ void closeAllFiles(); @@ -190,16 +199,17 @@ private: /** Pointers to all event channels */ Array<Channel*> eventChannelPointers; - /** Generates a header for a given channel */ - String generateHeader(Channel* ch); + OwnedArray<SpikeRecordInfo> spikeElectrodePointers; + + int spikeElectrodeIndex; + + int experimentNumber; + bool hasRecorded; /** Generates a default directory name, based on the current date and time */ String generateDirectoryName(); - /** Generate filename for a given channel */ - void updateFileName(Channel* ch); - /** Cycle through the event buffer, looking for data to save */ void handleEvent(int eventType, MidiMessage& event, int samplePos); @@ -222,9 +232,16 @@ private: CriticalSection diskWriteLock; + Array<String> modifiedChannelNames; + Array<int> modifiedChannelInd; + bool appendTrialNum; int trialNum; + /**RecordEngines loaded**/ + OwnedArray<RecordEngine> engineArray; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(RecordNode); }; diff --git a/Source/Processors/ReferenceNode.cpp b/Source/Processors/ReferenceNode/ReferenceNode.cpp similarity index 93% rename from Source/Processors/ReferenceNode.cpp rename to Source/Processors/ReferenceNode/ReferenceNode.cpp index fc87145ba62053a5b0a01cd9b4b6ef9d982d7011..b162d8b42d619a820491c8be70e5c6f9b4871da6 100644 --- a/Source/Processors/ReferenceNode.cpp +++ b/Source/Processors/ReferenceNode/ReferenceNode.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -23,7 +23,7 @@ #include <stdio.h> #include "ReferenceNode.h" -#include "Editors/ReferenceNodeEditor.h" +#include "ReferenceNodeEditor.h" diff --git a/Source/Processors/ReferenceNode.h b/Source/Processors/ReferenceNode/ReferenceNode.h similarity index 88% rename from Source/Processors/ReferenceNode.h rename to Source/Processors/ReferenceNode/ReferenceNode.h index 6f78e4196d08f8ff966a2e1d88aa754e576833c3..15038e72a5d824c7c2a9af0ccbbdb4c31d14f599 100644 --- a/Source/Processors/ReferenceNode.h +++ b/Source/Processors/ReferenceNode/ReferenceNode.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,9 +25,9 @@ #define __REFERENCENODE_H_786EA929__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" +#include "../GenericProcessor/GenericProcessor.h" /** diff --git a/Source/Processors/Editors/ReferenceNodeEditor.cpp b/Source/Processors/ReferenceNode/ReferenceNodeEditor.cpp similarity index 93% rename from Source/Processors/Editors/ReferenceNodeEditor.cpp rename to Source/Processors/ReferenceNode/ReferenceNodeEditor.cpp index 0dc80bff2ff439dbce5602cf82f9315cd75a6cf8..25054001c1b7bb6746648e3911703623663aa857 100644 --- a/Source/Processors/Editors/ReferenceNodeEditor.cpp +++ b/Source/Processors/ReferenceNode/ReferenceNodeEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -23,7 +23,7 @@ #include "ReferenceNodeEditor.h" -#include "../ReferenceNode.h" +#include "ReferenceNode.h" #include <stdio.h> diff --git a/Source/Processors/Editors/ReferenceNodeEditor.h b/Source/Processors/ReferenceNode/ReferenceNodeEditor.h similarity index 92% rename from Source/Processors/Editors/ReferenceNodeEditor.h rename to Source/Processors/ReferenceNode/ReferenceNodeEditor.h index 7ae0f9a5de24865e06b096d5de429a1156a0ee43..efce3f1a014f384e3fab2a6a805c88d8b7571f6c 100644 --- a/Source/Processors/Editors/ReferenceNodeEditor.h +++ b/Source/Processors/ReferenceNode/ReferenceNodeEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,7 +25,7 @@ #define __REFERENCENODEEDITOR_H_370C056D__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" /** diff --git a/Source/Processors/ResamplingNode.cpp b/Source/Processors/ResamplingNode/ResamplingNode.cpp similarity index 95% rename from Source/Processors/ResamplingNode.cpp rename to Source/Processors/ResamplingNode/ResamplingNode.cpp index cb595dc4c7c2cc537f9181b7adc4595e65ac751c..af68d740f32b795fe7d12dc0fc20536766e1e4ea 100755 --- a/Source/Processors/ResamplingNode.cpp +++ b/Source/Processors/ResamplingNode/ResamplingNode.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,7 +22,7 @@ */ #include "ResamplingNode.h" -#include "Editors/ResamplingNodeEditor.h" +#include "ResamplingNodeEditor.h" #include <stdio.h> diff --git a/Source/Processors/ResamplingNode.h b/Source/Processors/ResamplingNode/ResamplingNode.h similarity index 90% rename from Source/Processors/ResamplingNode.h rename to Source/Processors/ResamplingNode/ResamplingNode.h index 9cd95c4c183b12f6ad652b18063204d43b864d7c..0b864eade577f5f8fcf20df097be62e1d84db291 100755 --- a/Source/Processors/ResamplingNode.h +++ b/Source/Processors/ResamplingNode/ResamplingNode.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,9 +25,9 @@ #define __RESAMPLINGNODE_H_79663B0__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" #include "../Dsp/Dsp.h" -#include "GenericProcessor.h" +#include "../GenericProcessor/GenericProcessor.h" #define TEMP_BUFFER_WIDTH 5000 diff --git a/Source/Processors/Editors/ResamplingNodeEditor.cpp b/Source/Processors/ResamplingNode/ResamplingNodeEditor.cpp similarity index 94% rename from Source/Processors/Editors/ResamplingNodeEditor.cpp rename to Source/Processors/ResamplingNode/ResamplingNodeEditor.cpp index f18846b7ded9387c74f10192dad777be1d464d30..6437754e30819ecd5f4692612b3cbace7640886f 100644 --- a/Source/Processors/Editors/ResamplingNodeEditor.cpp +++ b/Source/Processors/ResamplingNode/ResamplingNodeEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/Editors/ResamplingNodeEditor.h b/Source/Processors/ResamplingNode/ResamplingNodeEditor.h similarity index 91% rename from Source/Processors/Editors/ResamplingNodeEditor.h rename to Source/Processors/ResamplingNode/ResamplingNodeEditor.h index 9e347e62b696f8911113b45e0093233bb8bc1471..2cc8d380d1e6658abcea6c9feeb516f2ad079be3 100644 --- a/Source/Processors/Editors/ResamplingNodeEditor.h +++ b/Source/Processors/ResamplingNode/ResamplingNodeEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,7 +26,7 @@ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" /** diff --git a/Source/Processors/Serial/PulsePal.cpp b/Source/Processors/Serial/PulsePal.cpp index 8dccb1fbb41558a669f5e9f4e242dd1362953048..f1b745892122b9786a5a2e819d961c732951a6cb 100644 --- a/Source/Processors/Serial/PulsePal.cpp +++ b/Source/Processors/Serial/PulsePal.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/Serial/PulsePal.h b/Source/Processors/Serial/PulsePal.h index 819f2c4d59a957e2135d72e5858a2052e7d2e8d7..fc3cad7bde23d513c25324922fb0b10876bf915b 100644 --- a/Source/Processors/Serial/PulsePal.h +++ b/Source/Processors/Serial/PulsePal.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/Serial/ofConstants.h b/Source/Processors/Serial/ofConstants.h index f8179b25d922de782362171a5bcac6a772886a18..1be50a332e8f1cbb8da325607765398eb1e16639 100755 --- a/Source/Processors/Serial/ofConstants.h +++ b/Source/Processors/Serial/ofConstants.h @@ -47,9 +47,6 @@ #include <windows.h> #define GLEW_STATIC -//#include "GL\glew.h" -//#include "GL\wglew.h" -//#include "glu.h" #define __WINDOWS_DS__ #define __WINDOWS_MM__ #if (_MSC_VER) // microsoft visual studio @@ -91,9 +88,6 @@ #define __MACOSX_CORE__ #endif #include <unistd.h> -//#include "GL/glew.h" -//#include <OpenGL/gl.h> -//#include <ApplicationServices/ApplicationServices.h> #if defined(__LITTLE_ENDIAN__) #define TARGET_LITTLE_ENDIAN // intel cpu @@ -103,9 +97,6 @@ #ifdef TARGET_LINUX #define GL_GLEXT_PROTOTYPES #include <unistd.h> -//#include <GL/glew.h> -//#include <GL/gl.h> -//#include <GL/glx.h> // for some reason, this isn't defined at compile time, // so this hack let's us work @@ -124,29 +115,15 @@ #ifdef TARGET_OF_IPHONE -//#import <OpenGLES/ES1/gl.h> -//#import <OpenGLES/ES1/glext.h> - #define TARGET_LITTLE_ENDIAN // arm cpu #endif #ifdef TARGET_ANDROID #include <typeinfo> #include <unistd.h> -//#include <GLES/gl.h> -//#define GL_GLEXT_PROTOTYPES -//#include <GLES/glext.h> - #define TARGET_LITTLE_ENDIAN #endif -#ifdef TARGET_OPENGLES -#include "glu.h" -//typedef GLushort ofIndexType ; -#else -//typedef GLuint ofIndexType; -#endif - #ifndef __MWERKS__ #include <cstdlib> diff --git a/Source/Processors/SerialInput.cpp b/Source/Processors/SerialInput/SerialInput.cpp similarity index 95% rename from Source/Processors/SerialInput.cpp rename to Source/Processors/SerialInput/SerialInput.cpp index 4946179ffb22247f8ea5cb1eddb8223d7b7bc52d..3664068bd1e8dd7d479c9d913fdc65c3b7add50a 100644 --- a/Source/Processors/SerialInput.cpp +++ b/Source/Processors/SerialInput/SerialInput.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Florian Franzen + Copyright (C) 2014 Florian Franzen ------------------------------------------------------------------ diff --git a/Source/Processors/SerialInput.h b/Source/Processors/SerialInput/SerialInput.h similarity index 91% rename from Source/Processors/SerialInput.h rename to Source/Processors/SerialInput/SerialInput.h index 44b14d36595071478cb76b17542813d5448d2157..96f8292d47409ec5f64595db38db4813f6e2bca2 100644 --- a/Source/Processors/SerialInput.h +++ b/Source/Processors/SerialInput/SerialInput.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Florian Franzen + Copyright (C) 2014 Florian Franzen ------------------------------------------------------------------ @@ -28,11 +28,11 @@ #include <Windows.h> #endif -#include "../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../GenericProcessor/GenericProcessor.h" -#include "Editors/SerialInputEditor.h" -#include "Serial/ofSerial.h" +#include "SerialInputEditor.h" +#include "../Serial/ofSerial.h" /** diff --git a/Source/Processors/Editors/SerialInputEditor.cpp b/Source/Processors/SerialInput/SerialInputEditor.cpp similarity index 94% rename from Source/Processors/Editors/SerialInputEditor.cpp rename to Source/Processors/SerialInput/SerialInputEditor.cpp index 9fbf677b81bc37ae4b31a619e7c469ef8b6a52d6..6488366d94947caea8b7ab9a4c7da580c3c42b86 100644 --- a/Source/Processors/Editors/SerialInputEditor.cpp +++ b/Source/Processors/SerialInput/SerialInputEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Florian Franzen + Copyright (C) 2014 Florian Franzen ------------------------------------------------------------------ @@ -22,7 +22,7 @@ */ #include "SerialInputEditor.h" -#include "../SerialInput.h" +#include "SerialInput.h" #include <string> #include <iostream> diff --git a/Source/Processors/Editors/SerialInputEditor.h b/Source/Processors/SerialInput/SerialInputEditor.h similarity index 93% rename from Source/Processors/Editors/SerialInputEditor.h rename to Source/Processors/SerialInput/SerialInputEditor.h index ef3fd40c46c5322dce7708c49804a6172a70af6c..49a40a3774738515250723e074864e272f0a399f 100644 --- a/Source/Processors/Editors/SerialInputEditor.h +++ b/Source/Processors/SerialInput/SerialInputEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Florian Franzen + Copyright (C) 2014 Florian Franzen ------------------------------------------------------------------ @@ -29,7 +29,7 @@ #endif #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" class SerialInput; diff --git a/Source/Processors/SignalGenerator.cpp b/Source/Processors/SignalGenerator/SignalGenerator.cpp similarity index 96% rename from Source/Processors/SignalGenerator.cpp rename to Source/Processors/SignalGenerator/SignalGenerator.cpp index 63091f84ffa9219ec0205f3e8770f56fd40eada7..43c320fbe062b94ce743ac608f46bfbb5a567ef3 100755 --- a/Source/Processors/SignalGenerator.cpp +++ b/Source/Processors/SignalGenerator/SignalGenerator.cpp @@ -25,7 +25,7 @@ #include "SignalGenerator.h" #include <stdio.h> #include <math.h> -#include "Visualization/SpikeObject.h" +#include "../Visualization/SpikeObject.h" #ifdef WIN32 #define copysign(x,y) _copysign(x,y) diff --git a/Source/Processors/SignalGenerator.h b/Source/Processors/SignalGenerator/SignalGenerator.h similarity index 90% rename from Source/Processors/SignalGenerator.h rename to Source/Processors/SignalGenerator/SignalGenerator.h index 7e19e74aea60e39e6f3884b1613aa31e4b464e04..eef1de4ee0e9202ab9a493196d0737a048b33fd3 100755 --- a/Source/Processors/SignalGenerator.h +++ b/Source/Processors/SignalGenerator/SignalGenerator.h @@ -25,9 +25,9 @@ #define __SIGNALGENERATOR_H_EAA44B0B__ -#include "../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" -#include "Editors/SignalGeneratorEditor.h" +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "SignalGeneratorEditor.h" /** diff --git a/Source/Processors/Editors/SignalGeneratorEditor.cpp b/Source/Processors/SignalGenerator/SignalGeneratorEditor.cpp similarity index 96% rename from Source/Processors/Editors/SignalGeneratorEditor.cpp rename to Source/Processors/SignalGenerator/SignalGeneratorEditor.cpp index f4a12a9150bea9d0dc25cf0b3401b440408e8b95..8998f0aeb5a619d8de9a9c1673e8faa6bd210611 100755 --- a/Source/Processors/Editors/SignalGeneratorEditor.cpp +++ b/Source/Processors/SignalGenerator/SignalGeneratorEditor.cpp @@ -23,7 +23,7 @@ #include "SignalGeneratorEditor.h" -#include "../SignalGenerator.h" +#include "SignalGenerator.h" #include "../../UI/EditorViewport.h" #include <stdio.h> diff --git a/Source/Processors/Editors/SignalGeneratorEditor.h b/Source/Processors/SignalGenerator/SignalGeneratorEditor.h similarity index 94% rename from Source/Processors/Editors/SignalGeneratorEditor.h rename to Source/Processors/SignalGenerator/SignalGeneratorEditor.h index d4c7ddcc20eb2962df4d3e0e9e0fd678b82f012e..69d39d0d1be607ee8232286d5bbd7794f0088aec 100755 --- a/Source/Processors/Editors/SignalGeneratorEditor.h +++ b/Source/Processors/SignalGenerator/SignalGeneratorEditor.h @@ -25,7 +25,7 @@ #define __SIGNALGENERATOREDITOR_H_841A7078__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" class FilterViewport; class WaveformSelector; diff --git a/Source/Processors/SourceNode.cpp b/Source/Processors/SourceNode/SourceNode.cpp similarity index 73% rename from Source/Processors/SourceNode.cpp rename to Source/Processors/SourceNode/SourceNode.cpp index b93733cc3ac78235606544384d0e3b661639224f..4fc33fac0e7c1bad823a43b761dd79663af90c58 100755 --- a/Source/Processors/SourceNode.cpp +++ b/Source/Processors/SourceNode/SourceNode.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,15 +22,17 @@ */ #include "SourceNode.h" -#include "DataThreads/DataBuffer.h" +#include "../DataThreads/DataBuffer.h" //#include "DataThreads/IntanThread.h" -#include "DataThreads/FPGAThread.h" -#include "DataThreads/FileReaderThread.h" -#include "DataThreads/RHD2000Thread.h" -#include "Editors/SourceNodeEditor.h" -#include "Editors/FileReaderEditor.h" -#include "Editors/RHD2000Editor.h" -#include "Channel.h" +#include "../DataThreads/FPGAThread.h" +#include "../DataThreads/FileReaderThread.h" +#include "../DataThreads/RHD2000Thread.h" +#include "../DataThreads/EcubeThread.h" // Added by Michael Borisov +#include "../SourceNode/SourceNodeEditor.h" +#include "../FileReader/FileReaderEditor.h" +#include "../DataThreads/RHD2000Editor.h" +#include "../DataThreads/EcubeEditor.h" // Added by Michael Borisov +#include "../Channel/Channel.h" #include <stdio.h> SourceNode::SourceNode(const String& name_) @@ -43,7 +45,7 @@ SourceNode::SourceNode(const String& name_) if (getName().equalsIgnoreCase("RHA2000-EVAL")) { - // dataThread = new IntanThread(this); + // dataThread = new IntanThread(this);o } else if (getName().equalsIgnoreCase("Custom FPGA")) { @@ -57,6 +59,12 @@ SourceNode::SourceNode(const String& name_) { dataThread = new RHD2000Thread(this); } +#if ECUBE_COMPILE + else if (getName().equalsIgnoreCase("eCube")) + { + dataThread = new EcubeThread(this); + } +#endif if (dataThread != 0) { @@ -108,6 +116,85 @@ DataThread* SourceNode::getThread() return dataThread; } +int SourceNode::modifyChannelName(channelType t, int str, int ch, String newName, bool updateSignalChain) +{ + if (dataThread != 0) { + int channel_index = dataThread->modifyChannelName(t, str, ch, newName); + if (channel_index >= 0 && channel_index < channels.size()) + { + if (channels[channel_index]->getChannelName() != newName) + { + channels[channel_index]->setName(newName); + // propagate this information... + + if (updateSignalChain) + getEditorViewport()->makeEditorVisible(getEditor(), false, true); + + } + } + return channel_index; + } + return -1; +} + +int SourceNode::modifyChannelGain(int stream, int channel,channelType type, float gain, bool updateSignalChain) +{ + if (dataThread != 0) + { + + int channel_index = dataThread->modifyChannelGain(type, stream, channel, gain); + + if (channel_index >= 0 && channel_index < channels.size()) + { + // we now need to update the signal chain to propagate this change..... + if (channels[channel_index]->getChannelGain() != gain) + { + channels[channel_index]->setGain(gain); + + if (updateSignalChain) + getEditorViewport()->makeEditorVisible(getEditor(), false, true); + + return channel_index; + } + } + } + + return -1; +} + +void SourceNode::getChannelsInfo(StringArray &names, Array<channelType> &types, Array<int> &stream, Array<int> &originalChannelNumber, Array<float> &gains) +{ + if (dataThread != 0) + dataThread->getChannelsInfo(names, types,stream,originalChannelNumber,gains); +} + +void SourceNode::setDefaultNamingScheme(int scheme) +{ + if (dataThread != 0) + { + dataThread->setDefaultNamingScheme(scheme); + + StringArray names; + Array<channelType> types; + Array<int> stream; + Array<int> originalChannelNumber; + Array<float> gains; + getChannelsInfo(names, types, stream, originalChannelNumber, gains); + for (int k=0;k<names.size();k++) + { + modifyChannelName(types[k],stream[k],originalChannelNumber[k], names[k],false); + } + } + +} + +void SourceNode::getEventChannelNames(StringArray &names) +{ + if (dataThread != 0) + dataThread->getEventChannelNames(names); + +} + void SourceNode::updateSettings() { if (inputBuffer == 0 && dataThread != 0) @@ -122,7 +209,7 @@ void SourceNode::updateSettings() { Channel* ch = new Channel(this, i); ch->eventType = TTL; - ch->isEventChannel = true; + ch->getType() == EVENT_CHANNEL; eventChannels.add(ch); } diff --git a/Source/Processors/SourceNode.h b/Source/Processors/SourceNode/SourceNode.h similarity index 76% rename from Source/Processors/SourceNode.h rename to Source/Processors/SourceNode/SourceNode.h index 286bfd4ca10806c7bfd4e8f6ad08707fd8901d74..3e92609d9a268a913c8ee5b3b2f6d108d11ef9bb 100755 --- a/Source/Processors/SourceNode.h +++ b/Source/Processors/SourceNode/SourceNode.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,11 +24,11 @@ #ifndef __SOURCENODE_H_DCE798F1__ #define __SOURCENODE_H_DCE798F1__ -#include "../../JuceLibraryCode/JuceHeader.h" +#include "../../../JuceLibraryCode/JuceHeader.h" #include <stdio.h> -#include "DataThreads/DataThread.h" -#include "GenericProcessor.h" -#include "../UI/UIComponent.h" +#include "../DataThreads/DataThread.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "../../UI/UIComponent.h" /** @@ -60,6 +60,13 @@ public: int getDefaultNumOutputs(); float getDefaultBitVolts(); + int modifyChannelGain(int stream, int channel,channelType type, float gain, bool updateSignalChain); + int modifyChannelName(channelType t, int str, int ch, String newName, bool updateSignalChain); + + void getChannelsInfo(StringArray &Names, Array<channelType> &type, Array<int> &stream, Array<int> &originalChannelNumber, Array<float> &gains); + void setDefaultNamingScheme(int scheme); + void getEventChannelNames(StringArray &names); + AudioProcessorEditor* createEditor(); bool hasEditor() const { diff --git a/Source/Processors/Editors/SourceNodeEditor.cpp b/Source/Processors/SourceNode/SourceNodeEditor.cpp similarity index 93% rename from Source/Processors/Editors/SourceNodeEditor.cpp rename to Source/Processors/SourceNode/SourceNodeEditor.cpp index c2c52adda4b5407d7b4ea3f5158d81acb3706a91..808534a3c4aa05d1ceb7e0ad46830113a9139587 100755 --- a/Source/Processors/Editors/SourceNodeEditor.cpp +++ b/Source/Processors/SourceNode/SourceNodeEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -23,7 +23,7 @@ #include "SourceNodeEditor.h" -#include "../SourceNode.h" +#include "../SourceNode/SourceNode.h" #include <stdio.h> diff --git a/Source/Processors/Editors/SourceNodeEditor.h b/Source/Processors/SourceNode/SourceNodeEditor.h similarity index 89% rename from Source/Processors/Editors/SourceNodeEditor.h rename to Source/Processors/SourceNode/SourceNodeEditor.h index 8425717a3fa02a8b56d2bb263be31bdf01c1c3ad..f4a94262e8fe999403d82b40048a3d38efff8768 100755 --- a/Source/Processors/Editors/SourceNodeEditor.h +++ b/Source/Processors/SourceNode/SourceNodeEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,8 +25,8 @@ #define __SOURCENODEEDITOR_H_A1B19E1E__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" -#include "ImageIcon.h" +#include "../Editors/GenericEditor.h" +#include "../Editors/ImageIcon.h" class ImageIcon; diff --git a/Source/Processors/SpikeDetector.cpp b/Source/Processors/SpikeDetector/SpikeDetector.cpp similarity index 84% rename from Source/Processors/SpikeDetector.cpp rename to Source/Processors/SpikeDetector/SpikeDetector.cpp index 534a84734f123d51ddaa8b982365542c9e85952f..2328994d82785c6a654fa41da3b3cc3651e0a992 100755 --- a/Source/Processors/SpikeDetector.cpp +++ b/Source/Processors/SpikeDetector/SpikeDetector.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -24,7 +24,7 @@ #include <stdio.h> #include "SpikeDetector.h" -#include "Channel.h" +#include "../Channel/Channel.h" SpikeDetector::SpikeDetector() : GenericProcessor("Spike Detector"), @@ -89,7 +89,7 @@ void SpikeDetector::updateSettings() { Channel* ch = new Channel(this, i); - ch->isEventChannel = true; + //ch->isEventChannel = true; ch->eventType = SPIKE_BASE_CODE + electrodes[i]->numChannels; ch->name = electrodes[i]->name; @@ -111,7 +111,7 @@ bool SpikeDetector::addElectrode(int nChans) } else { - Electrode* e = electrodes.getLast(); + SimpleElectrode* e = electrodes.getLast(); firstChan = *(e->channels+(e->numChannels-1))+1; } @@ -138,7 +138,7 @@ bool SpikeDetector::addElectrode(int nChans) newName += " "; newName += electrodeCounter[nChans]; - Electrode* newElectrode = new Electrode(); + SimpleElectrode* newElectrode = new SimpleElectrode(); newElectrode->name = newName; newElectrode->numChannels = nChans; @@ -183,7 +183,7 @@ StringArray SpikeDetector::getElectrodeNames() return names; } -void SpikeDetector::resetElectrode(Electrode* e) +void SpikeDetector::resetElectrode(SimpleElectrode* e) { e->lastBufferIndex = 0; } @@ -228,19 +228,19 @@ int SpikeDetector::getChannel(int index, int i) return *(electrodes[index]->channels+i); } -Array<Electrode*> SpikeDetector::getElectrodes() +Array<SimpleElectrode*> SpikeDetector::getElectrodes() { return electrodes; } -Electrode* SpikeDetector::setCurrentElectrodeIndex(int i) +SimpleElectrode* SpikeDetector::setCurrentElectrodeIndex(int i) { jassert(i >= 0 & i < electrodes.size()); currentElectrode = i; return electrodes[i]; } -Electrode* SpikeDetector::getActiveElectrode() +SimpleElectrode* SpikeDetector::getActiveElectrode() { if (electrodes.size() == 0) return nullptr; @@ -304,6 +304,7 @@ void SpikeDetector::setParameter(int parameterIndex, float newValue) bool SpikeDetector::enable() { + sampleRateForElectrode = (uint16_t) getSampleRate(); useOverflowBuffer = false; return true; } @@ -344,7 +345,24 @@ void SpikeDetector::addWaveformToSpikeObject(SpikeObject* s, int spikeLength = electrodes[electrodeNumber]->prePeakSamples + + electrodes[electrodeNumber]->postPeakSamples; +// uint8_t eventType; +// int64_t timestamp; +// int64_t timestamp_software; +// uint16_t source; // used internally, the index of the electrode in the electrode array +// uint16_t nChannels; +// uint16_t nSamples; +// uint16_t sortedId; // sorted unit ID (or 0 if unsorted) +// uint16_t electrodeID; // unique electrode ID (regardless electrode position in the array) +// uint16_t channel; // the channel in which threshold crossing was detected (index in channel array, not absolute channel number). +// uint8_t color[3]; +// float pcProj[2]; +// uint16_t samplingFrequencyHz; +// uint16_t data[MAX_NUMBER_OF_SPIKE_CHANNELS* MAX_NUMBER_OF_SPIKE_CHANNEL_SAMPLES]; +// float gain[MAX_NUMBER_OF_SPIKE_CHANNELS]; +// uint16_t threshold[MAX_NUMBER_OF_SPIKE_CHANNELS]; + s->timestamp = timestamp + peakIndex; + s->nSamples = spikeLength; @@ -411,7 +429,7 @@ void SpikeDetector::process(AudioSampleBuffer& buffer, { // cycle through electrodes - Electrode* electrode; + SimpleElectrode* electrode; dataBuffer = &buffer; checkForEvents(events); // need to find any timestamp events before extracting spikes @@ -432,24 +450,17 @@ void SpikeDetector::process(AudioSampleBuffer& buffer, // cycle through samples while (samplesAvailable(nSamples)) { - sampleIndex++; - - // cycle through channels for (int chan = 0; chan < electrode->numChannels; chan++) { - // std::cout << " channel " << chan << std::endl; - if (*(electrode->isActive+chan)) { - int currentChannel = *(electrode->channels+chan); if (-getNextSample(currentChannel) > *(electrode->thresholds+chan)) // trigger spike { - //std::cout << "Spike detected on electrode " << i << std::endl; // find the peak int peakIndex = sampleIndex; @@ -463,11 +474,32 @@ void SpikeDetector::process(AudioSampleBuffer& buffer, peakIndex = sampleIndex; sampleIndex -= (electrode->prePeakSamples+1); + +// uint8_t eventType; +// int64_t timestamp; +// int64_t timestamp_software; +// uint16_t source; // used internally, the index of the electrode in the electrode array +// uint16_t nChannels; +// uint16_t nSamples; +// uint16_t sortedId; // sorted unit ID (or 0 if unsorted) +// uint16_t electrodeID; // unique electrode ID (regardless electrode position in the array) +// uint16_t channel; // the channel in which threshold crossing was detected (index in channel array, not absolute channel number). +// uint8_t color[3]; +// float pcProj[2]; +// uint16_t samplingFrequencyHz; +// uint16_t data[MAX_NUMBER_OF_SPIKE_CHANNELS* MAX_NUMBER_OF_SPIKE_CHANNEL_SAMPLES]; +// float gain[MAX_NUMBER_OF_SPIKE_CHANNELS]; +// uint16_t threshold[MAX_NUMBER_OF_SPIKE_CHANNELS]; SpikeObject newSpike; newSpike.timestamp = peakIndex; + newSpike.timestamp_software = -1; newSpike.source = i; newSpike.nChannels = electrode->numChannels; + newSpike.sortedId = 0; + newSpike.electrodeID = 0; + newSpike.channel = 0; + newSpike.samplingFrequencyHz = sampleRateForElectrode; currentIndex = 0; diff --git a/Source/Processors/SpikeDetector.h b/Source/Processors/SpikeDetector/SpikeDetector.h similarity index 88% rename from Source/Processors/SpikeDetector.h rename to Source/Processors/SpikeDetector/SpikeDetector.h index c84ec682b8962b9cc479a28f0a33d019c45e8a98..8c5292c999f0a475ef3ac5e9b001a866aa0e34bf 100755 --- a/Source/Processors/SpikeDetector.h +++ b/Source/Processors/SpikeDetector/SpikeDetector.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,12 +26,12 @@ #include "../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" -#include "Editors/SpikeDetectorEditor.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "SpikeDetectorEditor.h" -#include "Visualization/SpikeObject.h" +#include "../Visualization/SpikeObject.h" -struct Electrode +struct SimpleElectrode { String name; @@ -136,13 +136,13 @@ public: StringArray getElectrodeNames(); /** Returns array of electrodes. */ - Array<Electrode*> getElectrodes(); + Array<SimpleElectrode*> getElectrodes(); /** Returns array of electrodes. */ - Electrode* getActiveElectrode(); + SimpleElectrode* getActiveElectrode(); /** Sets the current electrode index */ - Electrode* setCurrentElectrodeIndex(int); + SimpleElectrode* setCurrentElectrodeIndex(int); /** Returns a list of possible electrode types (e.g., stereotrode, tetrode). */ StringArray electrodeTypes; @@ -179,7 +179,7 @@ private: uint8_t* spikeBuffer;///[256]; int64 timestamp; - Array<Electrode*> electrodes; + Array<SimpleElectrode*> electrodes; // void createSpikeEvent(int& peakIndex, // int& electrodeNumber, @@ -194,7 +194,9 @@ private: int& electrodeNumber, int& currentChannel); - void resetElectrode(Electrode*); + void resetElectrode(SimpleElectrode*); + + uint16_t sampleRateForElectrode; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SpikeDetector); diff --git a/Source/Processors/Editors/SpikeDetectorEditor.cpp b/Source/Processors/SpikeDetector/SpikeDetectorEditor.cpp similarity index 91% rename from Source/Processors/Editors/SpikeDetectorEditor.cpp rename to Source/Processors/SpikeDetector/SpikeDetectorEditor.cpp index da6f70061b6fe3101300ce83c85aa9d57e4374dd..75ca82c4522c76d9bb3316383a8c524484ca74f2 100755 --- a/Source/Processors/Editors/SpikeDetectorEditor.cpp +++ b/Source/Processors/SpikeDetector/SpikeDetectorEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,8 +22,8 @@ */ #include "SpikeDetectorEditor.h" -#include "../SpikeDetector.h" -#include "ChannelSelector.h" +#include "SpikeDetector.h" +#include "../Editors/ChannelSelector.h" #include "../../UI/EditorViewport.h" #include <stdio.h> @@ -332,15 +332,15 @@ void SpikeDetectorEditor::buttonEvent(Button* button) SpikeDetector* processor = (SpikeDetector*) getProcessor(); - Array<Electrode*> electrodes = processor->getElectrodes(); + Array<SimpleElectrode*> electrodes = processor->getElectrodes(); for (int i = 0; i < electrodes.size(); i++) { - Electrode* e = electrodes[i]; + SimpleElectrode* e = electrodes[i]; e->isMonitored = false; } - Electrode* e = processor->getActiveElectrode(); + SimpleElectrode* e = processor->getActiveElectrode(); if (e != nullptr) { @@ -509,14 +509,16 @@ void SpikeDetectorEditor::comboBoxChanged(ComboBox* comboBox) { int ID = comboBox->getSelectedId(); + std::cout << "ID: " << ID << std::endl; + if (ID == 0) { - SpikeDetector* processor = (SpikeDetector*) getProcessor(); + //SpikeDetector* processor = (SpikeDetector*) getProcessor(); - processor->setElectrodeName(lastId, comboBox->getText()); - comboBox->changeItemText(lastId, comboBox->getText()); + //processor->setElectrodeName(lastId, comboBox->getText()); + //comboBox->changeItemText(lastId, comboBox->getText()); //electrodeList->setText(comboBox->getText()); - //refreshElectrodeList(); + refreshElectrodeList(); } else @@ -525,7 +527,7 @@ void SpikeDetectorEditor::comboBoxChanged(ComboBox* comboBox) lastId = ID; SpikeDetector* processor = (SpikeDetector*) getProcessor(); - Electrode* e = processor->setCurrentElectrodeIndex(ID-1); + SimpleElectrode* e = processor->setCurrentElectrodeIndex(ID-1); electrodeEditorButtons[1]->setToggleState(e->isMonitored, dontSendNotification); @@ -608,8 +610,8 @@ ThresholdSlider::ThresholdSlider(Font f) : Slider("name"), font(f) { setSliderStyle(Slider::Rotary); - setRange(25.0f,400.0f,5.0f); - // setValue(75.0f); + setRange(-400,400.0f,10.0f); + setValue(-20.0f); setTextBoxStyle(Slider::NoTextBox, false, 40, 20); } @@ -667,10 +669,17 @@ Path ThresholdSlider::makeRotaryPath(double min, double max, double val) Path p; - double start = 5*double_Pi/4 - 0.11; - - double range = (val-min)/(max - min)*1.5*double_Pi + start + 0.22; - + double start; + double range; + if (val > 0) + { + start = 0; + range = (val)/(1.3*max )*double_Pi ; + } + if (val < 0) { + start = -(val)/(1.3*min)*double_Pi ; + range = 0; + } p.addPieSegment(6,6, getWidth()-12, getHeight()-12, start, range, 0.65); return p; diff --git a/Source/Processors/Editors/SpikeDetectorEditor.h b/Source/Processors/SpikeDetector/SpikeDetectorEditor.h similarity index 92% rename from Source/Processors/Editors/SpikeDetectorEditor.h rename to Source/Processors/SpikeDetector/SpikeDetectorEditor.h index 6a4b44cf375a880399d543e32328e2998ec43b8a..919c9642150a99671d870e78de5d6e2a975940d0 100755 --- a/Source/Processors/Editors/SpikeDetectorEditor.h +++ b/Source/Processors/SpikeDetector/SpikeDetectorEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,8 +26,8 @@ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" -#include "ElectrodeButtons.h" +#include "../Editors/GenericEditor.h" +#include "../Editors/ElectrodeButtons.h" class TriangleButton; class UtilityButton; diff --git a/Source/Processors/Visualization/SpikeDisplayCanvas.cpp b/Source/Processors/SpikeDisplayNode/SpikeDisplayCanvas.cpp similarity index 98% rename from Source/Processors/Visualization/SpikeDisplayCanvas.cpp rename to Source/Processors/SpikeDisplayNode/SpikeDisplayCanvas.cpp index a2dcf5bda7aef0477cc095b0d6ea53a7b3aeba11..14233600abafe3c209f0251f9be80a82d809cc3f 100755 --- a/Source/Processors/Visualization/SpikeDisplayCanvas.cpp +++ b/Source/Processors/SpikeDisplayNode/SpikeDisplayCanvas.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -267,7 +267,7 @@ void SpikeDisplayCanvas::loadVisualizerParameters(XmlElement* xml) // ---------------------------------------------------------------- SpikeDisplay::SpikeDisplay(SpikeDisplayCanvas* sdc, Viewport* v) : - canvas(sdc), viewport(v), thresholdCoordinator(nullptr), shouldInvert(false) + canvas(sdc), viewport(v), shouldInvert(false), thresholdCoordinator(nullptr) { totalHeight = 1000; @@ -486,12 +486,14 @@ float SpikeDisplay::getRangeForWaveAxis(int plotNum, int axisNum) void SpikeDisplay::setThresholdForWaveAxis(int plotNum, int axisNum, float range) { - return spikePlots[plotNum]->setDisplayThresholdForChannel(axisNum, range); + if (spikePlots.size() > plotNum) + return spikePlots[plotNum]->setDisplayThresholdForChannel(axisNum, range); } void SpikeDisplay::setRangeForWaveAxis(int plotNum, int axisNum, float range) { - return spikePlots[plotNum]->setRangeForChannel(axisNum, range); + if (spikePlots.size() > plotNum) + return spikePlots[plotNum]->setRangeForChannel(axisNum, range); } // ---------------------------------------------------------------- @@ -882,7 +884,7 @@ WaveAxes::WaveAxes(int channel) : GenericAxes(channel), for (int n = 0; n < bufferSize; n++) { SpikeObject so; - generateEmptySpike(&so, 4); + generateEmptySpike(&so, 4, 40); spikeBuffer.add(so); } @@ -1087,7 +1089,7 @@ void WaveAxes::clear() for (int n = 0; n < bufferSize; n++) { SpikeObject so; - generateEmptySpike(&so, 4); + generateEmptySpike(&so, 4, 40); spikeBuffer.add(so); } diff --git a/Source/Processors/Visualization/SpikeDisplayCanvas.h b/Source/Processors/SpikeDisplayNode/SpikeDisplayCanvas.h similarity index 98% rename from Source/Processors/Visualization/SpikeDisplayCanvas.h rename to Source/Processors/SpikeDisplayNode/SpikeDisplayCanvas.h index 2a1f6e33a1991b667e307e1f69bac0a4fce725b9..78bfc189978b29bf065db5f74f53b020da0af19a 100755 --- a/Source/Processors/Visualization/SpikeDisplayCanvas.h +++ b/Source/Processors/SpikeDisplayNode/SpikeDisplayCanvas.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,10 +26,10 @@ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "../SpikeDisplayNode.h" -#include "SpikeObject.h" +#include "SpikeDisplayNode.h" +#include "../Visualization/SpikeObject.h" -#include "Visualizer.h" +#include "../Visualization/Visualizer.h" #include <vector> #define WAVE1 0 diff --git a/Source/Processors/Editors/SpikeDisplayEditor.cpp b/Source/Processors/SpikeDisplayNode/SpikeDisplayEditor.cpp similarity index 99% rename from Source/Processors/Editors/SpikeDisplayEditor.cpp rename to Source/Processors/SpikeDisplayNode/SpikeDisplayEditor.cpp index 17bc397322b92b7d23263fe594d2ba24a3c606cf..8444f842e2d7d50f49915c5d26f48be2a0069804 100755 --- a/Source/Processors/Editors/SpikeDisplayEditor.cpp +++ b/Source/Processors/SpikeDisplayNode/SpikeDisplayEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/Editors/SpikeDisplayEditor.h b/Source/Processors/SpikeDisplayNode/SpikeDisplayEditor.h similarity index 92% rename from Source/Processors/Editors/SpikeDisplayEditor.h rename to Source/Processors/SpikeDisplayNode/SpikeDisplayEditor.h index e8b6294df825e9122864772313af42cdc5075b40..8bf9df9ef876c175adb200d11da1cb095c315666 100755 --- a/Source/Processors/Editors/SpikeDisplayEditor.h +++ b/Source/Processors/SpikeDisplayNode/SpikeDisplayEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,13 +25,13 @@ #define SPIKEDISPLAYEDITOR_H_ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" #include "../../UI/UIComponent.h" #include "../../UI/DataViewport.h" #include "../Visualization/DataWindow.h" -#include "../SpikeDisplayNode.h" -#include "../Visualization/SpikeDisplayCanvas.h" -#include "VisualizerEditor.h" +#include "SpikeDisplayNode.h" +#include "SpikeDisplayCanvas.h" +#include "../Editors/VisualizerEditor.h" #define MAX_N_SUB_CHAN 8 class Visualizer; diff --git a/Source/Processors/SpikeDisplayNode.cpp b/Source/Processors/SpikeDisplayNode/SpikeDisplayNode.cpp similarity index 60% rename from Source/Processors/SpikeDisplayNode.cpp rename to Source/Processors/SpikeDisplayNode/SpikeDisplayNode.cpp index acad76c45a52e01186c98a093ee21bfd7d7bbecd..4502ea5fae2bdfe396d75662833e774c2c69f895 100755 --- a/Source/Processors/SpikeDisplayNode.cpp +++ b/Source/Processors/SpikeDisplayNode/SpikeDisplayNode.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,23 +22,19 @@ */ #include "SpikeDisplayNode.h" -#include "RecordNode.h" -#include "Visualization/SpikeDisplayCanvas.h" -#include "Channel.h" +#include "../RecordNode/RecordNode.h" +#include "SpikeDisplayCanvas.h" +#include "../Channel/Channel.h" #include <stdio.h> SpikeDisplayNode::SpikeDisplayNode() - : GenericProcessor("Spike Viewer"), displayBufferSize(5), redrawRequested(false), isRecording(false), - signalFilesShouldClose(false) + : GenericProcessor("Spike Viewer"), displayBufferSize(5), redrawRequested(false), + isRecording(false) { - spikeBuffer = new uint8_t[MAX_SPIKE_BUFFER_LEN]; // MAX_SPIKE_BUFFER_LEN defined in SpikeObject.h - - recordingNumber = -1; - } SpikeDisplayNode::~SpikeDisplayNode() @@ -60,7 +56,6 @@ void SpikeDisplayNode::updateSettings() //std::cout << "Setting num inputs on SpikeDisplayNode to " << getNumInputs() << std::endl; electrodes.clear(); - for (int i = 0; i < eventChannels.size(); i++) { if ((eventChannels[i]->eventType < 999) && (eventChannels[i]->eventType > SPIKE_BASE_CODE)) @@ -79,12 +74,10 @@ void SpikeDisplayNode::updateSettings() } electrodes.add(elec); + } } - recordNode = getProcessorGraph()->getRecordNode(); - diskWriteLock = recordNode->getLock(); - } // void SpikeDisplayNode::updateVisualizer() @@ -96,6 +89,18 @@ bool SpikeDisplayNode::enable() { std::cout << "SpikeDisplayNode::enable()" << std::endl; SpikeDisplayEditor* editor = (SpikeDisplayEditor*) getEditor(); + + getProcessorGraph()->getRecordNode()->registerSpikeSource(this); + for (int i = 0; i < electrodes.size(); i ++) + { + Electrode& elec = electrodes.getReference(i); + SpikeRecordInfo *recElec = new SpikeRecordInfo(); + recElec->name = elec.name; + recElec->numChannels = elec.numChannels; + recElec->sampleRate = settings.sampleRate; + elec.recordIndex = getProcessorGraph()->getRecordNode()->addSpikeElectrode(recElec); + } + editor->enable(); return true; @@ -175,28 +180,12 @@ void SpikeDisplayNode::setParameter(int param, float val) if (param == 0) // stop recording { isRecording = false; - signalFilesShouldClose = true; } else if (param == 1) // start recording { isRecording = true; - dataDirectory = recordNode->getDataDirectory(); - - if (dataDirectory.getFullPathName().length() == 0) - { - // temporary fix in case nothing is returned by the record node. - dataDirectory = File::getSpecialLocation(File::userHomeDirectory); - } - - baseDirectory = dataDirectory.getFullPathName(); - - for (int i = 0; i < getNumElectrodes(); i++) - { - openFile(i); - } - } else if (param == 2) // redraw { @@ -213,16 +202,6 @@ void SpikeDisplayNode::process(AudioSampleBuffer& buffer, MidiBuffer& events, in checkForEvents(events); // automatically calls 'handleEvent - if (signalFilesShouldClose) - { - for (int i = 0; i < getNumElectrodes(); i++) - { - closeFile(i); - } - - signalFilesShouldClose = false; - } - if (redrawRequested) { // update incoming thresholds @@ -304,7 +283,7 @@ void SpikeDisplayNode::handleEvent(int eventType, MidiMessage& event, int sample // save spike if (isRecording) { - writeSpike(newSpike, electrodeNum); + getProcessorGraph()->getRecordNode()->writeSpike(newSpike,e.recordIndex); } } @@ -333,139 +312,3 @@ bool SpikeDisplayNode::checkThreshold(int chan, float thresh, SpikeObject& s) return false; } - -void SpikeDisplayNode::openFile(int i) -{ - - String filename = baseDirectory; - filename += File::separator; - filename += getNameForElectrode(i).removeCharacters(" "); - filename += ".spikes"; - - std::cout << "OPENING FILE: " << filename << std::endl; - - File fileToUse = File(filename); - - diskWriteLock->enter(); - //const MessageManagerLock mmLock; - - Electrode& e = electrodes.getReference(i); - - FILE* file; - - if (!fileToUse.exists()) - { - // open it and write header - - if (i == 0) - { - recordingNumber = 0; - } - - file = fopen(filename.toUTF8(), "ab"); - String header = generateHeader(i); - fwrite(header.toUTF8(), 1, header.getNumBytesAsUTF8(), file); - - } - else - { - // append it - if (i == 0) - { - recordingNumber++; - } - - file = fopen(filename.toUTF8(), "ab"); - } - - diskWriteLock->exit(); - - e.file = file; -} - -void SpikeDisplayNode::closeFile(int i) -{ - - Electrode& e = electrodes.getReference(i); - - std::cout << "CLOSING FILE for " << e.name << std::endl; - - diskWriteLock->enter(); - - if (e.file != NULL) - { - fclose(e.file); - } - - diskWriteLock->exit(); - -} - -void SpikeDisplayNode::writeSpike(const SpikeObject& s, int i) -{ - - packSpike(&s, spikeBuffer, MAX_SPIKE_BUFFER_LEN); - - int totalBytes = s.nSamples * s.nChannels * 2 + // account for samples - s.nChannels * 4 + // acount for threshold and gain - 15; // 15 bytes in every SpikeObject - - - // format: - // 1 byte of event type (always = 4 for spikes) - // 8 bytes for 64-bit timestamp - // 2 bytes for 16-bit electrode ID - // 2 bytes for 16-bit number of channels (n) - // 2 bytes for 16-bit number of samples (m) - // 2*n*m bytes for 16-bit samples - // 2*n bytes for 16-bit gains - // 2*n bytes for 16-bit thresholds - - // const MessageManagerLock mmLock; - - diskWriteLock->enter(); - - fwrite(spikeBuffer, 1, totalBytes, electrodes[i].file); - - fwrite(&recordingNumber, // ptr - 2, // size of each element - 1, // count - electrodes[i].file); // ptr to FILE object - - diskWriteLock->exit(); - - -} - -String SpikeDisplayNode::generateHeader(int electrodeNum) -{ - String header = "header.format = 'Open Ephys Data Format'; \n"; - header += "header.version = 0.2;"; - header += "header.header_bytes = "; - header += String(HEADER_SIZE); - header += ";\n"; - - header += "header.description = 'Each record contains 1 uint8 eventType, 1 uint64 timestamp, 1 uint16 electrodeID, 1 uint16 numChannels (n), 1 uint16 numSamples (m), n*m uint16 samples, n uint16 channelGains, n uint16 thresholds, and 1 uint16 recordingNumber'; \n"; - - header += "header.date_created = '"; - header += recordNode->generateDateString(); - header += "';\n"; - - header += "header.electrode = '"; - header += electrodes[electrodeNum].name; - header += "';\n"; - - header += "header.num_channels = "; - header += electrodes[electrodeNum].numChannels; - header += ";\n"; - - header += "header.sampleRate = "; - header += String(settings.sampleRate); - header += ";\n"; - - header = header.paddedRight(' ', HEADER_SIZE); - - //std::cout << header << std::endl; - - return header; -} \ No newline at end of file diff --git a/Source/Processors/SpikeDisplayNode.h b/Source/Processors/SpikeDisplayNode/SpikeDisplayNode.h similarity index 80% rename from Source/Processors/SpikeDisplayNode.h rename to Source/Processors/SpikeDisplayNode/SpikeDisplayNode.h index cbd08ce92b51b858b2662286e46806c1a6251b06..2b630f7cd528e69656aa4eda757d92423435ef66 100755 --- a/Source/Processors/SpikeDisplayNode.h +++ b/Source/Processors/SpikeDisplayNode/SpikeDisplayNode.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,10 +25,10 @@ #define SPIKEDISPLAYNODE_H_ #include "../../JuceLibraryCode/JuceHeader.h" -#include "Editors/SpikeDisplayEditor.h" -#include "Editors/VisualizerEditor.h" -#include "GenericProcessor.h" -#include "Visualization/SpikeObject.h" +#include "SpikeDisplayEditor.h" +#include "../Editors/VisualizerEditor.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "../Visualization/SpikeObject.h" class DataViewport; class SpikePlot; @@ -95,7 +95,7 @@ private: SpikePlot* spikePlot; - FILE* file; + int recordIndex; }; @@ -104,24 +104,18 @@ private: int displayBufferSize; bool redrawRequested; - // methods for recording: - void openFile(int index); - void closeFile(int index); - void writeSpike(const SpikeObject& s, int index); - String generateHeader(int index); - // members for recording bool isRecording; - bool signalFilesShouldClose; - RecordNode* recordNode; - String baseDirectory; - File dataDirectory; - uint8_t* spikeBuffer; - SpikeObject currentSpike; + // bool signalFilesShouldClose; + // RecordNode* recordNode; + // String baseDirectory; + // File dataDirectory; + // uint8_t* spikeBuffer; + // SpikeObject currentSpike; - uint16 recordingNumber; + // uint16 recordingNumber; - CriticalSection* diskWriteLock; +// CriticalSection* diskWriteLock; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SpikeDisplayNode); diff --git a/Source/Processors/SpikeSorter/SpikeSortBoxes.cpp b/Source/Processors/SpikeSorter/SpikeSortBoxes.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6689fedadf6b6d167aca8c9c8231c310c05d96df --- /dev/null +++ b/Source/Processors/SpikeSorter/SpikeSortBoxes.cpp @@ -0,0 +1,2139 @@ +/* +------------------------------------------------------------------ + +This file is part of the Open Ephys GUI +Copyright (C) 2013 Open Ephys + +------------------------------------------------------------------ + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include <stdio.h> +#include <algorithm> +#include "SpikeSortBoxes.h" +#include "SpikeSorter.h" + +PointD::PointD() +{ + X = Y = 0; +} + + +PointD::PointD(float x, float y) +{ + X = x; + Y = y; +} + +PointD::PointD(const PointD &P) +{ + X = P.X; + Y = P.Y; +} + +PointD& PointD::operator+=(const PointD &rhs) +{ + X += rhs.X; + Y += rhs.Y; + return *this; +} + +PointD& PointD::operator-=(const PointD &rhs) +{ + X -= rhs.X; + Y -= rhs.Y; + return *this; +} + +const PointD PointD::operator+(const PointD &other) const +{ + PointD result = *this; + result += other; + return result; +} + + +const PointD PointD::operator-(const PointD &other) const +{ + PointD result = *this; + result -= other; + return result; +} + + +const PointD PointD::operator*(const PointD &other) const +{ + PointD result = *this; + result.X *= other.X; + result.Y *= other.Y; + return result; + +} + +float PointD::cross(PointD c) const +{ + return X*c.Y-Y*c.X; +} + +/**************************************/ + + +Box::Box() +{ + x = -0.2; // in ms + y = -10; // in uV + w = 0.5; // in ms + h = 70; // in uV + channel=0; +} + + +Box::Box(int ch) +{ + x = -0.2; // in ms + y = -10; // in uV + w = 0.5; // in ms + h = 70; // in uV + channel = ch; +} + +Box::Box(float X, float Y, float W, float H, int ch) +{ + x = X; + y = Y; + w = W; + h = H; + channel = ch; +} + +bool Box::LineSegmentIntersection(PointD p11, PointD p12, PointD p21, PointD p22) +{ + PointD r = (p12 - p11); + PointD s = (p22 - p21); + PointD q = p21; + PointD p = p11; + double rs = r.cross(s); + double eps = 1e-6; + if (fabs(rs) < eps) + return false; // lines are parallel + double t = (q - p).cross(s) / rs; + double u = (q - p).cross(r) / rs; + return (t>=0&&t<=1 &&u>0&&u<=1); +} + +#ifndef MAX +#define MAX(x,y)((x)>(y))?(x):(y) +#endif + +#ifndef MIN +#define MIN(x,y)((x)<(y))?(x):(y) +#endif + +bool Box::isWaveFormInside(SpikeObject *so) +{ + PointD BoxTopLeft(x, y); + PointD BoxBottomLeft(x, (y - h)); + + PointD BoxTopRight(x + w, y); + PointD BoxBottomRight(x + w, (y - h)); + + // y,and h are given in micro volts. + // x and w and given in micro seconds. + + // no point testing all wave form points. Just ones that are between x and x+w... + int BinLeft = microSecondsToSpikeTimeBin(so,x); + int BinRight = microSecondsToSpikeTimeBin(so,x+w); + + /* + float minValue=1e10, maxValue=1e-10; + for (int pt = 0; pt < so->nSamples; pt++) + { + float v = spikeDataBinToMicrovolts(so, pt, channel); + minValue = MIN(minValue,v); + maxValue = MAX(maxValue,v); + } + */ + + for (int pt = BinLeft; pt < BinRight; pt++) + { + PointD Pwave1(spikeTimeBinToMicrosecond(so,pt),spikeDataBinToMicrovolts(so, pt, channel)); + PointD Pwave2(spikeTimeBinToMicrosecond(so,pt+1),spikeDataBinToMicrovolts(so, pt+1, channel)); + + bool bLeft = LineSegmentIntersection(Pwave1,Pwave2,BoxTopLeft,BoxBottomLeft) ; + bool bRight = LineSegmentIntersection(Pwave1,Pwave2,BoxTopRight,BoxBottomRight); + bool bTop = LineSegmentIntersection(Pwave1,Pwave2,BoxTopLeft,BoxTopRight); + bool bBottom = LineSegmentIntersection(Pwave1, Pwave2, BoxBottomLeft, BoxBottomRight); + if (bLeft || bRight || bTop || bBottom) + { + return true; + } + + } + return false; +} + + +BoxUnit::BoxUnit() +{ + +} +/**************************************/ +void BoxUnit::setDefaultColors(uint8_t col[3], int ID) +{ + int IDmodule = (ID-1) % 6; // ID can't be zero + const int colors[6][3] = { + {0xFF,0xFF,0x00}, + {0x00,0xFF,0x00}, + {0x00, 0xFF, 0xFF}, + {0xFF, 0x00, 0x00}, + {0x00,0x00,0xFF}, + {0xFF,0x00,0xFF}}; + col[0] = colors[IDmodule][0]; + col[1] = colors[IDmodule][1]; + col[2] = colors[IDmodule][2]; +} + +BoxUnit::BoxUnit(int ID, int localID_): UnitID(ID), localID(localID_) +{ + std::cout << "Adding new box unit." << std::endl; + Active = false; + Activated_TS_S = -1; + setDefaultColors(ColorRGB, localID); + Box B(50, -20 - localID*20, 300, 40); + addBox(B); +} + +void BoxUnit::resizeWaveform(int newlength) +{ + WaveformStat.resizeWaveform(newlength); +} + +BoxUnit::BoxUnit(Box B, int ID, int localID_) : UnitID(ID), localID(localID_) +{ + addBox(B); +} + +bool BoxUnit::isWaveFormInsideAllBoxes(SpikeObject *so) +{ + for (int k=0;k< lstBoxes.size();k++) + { + if (!lstBoxes[k].isWaveFormInside(so)) + return false; + } + return lstBoxes.size() == 0 ? false : true; +} + +bool BoxUnit::isActivated() +{ + return Active; +} + +void BoxUnit::activateUnit() +{ + Active = true; + Activated_TS_S = timer.getHighResolutionTicks(); +} + +void BoxUnit::deactivateUnit() +{ + Active = false; + Activated_TS_S = timer.getHighResolutionTicks(); + +} + +double BoxUnit::getNumSecondsActive() +{ + if (!Active) + return 0; + else + return (timer.getHighResolutionTicks() - Activated_TS_S) / timer.getHighResolutionTicksPerSecond(); +} + +void BoxUnit::toggleActive() +{ + if (Active) + deactivateUnit(); + else + activateUnit(); +} + +void BoxUnit::addBox(Box b) +{ + lstBoxes.push_back(b); +} + +void BoxUnit::addBox() +{ + Box B(50 + 350 * lstBoxes.size(), -20 - UnitID * 20, 300, 40); + lstBoxes.push_back(B); +} + +int BoxUnit::getNumBoxes() +{ + return lstBoxes.size(); +} + +void BoxUnit::modifyBox(int boxindex, Box b) +{ + lstBoxes[boxindex] = b; +} + + +bool BoxUnit::deleteBox(int boxindex) +{ + + if (lstBoxes.size() > boxindex) { + lstBoxes.erase(lstBoxes.begin()+boxindex); + return true; + } + return false; +} + +Box BoxUnit::getBox(int box) +{ + return lstBoxes[box]; +} + +void BoxUnit::setBox(int boxid, Box B) +{ + lstBoxes[boxid].x = B.x; + lstBoxes[boxid].y = B.y; + lstBoxes[boxid].w = B.w; + lstBoxes[boxid].h = B.h; +} + + +void BoxUnit::setBoxPos(int boxid, PointD P) +{ + lstBoxes[boxid].x = P.X; + lstBoxes[boxid].y = P.Y; +} + +void BoxUnit::setBoxSize(int boxid, double W, double H) +{ + lstBoxes[boxid].w = W; + lstBoxes[boxid].h = H; +} + +void BoxUnit::MoveBox(int boxid, int dx, int dy) +{ + lstBoxes[boxid].x += dx; + lstBoxes[boxid].y += dy; +} + +std::vector<Box> BoxUnit::getBoxes() +{ + return lstBoxes; +} + +// Members +int BoxUnit::getUnitID() +{ + return UnitID; +} + +int BoxUnit::getLocalID() +{ + return localID; +} + + +/************************/ + +Histogram::~Histogram() +{ + Time.clear(); + Counter.clear(); +} + +Histogram::Histogram() +{ + +} + +void Histogram::setParameters(int N, double T0, double T1) +{ + + t0 = T0; + t1 = T1; + numBins = N; + Time.resize(N); + Counter.resize(N); + for (int k = 0; k < N; k++) + { + Time[k] = (double)k / (N - 1) * (T1 - T0) + T0; + Counter[k] = 0; + } +} + +Histogram::Histogram(int N, double T0, double T1) +{ + t0 = T0; + t1 = T1; + numBins = N; + Time.resize(N); + Counter.resize(N); + for (int k = 0; k < N; k++) + { + Time[k] = (double)k / (N - 1) * (T1 - T0) + T0; + Counter[k] = 0; + } +} + +void Histogram::update(double x) { + int Bin = ((x - t0) / (t1 - t0) * (numBins-1)); + if (Bin >= 0 && Bin < numBins) + { + Counter[Bin]++; + if (Counter[Bin] > Max) + { + Max = Counter[Bin]; + } + } +} + +void Histogram::reset() +{ + Max = 0; + for (int k = 0; k < numBins; k++) + Counter[k] = 0; +} + +std::vector<int> Histogram::getCounter() +{ + return Counter; +} + + +/**********************/ +// computes statistics about the unit (non-trial related statistics) + + + +// Running variance... +//Mk = Mk-1+ (xk - Mk-1)/k +//Sk = Sk-1 + (xk - Mk-1)*(xk - Mk). +//For 2 ≤ k ≤ n, the kth estimate of the variance is s2 = Sk/(k - 1). +RunningStats::~RunningStats() +{ +} +RunningStats::RunningStats() +{ + hist.setParameters(101, 0, 100); // Inter spike histogram. Fixed range [0..100 ms] + numSamples = 0; +} + +void RunningStats::reset() +{ + numSamples = 0; + hist.reset(); +} + +Histogram RunningStats::getHistogram() +{ + return hist; +} + +std::vector<double> RunningStats::getMean(int index) +{ + std::vector<double> m; + + if (numSamples == 0) + { + return m; + } + + int numSamplesInWaveForm = WaveFormMean[0].size(); + m.resize(numSamplesInWaveForm); + + for (int k = 0; k < numSamplesInWaveForm; k++) + m[k] = WaveFormMean[index][k]; + return m; +} + +std::vector<double> RunningStats::getStandardDeviation(int index) +{ + std::vector<double> WaveFormVar; + + if (numSamples == 0) + { + return WaveFormVar; + } + int numSamplesInWaveForm = WaveFormMean[0].size(); + WaveFormVar.resize(numSamplesInWaveForm); + + for (int j = 0; j < numSamplesInWaveForm; j++) + { + if (numSamples - 1 == 0) + WaveFormVar[j] = 0; + else + WaveFormVar[j] = sqrt(WaveFormSk[index][j] / (numSamples - 1)); + } + return WaveFormVar; +} + + +void RunningStats::resizeWaveform(int newlength) +{ + numSamples = 0; // this should ensure that update reallocates upon the next update. +} + +void RunningStats::update(SpikeObject *so) +{ + double ts = so->timestamp/so->samplingFrequencyHz; + if (numSamples == 0) + { + LastSpikeTime = ts; + } + else + { + hist.update(1000.0 * (ts - LastSpikeTime)); + LastSpikeTime = ts; + } + + newData = true; + if (numSamples == 0) + { + // allocate + WaveFormMean.resize(so->nChannels); + WaveFormSk.resize(so->nChannels); + WaveFormMk.resize(so->nChannels); + for (int k=0;k<so->nChannels;k++) + { + WaveFormMean[k].resize(so->nSamples); + WaveFormSk[k].resize(so->nSamples); + WaveFormMk[k].resize(so->nSamples); + } + + for (int i = 0; i < so->nChannels; i++) + { + for (int j = 0; j < so->nSamples; j++) + { + WaveFormMean[i][j] = so->data[j + i*so->nSamples]; + WaveFormSk[i][j] = 0; + WaveFormMk[i][j] = so->data[j + i*so->nSamples]; + } + } + numSamples += 1.0F; + return; + } + // running mean + for (int i = 0; i < so->nChannels; i++) + { + for (int j = 0; j < so->nSamples; j++) + { + WaveFormMean[i][j] = (numSamples * WaveFormMean[i][j] + so->data[j + i*so->nSamples]) / (numSamples + 1); + WaveFormMk[i][j] += (so->data[j + i*so->nSamples] - WaveFormMk[i][j]) / numSamples; + WaveFormSk[i][j] += (so->data[j + i*so->nSamples] - WaveFormMk[i][j]) * (so->data[j + i*so->nSamples] - WaveFormMk[i][j]); + } + } + numSamples += 1.0F; +} + + +bool RunningStats::queryNewData() +{ + if (newData == false) + return false; + newData = false; + return true; +} + +void BoxUnit::updateWaveform(SpikeObject *so) +{ + WaveformStat.update(so); +} + + +/* + public bool QueryNewData() + { + return WaveFormStat.QueryNewData(); + } + + public Histogram GetInterSpikeHistogram() + { + return WaveFormStat.GetHistogram(); + } + + public void GetWaveFormMeanStd(out double[] Mean, out double[] Std, int index) + { + Mean = WaveFormStat.GetMean(index); + Std = WaveFormStat.GetStandardDeviation(index); + } + + public void ResetWaveForm() + { + WaveFormStat.Reset(); + } + + + } + */ + +/***********************************************/ + + SpikeSortBoxes::SpikeSortBoxes(UniqueIDgenerator *uniqueIDgenerator_,PCAcomputingThread *pth, int numch, double SamplingRate, int WaveFormLength) + { + uniqueIDgenerator = uniqueIDgenerator_; + computingThread = pth; + pc1 = pc2 = nullptr; + bufferSize = 200; + spikeBufferIndex = -1; + bPCAcomputed = false; + bPCAJobSubmitted = false; + bPCAjobFinished = false; + selectedUnit = -1; + selectedBox = -1; + bRePCA = false; + pc1min = -1; + pc2min = -1; + pc1max = 1; + pc2max = 1; + numChannels = numch; + waveformLength = WaveFormLength; + + pc1 = new float[numChannels * waveformLength]; + pc2 = new float[numChannels * waveformLength]; + for (int n = 0; n < bufferSize; n++) + { + SpikeObject so; + generateEmptySpike(&so, 4,waveformLength); + + spikeBuffer.add(so); + } + } + + void SpikeSortBoxes::resizeWaveform(int numSamples) + { + const ScopedLock myScopedLock (mut); + //StartCriticalSection(); + waveformLength = numSamples; + delete pc1; + delete pc2; + pc1 = new float[numChannels * waveformLength]; + pc2 = new float[numChannels * waveformLength]; + spikeBuffer.clear(); + for (int n = 0; n < bufferSize; n++) + { + SpikeObject so; + generateEmptySpike(&so, 4,waveformLength); + spikeBuffer.add(so); + } + bPCAcomputed = false; + spikeBufferIndex = 0; + for (int k=0;k<pcaUnits.size();k++) + { + pcaUnits[k].resizeWaveform(waveformLength); + } + for (int k=0;k<boxUnits.size();k++) + { + boxUnits[k].resizeWaveform(waveformLength); + } + //EndCriticalSection(); + } + + + + void SpikeSortBoxes::loadCustomParametersFromXml(XmlElement *electrodeNode) + { + + forEachXmlChildElement(*electrodeNode, spikesortNode) + { + if (spikesortNode->hasTagName("SPIKESORTING")) + { + int numBoxUnit = spikesortNode->getIntAttribute("numBoxUnits"); + int numPCAUnit = spikesortNode->getIntAttribute("numPCAUnits"); + selectedUnit = spikesortNode->getIntAttribute("selectedUnit"); + selectedBox = spikesortNode->getIntAttribute("selectedBox"); + + + pcaUnits.clear(); + boxUnits.clear(); + + forEachXmlChildElement(*spikesortNode, UnitNode) + { + if (UnitNode->hasTagName("PCA")) + { + numChannels = UnitNode->getIntAttribute("numChannels"); + waveformLength = UnitNode->getIntAttribute("waveformLength"); + + pc1min = UnitNode->getDoubleAttribute("pc1min"); + pc2min = UnitNode->getDoubleAttribute("pc2min"); + pc1max = UnitNode->getDoubleAttribute("pc1max"); + pc2max = UnitNode->getDoubleAttribute("pc2max"); + + bPCAjobFinished = UnitNode->getBoolAttribute("PCAjobFinished"); + bPCAcomputed = UnitNode->getBoolAttribute("PCAcomputed"); + + delete(pc1); + delete(pc2); + + pc1 = new float[waveformLength*numChannels]; + pc2 = new float[waveformLength*numChannels]; + int dimcounter = 0; + forEachXmlChildElement(*UnitNode, dimNode) + { + if (dimNode->hasTagName("PCA_DIM")) + { + pc1[dimcounter]=dimNode->getDoubleAttribute("pc1"); + pc2[dimcounter]=dimNode->getDoubleAttribute("pc2"); + dimcounter++; + } + } + } + + if (UnitNode->hasTagName("BOXUNIT")) + { + BoxUnit boxUnit; + boxUnit.UnitID = UnitNode->getIntAttribute("UnitID"); + boxUnit.ColorRGB[0] = UnitNode->getIntAttribute("ColorR"); + boxUnit.ColorRGB[1] = UnitNode->getIntAttribute("ColorG"); + boxUnit.ColorRGB[2] = UnitNode->getIntAttribute("ColorB"); + int numBoxes = UnitNode->getIntAttribute("NumBoxes"); + boxUnit.lstBoxes.resize(numBoxes); + int boxCounter = 0; + forEachXmlChildElement(*UnitNode, boxNode) + { + if (boxNode->hasTagName("BOX")) + { + Box box; + box.channel = boxNode->getIntAttribute("ch"); + box.x = boxNode->getDoubleAttribute("x"); + box.y = boxNode->getDoubleAttribute("y"); + box.w = boxNode->getDoubleAttribute("w"); + box.h = boxNode->getDoubleAttribute("h"); + boxUnit.lstBoxes[boxCounter++] = box; + } + } + // add box unit + boxUnits.push_back(boxUnit); + } + if (UnitNode->hasTagName("PCAUNIT")) + { + PCAUnit pcaUnit; + + pcaUnit.UnitID = UnitNode->getIntAttribute("UnitID"); + pcaUnit.ColorRGB[0] = UnitNode->getIntAttribute("ColorR"); + pcaUnit.ColorRGB[1] = UnitNode->getIntAttribute("ColorG"); + pcaUnit.ColorRGB[2] = UnitNode->getIntAttribute("ColorB"); + + int numPolygonPoints = UnitNode->getIntAttribute("PolygonNumPoints"); + pcaUnit.poly.pts.resize(numPolygonPoints); + pcaUnit.poly.offset.X = UnitNode->getDoubleAttribute("PolygonOffsetX"); + pcaUnit.poly.offset.Y = UnitNode->getDoubleAttribute("PolygonOffsetY"); + // read polygon + int pointCounter = 0; + forEachXmlChildElement(*UnitNode, polygonPoint) + { + if (polygonPoint->hasTagName("POLYGON_POINT")) + { + pcaUnit.poly.pts[pointCounter].X = polygonPoint->getDoubleAttribute("pointX"); + pcaUnit.poly.pts[pointCounter].Y = polygonPoint->getDoubleAttribute("pointY"); + pointCounter++; + } + } + // add polygon unit + pcaUnits.push_back(pcaUnit); + } + } + } + } + } + + void SpikeSortBoxes::saveCustomParametersToXml(XmlElement *electrodeNode) + { + + XmlElement* spikesortNode = electrodeNode->createNewChildElement("SPIKESORTING"); + spikesortNode->setAttribute("numBoxUnits", (int)boxUnits.size()); + spikesortNode->setAttribute("numPCAUnits", (int)pcaUnits.size()); + spikesortNode->setAttribute("selectedUnit",selectedUnit); + spikesortNode->setAttribute("selectedBox",selectedBox); + + + XmlElement* pcaNode = electrodeNode->createNewChildElement("PCA"); + pcaNode->setAttribute("numChannels",numChannels); + pcaNode->setAttribute("waveformLength",waveformLength); + pcaNode->setAttribute("pc1min", pc1min); + pcaNode->setAttribute("pc2min", pc2min); + pcaNode->setAttribute("pc1max", pc1max); + pcaNode->setAttribute("pc2max", pc2max); + + pcaNode->setAttribute("PCAjobFinished", bPCAjobFinished); + pcaNode->setAttribute("PCAcomputed", bPCAcomputed); + + for (int k=0;k<numChannels*waveformLength;k++) + { + XmlElement* dimNode = pcaNode->createNewChildElement("PCA_DIM"); + dimNode->setAttribute("pc1",pc1[k]); + dimNode->setAttribute("pc2",pc2[k]); + } + + for (int boxUnitIter=0;boxUnitIter<boxUnits.size();boxUnitIter++) + { + XmlElement* BoxUnitNode = spikesortNode->createNewChildElement("BOXUNIT"); + + BoxUnitNode->setAttribute("UnitID",boxUnits[boxUnitIter].UnitID); + BoxUnitNode->setAttribute("ColorR",boxUnits[boxUnitIter].ColorRGB[0]); + BoxUnitNode->setAttribute("ColorG",boxUnits[boxUnitIter].ColorRGB[1]); + BoxUnitNode->setAttribute("ColorB",boxUnits[boxUnitIter].ColorRGB[2]); + BoxUnitNode->setAttribute("NumBoxes", (int)boxUnits[boxUnitIter].lstBoxes.size()); + for (int boxIter=0;boxIter<boxUnits[boxUnitIter].lstBoxes.size();boxIter++) + { + XmlElement* BoxNode = BoxUnitNode->createNewChildElement("BOX"); + BoxNode->setAttribute("ch", (int)boxUnits[boxUnitIter].lstBoxes[boxIter].channel); + BoxNode->setAttribute("x", (int)boxUnits[boxUnitIter].lstBoxes[boxIter].x); + BoxNode->setAttribute("y", (int)boxUnits[boxUnitIter].lstBoxes[boxIter].y); + BoxNode->setAttribute("w", (int)boxUnits[boxUnitIter].lstBoxes[boxIter].w); + BoxNode->setAttribute("h", (int)boxUnits[boxUnitIter].lstBoxes[boxIter].h); + } + } + + for (int pcaUnitIter=0;pcaUnitIter<pcaUnits.size();pcaUnitIter++) + { + XmlElement* PcaUnitNode = spikesortNode->createNewChildElement("PCAUNIT"); + + PcaUnitNode->setAttribute("UnitID",pcaUnits[pcaUnitIter].UnitID); + PcaUnitNode->setAttribute("ColorR",pcaUnits[pcaUnitIter].ColorRGB[0]); + PcaUnitNode->setAttribute("ColorG",pcaUnits[pcaUnitIter].ColorRGB[1]); + PcaUnitNode->setAttribute("ColorB",pcaUnits[pcaUnitIter].ColorRGB[2]); + PcaUnitNode->setAttribute("PolygonNumPoints",(int)pcaUnits[pcaUnitIter].poly.pts.size()); + PcaUnitNode->setAttribute("PolygonOffsetX",(int)pcaUnits[pcaUnitIter].poly.offset.X); + PcaUnitNode->setAttribute("PolygonOffsetY",(int)pcaUnits[pcaUnitIter].poly.offset.Y); + + for (int p=0;p<pcaUnits[pcaUnitIter].poly.pts.size();p++) + { + XmlElement* PolygonNode = PcaUnitNode->createNewChildElement("POLYGON_POINT"); + PolygonNode->setAttribute("pointX", pcaUnits[pcaUnitIter].poly.pts[p].X); + PolygonNode->setAttribute("pointY", pcaUnits[pcaUnitIter].poly.pts[p].Y); + } + } + + + //float *pc1, *pc2; + + + } + +SpikeSortBoxes::~SpikeSortBoxes() +{ + // wait until PCA job is done (if one was submitted). + delete pc1; + delete pc2; + pc1 = nullptr; + pc2 = nullptr; +} + +void SpikeSortBoxes::setSelectedUnitAndBox(int unitID, int boxID) +{ + selectedUnit = unitID; + selectedBox = boxID; +} + +void SpikeSortBoxes::getSelectedUnitAndBox(int &unitID, int &boxid) +{ + unitID = selectedUnit; + boxid = selectedBox; +} + +void SpikeSortBoxes::projectOnPrincipalComponents(SpikeObject *so) +{ + SpikeObject copySpike = *so; + spikeBufferIndex++; + spikeBufferIndex %= bufferSize; + spikeBuffer.set(spikeBufferIndex, copySpike); + if (bPCAjobFinished) + { + bPCAcomputed = true; + } + + if (bPCAcomputed) + { + so->pcProj[0] = so->pcProj[1] = 0; + for (int k=0;k<so->nChannels*so->nSamples;k++) + { + float v = spikeDataIndexToMicrovolts(so, k); + so->pcProj[0] += pc1[k]* v; + so->pcProj[1] += pc2[k]* v; + } + if (so->pcProj[0] > 1e5 || so->pcProj[0] < -1e5 || so->pcProj[1] > 1e5 || so->pcProj[1] < -1e5) + { + int dbg = 1; + } + } else + { + // add a spike object to the buffer. + // if we have enough spikes, start the PCA computation thread. + if ((spikeBufferIndex == bufferSize -1 && !bPCAcomputed && !bPCAJobSubmitted) || bRePCA) + { + bPCAJobSubmitted = true; + bRePCA = false; + // submit a new job to compute the spike buffer. + PCAjob job(spikeBuffer,pc1,pc2, &pc1min, &pc2min, &pc1max, &pc2max, &bPCAjobFinished); + computingThread->addPCAjob(job); + } + } +} + + void SpikeSortBoxes::getPCArange(float &p1min,float &p2min, float &p1max, float &p2max) + { + p1min = pc1min; + p2min = pc2min; + p1max = pc1max; + p2max = pc2max; + } + + void SpikeSortBoxes::setPCArange(float p1min,float p2min, float p1max, float p2max) + { + pc1min=p1min; + pc2min=p2min; + pc1max=p1max; + pc2max=p2max; + } + + + void SpikeSortBoxes::resetJobStatus() + { + bPCAjobFinished = false; + } + + bool SpikeSortBoxes::isPCAfinished() + { + return bPCAjobFinished; + } + void SpikeSortBoxes::RePCA() + { + bPCAcomputed = false; + bPCAJobSubmitted = false; + bRePCA = true; + } + + void SpikeSortBoxes::addPCAunit(PCAUnit unit) + { + const ScopedLock myScopedLock (mut); + //StartCriticalSection(); + pcaUnits.push_back(unit); + //EndCriticalSection(); + } + + // Adds a new unit with a single box at some default location. + // returns the unit id + int SpikeSortBoxes::addBoxUnit(int channel) + { + const ScopedLock myScopedLock (mut); + //StartCriticalSection(); + int unusedID = uniqueIDgenerator->generateUniqueID(); //generateUnitID(); + BoxUnit unit(unusedID, generateLocalID()); + boxUnits.push_back(unit); + setSelectedUnitAndBox(unusedID, 0); + //EndCriticalSection(); + return unusedID; + } +/* +void SpikeSortBoxes::StartCriticalSection() +{ + mut.enter(); +} + +void SpikeSortBoxes::EndCriticalSection() +{ + mut.exit(); +} +*/ + int SpikeSortBoxes::addBoxUnit(int channel, Box B) + { + const ScopedLock myScopedLock (mut); + //StartCriticalSection(); + int unusedID = uniqueIDgenerator->generateUniqueID(); //generateUnitID(); + BoxUnit unit(B, unusedID,generateLocalID()); + boxUnits.push_back(unit); + setSelectedUnitAndBox(unusedID, 0); + //EndCriticalSection(); + return unusedID; + } + + void SpikeSortBoxes::getUnitColor(int UnitID, uint8 &R, uint8 &G, uint8 &B) + { + for (int k = 0; k < boxUnits.size(); k++) + { + if (boxUnits[k].getUnitID() == UnitID) + { + R = boxUnits[k].ColorRGB[0]; + G = boxUnits[k].ColorRGB[1]; + B = boxUnits[k].ColorRGB[2]; + break; + } + } + for (int k = 0; k < pcaUnits.size(); k++) + { + if (pcaUnits[k].getUnitID() == UnitID) + { + R = pcaUnits[k].ColorRGB[0]; + G = pcaUnits[k].ColorRGB[1]; + B = pcaUnits[k].ColorRGB[2]; + break; + } + } + } + + int SpikeSortBoxes::generateLocalID() + { + // finds the first unused ID and return it + + int ID = 1; + + while (true) + { + bool used=false; + for (int k = 0; k < boxUnits.size(); k++) + { + if (boxUnits[k].getLocalID() == ID) + { + used = true; + break; + } + } + for (int k = 0; k < pcaUnits.size(); k++) + { + if (pcaUnits[k].getLocalID() == ID) + { + used = true; + break; + } + } + + if (used) + ID++; + else + break; + } + return ID; + } + + int SpikeSortBoxes::generateUnitID() + { + + int ID = uniqueIDgenerator->generateUniqueID(); + return ID; +} + + + void SpikeSortBoxes::generateNewIDs() + { + const ScopedLock myScopedLock (mut); + for (int k=0;k<boxUnits.size();k++) + { + boxUnits[k].UnitID = generateUnitID(); + } + for (int k=0;k<pcaUnits.size();k++) + { + pcaUnits[k].UnitID = generateUnitID(); + } + } + +void SpikeSortBoxes::removeAllUnits() +{ + const ScopedLock myScopedLock (mut); + boxUnits.clear(); + pcaUnits.clear(); +} + +bool SpikeSortBoxes::removeUnit(int unitID) +{ + const ScopedLock myScopedLock (mut); + //StartCriticalSection(); + for (int k=0;k<boxUnits.size();k++) + { + if ( boxUnits[k].getUnitID() == unitID) + { + boxUnits.erase(boxUnits.begin()+k); + //EndCriticalSection(); + return true; + } + } + + for (int k=0;k<pcaUnits.size();k++) + { + if ( pcaUnits[k].getUnitID() == unitID) + { + pcaUnits.erase(pcaUnits.begin()+k); + //EndCriticalSection(); + return true; + } + } + + // EndCriticalSection(); + return false; + +} + +bool SpikeSortBoxes::addBoxToUnit(int channel, int unitID) +{ + const ScopedLock myScopedLock (mut); + + //StartCriticalSection(); + + for (int k = 0; k < boxUnits.size(); k++) + { + if (boxUnits[k].getUnitID() == unitID) + { + Box B = boxUnits[k].lstBoxes[boxUnits[k].lstBoxes.size() - 1]; + B.x += 100; + B.y -= 30; + B.channel = channel; + boxUnits[k].addBox(B); + setSelectedUnitAndBox(unitID, boxUnits[k].lstBoxes.size() - 1); + // EndCriticalSection(); + return true; + } + } +// EndCriticalSection(); + return false; +} + + +bool SpikeSortBoxes::addBoxToUnit(int channel, int unitID, Box B) +{ + const ScopedLock myScopedLock (mut); + //StartCriticalSection(); + for (int k=0;k<boxUnits.size();k++) + { + if ( boxUnits[k].getUnitID() == unitID) + { + boxUnits[k].addBox(B); + // EndCriticalSection(); + return true; + } + } + //EndCriticalSection(); + return false; +} + +std::vector<BoxUnit> SpikeSortBoxes::getBoxUnits() +{ + //StartCriticalSection(); + const ScopedLock myScopedLock (mut); + std::vector<BoxUnit> unitsCopy = boxUnits; + //EndCriticalSection(); + return unitsCopy; +} + + +std::vector<PCAUnit> SpikeSortBoxes::getPCAUnits() +{ + //StartCriticalSection(); + const ScopedLock myScopedLock (mut); + std::vector<PCAUnit> unitsCopy = pcaUnits; + //EndCriticalSection(); + return unitsCopy; +} + +void SpikeSortBoxes::updatePCAUnits(std::vector<PCAUnit> _units) +{ + //StartCriticalSection(); + const ScopedLock myScopedLock (mut); + pcaUnits = _units; + //EndCriticalSection(); +} + +void SpikeSortBoxes::updateBoxUnits(std::vector<BoxUnit> _units) +{ + const ScopedLock myScopedLock (mut); + //StartCriticalSection(); + boxUnits = _units; + //EndCriticalSection(); +} + + + + +// tests whether a candidate spike belongs to one of the defined units +bool SpikeSortBoxes::sortSpike(SpikeObject *so, bool PCAfirst) +{ + const ScopedLock myScopedLock (mut); + if (PCAfirst) { + + for (int k=0;k<pcaUnits.size();k++) + { + if (pcaUnits[k].isWaveFormInsidePolygon(so)) + { + so->sortedId = pcaUnits[k].getUnitID(); + so->color[0] = pcaUnits[k].ColorRGB[0]; + so->color[1] = pcaUnits[k].ColorRGB[1]; + so->color[2] = pcaUnits[k].ColorRGB[2]; + return true; + } + } + + for (int k=0;k<boxUnits.size();k++) + { + if ( boxUnits[k].isWaveFormInsideAllBoxes(so)) { + so->sortedId = boxUnits[k].getUnitID(); + so->color[0] = boxUnits[k].ColorRGB[0]; + so->color[1] = boxUnits[k].ColorRGB[1]; + so->color[2] = boxUnits[k].ColorRGB[2]; + boxUnits[k].updateWaveform(so); + return true; + } + } + } else + { + + for (int k=0;k<boxUnits.size();k++) + { + if ( boxUnits[k].isWaveFormInsideAllBoxes(so)) { + so->sortedId = boxUnits[k].getUnitID(); + so->color[0] = boxUnits[k].ColorRGB[0]; + so->color[1] = boxUnits[k].ColorRGB[1]; + so->color[2] = boxUnits[k].ColorRGB[2]; + boxUnits[k].updateWaveform(so); + return true; + } + } + for (int k=0;k<pcaUnits.size();k++) + { + if (pcaUnits[k].isWaveFormInsidePolygon(so)) + { + so->sortedId = pcaUnits[k].getUnitID(); + so->color[0] = pcaUnits[k].ColorRGB[0]; + so->color[1] = pcaUnits[k].ColorRGB[1]; + so->color[2] = pcaUnits[k].ColorRGB[2]; + pcaUnits[k].updateWaveform(so); + return true; + } + } + + } + + return false; +} + + +bool SpikeSortBoxes::removeBoxFromUnit(int unitID, int boxIndex) +{ + const ScopedLock myScopedLock (mut); + //StartCriticalSection(); + for (int k=0;k<boxUnits.size();k++) + { + if ( boxUnits[k].getUnitID() == unitID) + { + bool s= boxUnits[k].deleteBox(boxIndex); + setSelectedUnitAndBox(-1,-1); + //EndCriticalSection(); + return s; + } + + } + + //EndCriticalSection(); + return false; +} + +std::vector<Box> SpikeSortBoxes::getUnitBoxes(int unitID) +{ + std::vector<Box> boxes; + const ScopedLock myScopedLock (mut); + //StartCriticalSection(); + for (int k=0;k< boxUnits.size();k++) + { + if ( boxUnits[k].getUnitID() == unitID) + { + + boxes = boxUnits[k].getBoxes(); + // EndCriticalSection(); + return boxes; + } + } + //EndCriticalSection(); + return boxes; +} + + +int SpikeSortBoxes::getNumBoxes(int unitID) +{ + const ScopedLock myScopedLock (mut); + // StartCriticalSection(); + for (int k=0;k< boxUnits.size();k++) + { + if ( boxUnits[k].getUnitID() == unitID) + { + + int n =boxUnits[k].getNumBoxes(); + // EndCriticalSection(); + return n; + } + } + //EndCriticalSection(); + return -1; +} + +/* + public void DrawBoxes(BufferedGraphics buf, int channel, int SelectedUnit, int SelectedBox, + double XScale, double XOffset, double YScale, double YOffset) + { + mut.WaitOne(); + int unitcounter=0; + foreach (BoxUnit unit in lstChannelUnits[channel]) + { + Pen myPen = new Pen(unit.ColorRGB); + int boxcounter =0; + foreach (Box b in unit.getBoxes()) + { + if (unit.GetUnitID() == SelectedUnit && SelectedBox == boxcounter) + { + myPen.Width = 3; + + } + else + { + myPen.Width = 1; + } + + buf.Graphics.DrawRectangle(myPen, (float)(b.x * XScale + XOffset), + (float)(YOffset-YScale*b.y), + (float)((b.w) * XScale), + (float)(YScale*b.h)); + boxcounter++; + } + unitcounter++; + } + mut.ReleaseMutex(); + } + + public bool IsUnitActivated(int channel, int unitID) + { + foreach (BoxUnit unit in lstChannelUnits[channel]) + if (unit.GetUnitID() == unitID) + return unit.IsActivated(); + return false; + } + + public void ActivateUnit(int channel, int unitID) + { + foreach (BoxUnit unit in lstChannelUnits[channel]) + if (unit.GetUnitID() == unitID) + unit.ActivateUnit(); + } + public void DectivateUnit(int channel, int unitID) + { + foreach (BoxUnit unit in lstChannelUnits[channel]) + if (unit.GetUnitID() == unitID) + unit.DeactivateUnit(); + } + public double GetNumSecUnitActive(int channel, int unitID) + { + foreach (BoxUnit unit in lstChannelUnits[channel]) + if (unit.GetUnitID() == unitID) + return unit.GetNumSecondsActive(); + + return 0; + } + public void ToggleActivate(int channel, int unitID) + { + foreach (BoxUnit unit in lstChannelUnits[channel]) + if (unit.GetUnitID() == unitID) + unit.ToggleActive(); + } + + + public void UpdateUnitBoxPos(int channel, int unitID, int boxID, PointD P) + { + foreach (BoxUnit unit in lstChannelUnits[channel]) + if (unit.GetUnitID() == unitID) + unit.SetBoxPos(boxID,P); + } + + public void UpdateUnitBoxPosAndSize(int channel, int unitID, int boxID, Box B) + { + foreach (BoxUnit unit in lstChannelUnits[channel]) + if (unit.GetUnitID() == unitID) + unit.SetBox(boxID, B); + } + + + //YScaleFactors[yScaleIndex] + public void DrawWavesInBuffer(BufferedGraphics buf, int channel, double XScale, double YScale, double YOffset) + { + mut.WaitOne(); + foreach (WaveForm wf in WaveFormBuffer[channel]) + { + Pen myPen = new Pen(wf.colorRGB); + for (int j = 0; j < wf.numpts - 1; j++) + { + buf.Graphics.DrawLine(myPen, + (float)(XScale * j), + (float)(YOffset - YScale * wf.Wave[wf.detected_on_channel_index, j]), + (float)(XScale * (j + 1)), (float)(YOffset - YScale * wf.Wave[wf.detected_on_channel_index, j + 1])); + } + } + mut.ReleaseMutex(); + } + + public void ClearAvgWaveForm(int channel, int UnitID) + { + foreach (BoxUnit unit in lstChannelUnits[channel]) + { + if (unit.GetUnitID() == UnitID) + { + unit.ResetWaveForm(); + return; + } + } + } + + public void GetWaveFormsMeanVar(int Channel, out double[,] Mean, out double[,] Std, out int[] UnitIDs, out Boolean[] HasData) + { + mut.WaitOne(); + int Counter=0,dim1; + if (WaveFormBuffer[0].Count == 0) + dim1 = 62; + else + dim1 = WaveFormBuffer[0][0].Wave.GetLength(1); + + HasData = new Boolean[lstChannelUnits[Channel].Count]; + Mean = new double[lstChannelUnits[Channel].Count,dim1]; + Std = new double[lstChannelUnits[Channel].Count,dim1]; + UnitIDs = new int[lstChannelUnits[Channel].Count]; + foreach (BoxUnit unit in lstChannelUnits[Channel]) + { + double[] MeanUnit, StdUnit; + HasData[Counter] = false; + UnitIDs[Counter] = unit.GetUnitID(); + unit.GetWaveFormMeanStd(out MeanUnit, out StdUnit, 0); + if (MeanUnit == null) + { + Counter++; + continue; + } + HasData[Counter] = true; + for (int j = 0; j < dim1; j++) + { + Mean[Counter,j] = MeanUnit[j]; + Std[Counter, j] = StdUnit[j]; + } + + Counter++; + } + mut.ReleaseMutex(); + } + + + private bool GetUnit(int Channel, int UnitID, out BoxUnit box) + { + box = new BoxUnit(0); + foreach (BoxUnit unit in lstChannelUnits[Channel]) + { + if (unit.GetUnitID() == UnitID) + { + box = unit; + return true; + } + } + return false; + } + + public void DrawInterSpikeHistogram(int channel, int UnitID, BufferedGraphics buf, int Width, int Height) + { + mut.WaitOne(); + BoxUnit unit; + if (!GetUnit(channel, UnitID, out unit)) + { + mut.ReleaseMutex(); + return; + } + + Color FadedColor = Color.FromArgb(unit.ColorRGB.A, unit.ColorRGB.R / 2, unit.ColorRGB.G / 2, unit.ColorRGB.B / 2); + Pen myPen = new Pen(FadedColor); + + int NumPointsToDraw = 30; + float XScale = (float)Width / NumPointsToDraw; + Histogram hist = unit.GetInterSpikeHistogram(); + SolidBrush myBrush = new SolidBrush(FadedColor); + SolidBrush myRedBrush = new SolidBrush(Color.Red); + if (hist.Max > 0) + { + float YScale = (float)Height / hist.Max; + + for (int j = 0; j < NumPointsToDraw - 1; j++) + { + if (j > 2) + buf.Graphics.FillRectangle(myBrush, new Rectangle((int)(XScale * (j + 0.5)), (int)(Height - YScale * hist.Counter[j]), (int)(Width / NumPointsToDraw), (int)(YScale * hist.Counter[j]))); + else + buf.Graphics.FillRectangle(myRedBrush, new Rectangle((int)(XScale * (j + 0.5)), (int)(Height - YScale * hist.Counter[j]), (int)(Width / NumPointsToDraw), (int)(YScale * hist.Counter[j]))); + + } + } + mut.ReleaseMutex(); + } + + + public void DrawAvgWaveForm(int channel, int UnitID, BufferedGraphics buf, int Width, int Height, double YScale ) + { + BoxUnit unit; + mut.WaitOne(); + if (!GetUnit(channel, UnitID, out unit)) + { + mut.ReleaseMutex(); + return; + } + + double [] Mean; + double [] Std; + unit.GetWaveFormMeanStd(out Mean, out Std, 0); + if (Mean == null) + { + mut.ReleaseMutex(); + return; + } + + + Pen myPen = new Pen(unit.ColorRGB); + Pen myDashPen = new Pen(unit.ColorRGB); + myDashPen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot; + + int WaveFormLength = Mean.Length; + float XScale = (float)Width / 62.0F; + float YOffset = (float)Height / 2.0F; + + for (int j = 0; j < WaveFormLength - 1; j++) + { + buf.Graphics.DrawLine(myPen, + (float)(XScale * j), + (float)(YOffset - YScale * Mean[j]), + (float)(XScale * (j + 1)), (float)(YOffset - YScale * Mean[j + 1])); + + buf.Graphics.DrawLine(myDashPen, + (float)(XScale * j), + (float)(YOffset - YScale * (Std[ j] + Mean[ j])), + (float)(XScale * (j + 1)), (float)(YOffset - YScale * (Std[ j + 1] +Mean[ j + 1]))); + + buf.Graphics.DrawLine(myDashPen, + (float)(XScale * j), + (float)(YOffset - YScale * (-Std[ j] + Mean[ j])), + (float)(XScale * (j + 1)), (float)(YOffset - YScale * (-Std[j + 1] + Mean[ j + 1]))); + + } + mut.ReleaseMutex(); + } + + + public Histogram GetInterSpikeHistogram(int channel, int unitID) + { + foreach (BoxUnit unit in lstChannelUnits[channel]) + { + if (unit.GetUnitID() == unitID) + { + return unit.GetInterSpikeHistogram(); + } + } + return new Histogram(0,0,0); + } + + public bool QueryNewData(int channel, int unitID) + { + foreach (BoxUnit unit in lstChannelUnits[channel]) + { + if (unit.GetUnitID() == unitID) + { + return unit.QueryNewData(); + } + } + return false; + } + + public void ClearBuffer(int ch) + { + WaveFormBuffer[ch].Clear(); + } + + public WaveForm GetLastWaveForm(int channel) + { + mut.WaitOne(); + WaveForm wf ; + if (WaveFormBuffer[channel].Count > 0) + wf = WaveFormBuffer[channel][WaveFormBuffer[channel].Count - 1]; + else + wf = new WaveForm(); + + mut.ReleaseMutex(); + return wf; + } + + */ + +/**************************/ + +cPolygon::cPolygon() +{ +}; + +bool cPolygon::isPointInside(PointD p) +{ + PointD p1, p2; + + bool inside = false; + + if (pts.size() < 3) + { + return inside; + } + + PointD oldPoint(pts[pts.size()- 1].X + offset.X, pts[pts.size()- 1].Y + offset.Y); + + for (int i = 0; i < pts.size(); i++) + { + PointD newPoint(pts[i].X + offset.X, pts[i].Y + offset.Y); + + if (newPoint.X > oldPoint.X) + { + p1 = oldPoint; + p2 = newPoint; + } + else + { + p1 = newPoint; + p2 = oldPoint; + } + + if ((newPoint.X < p.X) == (p.X <= oldPoint.X) + && ((p.Y - p1.Y) * (p2.X - p1.X) < (p2.Y - p1.Y) * (p.X - p1.X))) + { + inside = !inside; + } + + oldPoint = newPoint; + } + + return inside; +} + + + + + + + + + +/*****************/ + + +/*************************/ +PCAUnit::PCAUnit() +{ + +} + +PCAUnit::PCAUnit(int ID, int localID_): UnitID(ID),localID(localID_) +{ + BoxUnit::setDefaultColors(ColorRGB, localID); +}; + +PCAUnit::~PCAUnit() +{ +} + +PCAUnit::PCAUnit(cPolygon B, int ID, int localID_) : UnitID(ID), localID(localID_) +{ + poly = B; +} + +int PCAUnit::getUnitID() +{ + return UnitID; +} +int PCAUnit::getLocalID() +{ + return localID; +} + +bool PCAUnit::isPointInsidePolygon(PointD p) +{ + return poly.isPointInside(p); +} + +bool PCAUnit::isWaveFormInsidePolygon(SpikeObject *so) +{ + return poly.isPointInside(PointD(so->pcProj[0],so->pcProj[1])); +} + +void PCAUnit::resizeWaveform(int newlength) +{ +} + + +void PCAUnit::updateWaveform(SpikeObject *so) +{ + WaveformStat.update(so); +} + +/***************************/ + + +/* + An implementation of SVD from Numerical Recipes in C and Mike Erhdmann's lectures +*/ + + +#define SIGN(a,b) ((b) > 0.0 ? fabs(a) : - fabs(a)) + +static double maxarg1,maxarg2; +#define FMAX(a,b) (maxarg1 = (a),maxarg2 = (b),(maxarg1) > (maxarg2) ? (maxarg1) : (maxarg2)) + +static int iminarg1,iminarg2; +#define IMIN(a,b) (iminarg1 = (a),iminarg2 = (b),(iminarg1 < (iminarg2) ? (iminarg1) : iminarg2)) + +static double sqrarg; +#define SQR(a) ((sqrarg = (a)) == 0.0 ? 0.0 : sqrarg * sqrarg) + +PCAjob::PCAjob(Array<SpikeObject> _spikes, float *_pc1, float *_pc2, + float *pc1Min, float *pc2Min, float *pc1Max, float *pc2Max, bool *_reportDone) : spikes(_spikes), reportDone(_reportDone) +{ + cov = nullptr; + pc1 = _pc1; + pc2 = _pc2; + pc1min = pc1Min; + pc2min = pc2Min; + pc1max = pc1Max; + pc2max = pc2Max; + dim = spikes[0].nChannels*spikes[0].nSamples; + +}; + + PCAjob::~PCAjob() +{ + +} + + + +// calculates sqrt( a^2 + b^2 ) with decent precision +float PCAjob::pythag(float a, float b) { + float absa,absb; + + absa = fabs(a); + absb = fabs(b); + + if(absa > absb) + return(absa * sqrt(1.0 + SQR(absb/absa))); + else + return(absb == 0.0 ? 0.0 : absb * sqrt(1.0 + SQR(absa / absb))); +} + +/* + Modified from Numerical Recipes in C + Given a matrix a[nRows][nCols], svdcmp() computes its singular value + decomposition, A = U * W * Vt. A is replaced by U when svdcmp + returns. The diagonal matrix W is output as a vector w[nCols]. + V (not V transpose) is output as the matrix V[nCols][nCols]. +*/ +int PCAjob::svdcmp(float **a, int nRows, int nCols, float *w, float **v) { + + int flag, i, its, j, jj, k, l, nm; + float anorm, c, f, g, h, s, scale, x, y, z, *rv1; + + rv1 = new float[nCols]; + if(rv1 == NULL) { + printf("svdcmp(): Unable to allocate vector\n"); + return(-1); + } + + g = scale = anorm = 0.0; + for(i = 0; i < nCols; i++) { + l = i+1; + rv1[i] = scale*g; + g = s = scale = 0.0; + if (i < nRows) + { + for(k = i; k < nRows; k++) + { + //std::cout << k << " " << i << std::endl; + scale += fabs(a[k][i]); + } + + if(scale) + { + for(k = i; k < nRows; k++) + { + a[k][i] /= scale; + s += a[k][i] * a[k][i]; + } + f = a[i][i]; + g = -SIGN(sqrt(s),f); + h = f * g - s; + a[i][i] = f - g; + + for(j = l; j < nCols; j++) + { + for(s = 0.0, k = i; k < nRows; k++) s += a[k][i] * a[k][j]; + f = s / h; + for(k = i; k < nRows; k++) a[k][j] += f * a[k][i]; + } + + for(k = i; k < nRows; k++) + a[k][i] *= scale; + } // end if (scale) + } // end if (i < nRows) + w[i] = scale * g; + g = s = scale = 0.0; + if(i < nRows && i != nCols-1) { + for(k = l; k < nCols; k++) scale += fabs(a[i][k]); + if(scale) { + for(k = l; k < nCols; k++) + { + a[i][k] /= scale; + s += a[i][k] * a[i][k]; + } + f = a[i][l]; + g = - SIGN(sqrt(s),f); + h = f * g - s; + a[i][l] = f - g; + for(k=l;k<nCols;k++) rv1[k] = a[i][k] / h; + for(j=l;j<nRows;j++) { + for(s=0.0,k=l;k<nCols;k++) s += a[j][k] * a[i][k]; + for(k=l;k<nCols;k++) a[j][k] += s * rv1[k]; + } + for(k=l;k<nCols;k++) a[i][k] *= scale; + } + } + anorm = FMAX(anorm, (fabs(w[i]) + fabs(rv1[i]))); + + + } + + for(i=nCols-1;i>=0;i--) { + if(i < nCols-1) { + if(g) { + for(j=l;j<nCols;j++) + v[j][i] = (a[i][j] / a[i][l]) / g; + for(j=l;j<nCols;j++) { + for(s=0.0,k=l;k<nCols;k++) s += a[i][k] * v[k][j]; + for(k=l;k<nCols;k++) v[k][j] += s * v[k][i]; + } + } + for(j=l;j<nCols;j++) v[i][j] = v[j][i] = 0.0; + } + v[i][i] = 1.0; + g = rv1[i]; + l = i; + } + + for(i=IMIN(nRows,nCols) - 1;i >= 0;i--) { + l = i + 1; + g = w[i]; + for(j=l;j<nCols;j++) a[i][j] = 0.0; + if(g) { + g = 1.0 / g; + for(j=l;j<nCols;j++) { + for(s=0.0,k=l;k<nRows;k++) s += a[k][i] * a[k][j]; + f = (s / a[i][i]) * g; + for(k=i;k<nRows;k++) a[k][j] += f * a[k][i]; + } + for(j=i;j<nRows;j++) a[j][i] *= g; + } + else + for(j=i;j<nRows;j++) a[j][i] = 0.0; + ++a[i][i]; + } + + for(k=nCols-1;k>=0;k--) { + for(its=0;its<30;its++) { + flag = 1; + for(l=k;l>=0;l--) { + nm = l-1; + if((fabs(rv1[l]) + anorm) == anorm) { + flag = 0; + break; + } + if((fabs(w[nm]) + anorm) == anorm) break; + } + if(flag) { + c = 0.0; + s = 1.0; + for(i=l;i<=k;i++) { + f = s * rv1[i]; + rv1[i] = c * rv1[i]; + if((fabs(f) + anorm) == anorm) break; + g = w[i]; + h = pythag(f,g); + w[i] = h; + h = 1.0 / h; + c = g * h; + s = -f * h; + for(j=0;j<nRows;j++) { + y = a[j][nm]; + z = a[j][i]; + a[j][nm] = y * c + z * s; + a[j][i] = z * c - y * s; + } + } + } + z = w[k]; + if(l == k) { + if(z < 0.0) { + w[k] = -z; + for(j=0;j<nCols;j++) v[j][k] = -v[j][k]; + } + break; + } + //if(its == 29) printf("no convergence in 30 svdcmp iterations\n"); + x = w[l]; + nm = k-1; + y = w[nm]; + g = rv1[nm]; + h = rv1[k]; + f = ((y - z) * (y + z) + (g - h) * (g + h)) / (2.0 * h * y); + g = pythag(f,1.0); + f = ((x - z) * (x + z) + h * ((y / (f + SIGN(g,f))) - h)) / x; + c = s = 1.0; + for(j=l;j<=nm;j++) { + i = j+1; + g = rv1[i]; + y = w[i]; + h = s * g; + g = c * g; + z = pythag(f,h); + rv1[j] = z; + c = f/z; + s = h/z; + f = x * c + g * s; + g = g * c - x * s; + h = y * s; + y *= c; + for(jj=0;jj<nCols;jj++) { + x = v[jj][j]; + z = v[jj][i]; + v[jj][j] = x * c + z * s; + v[jj][i] = z * c - x * s; + } + z = pythag(f,h); + w[j] = z; + if(z) { + z = 1.0 / z; + c = f * z; + s = h * z; + } + f = c * g + s * y; + x = c * y - s * g; + for(jj=0;jj < nRows;jj++) { + y = a[jj][j]; + z = a[jj][i]; + a[jj][j] = y * c + z * s; + a[jj][i] = z * c - y * s; + } + } + rv1[l] = 0.0; + rv1[k] = f; + w[k] = x; + } + } + + delete rv1; + + return(0); +} + + +void PCAjob::computeCov() +{ + // allocate and zero + cov = new float*[dim]; + float* mean = new float[dim]; + for (int k = 0;k < dim; k++) { + cov[k] = new float[dim]; + for (int j=0;j<dim;j++) + { + cov[k][j] = 0; + } + } + // compute mean + + for (int j=0;j<dim;j++) + { + mean[j] = 0; + for (int i=0;i<spikes.size();i++) + { + SpikeObject spike = spikes[i]; + float v = spikeDataIndexToMicrovolts(&spike, j) ; + mean[j] += v / dim; + } + } + // aggregate + + + for (int i=0;i<dim;i++) { + for (int j=i;j<dim;j++) + { + // cov[i][j] = sum_k[ (X(i,:)) * (Xj-mue(j) ] + float sum = 0 ; + for (int k=0;k<spikes.size();k++) + { + + SpikeObject spike = spikes[k]; + float vi = spikeDataIndexToMicrovolts(&spike, i); + float vj = spikeDataIndexToMicrovolts(&spike, j); + sum += (vi-mean[i]) * (vj-mean[j]); + } + cov[i][j] = sum / (dim-1); + cov[j][i] = sum / (dim-1); + } + } + delete mean; + + // delete covariances + //for (int k = 0; k < dim; k++) + //delete cov[k]; + + //delete(cov); + //cov = nullptr; + +} + +std::vector<int> sort_indexes( std::vector<float> v) +{ + // initialize original index locations + std::vector<int> idx(v.size()); + + for (int i = 0; i != idx.size(); ++i) + { + idx[i] = i; + } + + //sort indexes based on comparing values in v + sort( + idx.begin(), + idx.end()//, + //[&v](size_t i1, size_t i2) + //{ + // return v[i1] > v[i2]; + //} + ); + + return idx; +} + +void PCAjob::computeSVD() +{ + + + float **eigvec, *sigvalues; + sigvalues = new float[dim]; + + eigvec = new float*[dim]; + for (int k = 0; k < dim; k++) { + eigvec[k] = new float[dim]; + for (int j=0;j<dim;j++) + { + eigvec[k][j] = 0; + } + } + + svdcmp(cov, dim, dim, sigvalues, eigvec); + + std::vector<float> sig; + sig.resize(dim); + for (int k = 0; k < dim; k++) + sig[k] = sigvalues[k]; + + std::vector<int> sortind = sort_indexes(sig); + + for (int k = 0; k < dim; k++) + { + pc1[k] = eigvec[k][sortind[0]]; + pc2[k] = eigvec[k][sortind[1]]; + } + // project samples to find the display range + float min1 = 1e10, min2 = 1e10, max1 = -1e10, max2 = -1e10; + + for (int j = 0; j < spikes.size(); j++) + { + float sum1 = 0, sum2=0; + for (int k = 0; k < dim; k++) + { + SpikeObject spike = spikes[j]; + sum1 += spikeDataIndexToMicrovolts(&spike,k) * pc1[k]; + sum2 += spikeDataIndexToMicrovolts(&spike,k) * pc2[k]; + } + if (sum1 < min1) + min1 = sum1; + if (sum2 < min2) + min2 = sum2; + if (sum1 > max1) + max1 = sum1; + if (sum2 > max2) + max2 = sum2; + } + + + *pc1min = min1 - 1.5 * (max1-min1); + *pc2min = min2 - 1.5 * (max2-min2); + *pc1max = max1 + 1.5 * (max1-min1); + *pc2max = max2 + 1.5 * (max2-min2); + + // clear memory + for (int k = 0; k < dim; k++) + { + delete eigvec[k]; + } + delete eigvec; + delete sigvalues; + + // delete covariances + for (int k = 0; k < dim; k++) + delete cov[k]; + + delete(cov); + cov = nullptr; + +} + + +/**********************/ + + +void PCAcomputingThread::addPCAjob(PCAjob job) +{ + jobs.push(job); + if (!isThreadRunning()) + { + startThread(); + } +} + +void PCAcomputingThread::run() +{ + while (jobs.size() > 0) + { + PCAjob J = jobs.front(); + jobs.pop(); + // compute PCA + // 1. Compute Covariance matrix + // 2. Apply SVD on covariance matrix + // 3. Extract the two principal components corresponding to the largest singular values + + J.computeCov(); + J.computeSVD(); + + // 4. Report to the spike sorting electrode that PCA is finished + *(J.reportDone) = true; + } +} + + +PCAcomputingThread::PCAcomputingThread() : Thread("PCA") +{ + +} diff --git a/Source/Processors/SpikeSorter/SpikeSortBoxes.h b/Source/Processors/SpikeSorter/SpikeSortBoxes.h new file mode 100644 index 0000000000000000000000000000000000000000..1af4e2352668a1d6016b02ec284abbcd2150dcc0 --- /dev/null +++ b/Source/Processors/SpikeSorter/SpikeSortBoxes.h @@ -0,0 +1,292 @@ +/* +------------------------------------------------------------------ + +This file is part of the Open Ephys GUI +Copyright (C) 2013 Open Ephys + +------------------------------------------------------------------ + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#ifndef __SPIKESORTBOXES_H +#define __SPIKESORTBOXES_H + +#include "../../JuceLibraryCode/JuceHeader.h" + +#include "../GenericProcessor/GenericProcessor.h" +#include "SpikeSorterEditor.h" +#include "../Visualization/SpikeObject.h" +#include <algorithm> // std::sort +#include <list> +#include <queue> + +class PCAcomputingThread; +class UniqueIDgenerator; +class PointD +{ +public: + + PointD(); + PointD(float x, float y); + PointD(const PointD &P); + const PointD operator+(const PointD &c1) const; + PointD& operator+=(const PointD &rhs); + PointD& operator-=(const PointD &rhs); + + + const PointD operator-(const PointD &c1) const; + const PointD operator*(const PointD &c1) const; + + float cross(PointD c) const; + float X,Y; +}; + + +class Box +{ +public: + Box(); + Box(int channel); + Box(float X, float Y, float W, float H, int ch=0); + bool LineSegmentIntersection(PointD p11, PointD p12, PointD p21, PointD p22); + bool isWaveFormInside(SpikeObject *so); + double x,y,w,h; // x&w and specified in microseconds. y&h in microvolts + int channel; +}; + + +/************************/ +class Histogram +{ +public: + Histogram(); + Histogram(int N, double T0, double T1); + ~Histogram(); + + void setParameters(int N, double T0, double T1); + std::vector<int> getCounter(); + void reset(); + void update(double x); + + int Max; + double t0, t1; + std::vector<double> Time; + int numBins; + std::vector<int> Counter; + +}; + +class RunningStats +{ +public: + RunningStats(); + ~RunningStats(); + void resizeWaveform(int newlength); + void reset(); + Histogram getHistogram(); + std::vector<double> getMean(int index); + std::vector<double> getStandardDeviation(int index); + void update(SpikeObject *so); + bool queryNewData(); + + double LastSpikeTime; + bool newData; + Histogram hist; + std::vector<std::vector<double> > WaveFormMean,WaveFormSk,WaveFormMk; + double numSamples; + + +}; + +// Box unit defines a single unit (with multiple boxes) +// Each box can be on a different channel +class BoxUnit +{ +public: + BoxUnit(); + BoxUnit(int ID, int localID); + BoxUnit(Box B, int ID, int localID); + bool isWaveFormInsideAllBoxes(SpikeObject *so); + bool isActivated(); + void activateUnit(); + void deactivateUnit(); + double getNumSecondsActive(); + void toggleActive(); + void addBox(Box b); + void addBox(); + int getNumBoxes(); + void modifyBox(int boxindex, Box b); + bool deleteBox(int boxindex); + Box getBox(int box); + void setBox(int boxid, Box B); + void setBoxPos(int boxid, PointD P); + void setBoxSize(int boxid, double W, double H); + void MoveBox(int boxid, int dx, int dy); + std::vector<Box> getBoxes(); + int getUnitID(); + int getLocalID(); + void updateWaveform(SpikeObject *so); + static void setDefaultColors(uint8_t col[3], int ID); + void resizeWaveform(int newlength); +public: + int UnitID; + int localID; // used internally, for colors and position. + std::vector<Box> lstBoxes; + uint8_t ColorRGB[3]; + RunningStats WaveformStat; + bool Active; + juce::int64 Activated_TS_S; + Time timer; + +}; + +/* +class PCAjob +{ +public: +PCAjob(); +};*/ +class PCAjob +{ +public: + PCAjob(Array<SpikeObject> _spikes, float *_pc1, float *_pc2, + float *, float *, float *, float *, bool *_reportDone); + ~PCAjob(); + void computeCov(); + void computeSVD(); + + float **cov; + Array<SpikeObject> spikes; + float *pc1, *pc2; + float *pc1min, *pc2min, *pc1max, *pc2max; + bool *reportDone; +private: + int svdcmp(float **a, int nRows, int nCols, float *w, float **v); + float pythag(float a, float b); + int dim; +}; + + +class cPolygon +{ +public: + cPolygon(); + bool isPointInside(PointD p); + std::vector<PointD> pts; + PointD offset; +}; + + + +class PCAcomputingThread : juce::Thread +{ +public: + PCAcomputingThread(); + void run(); // computes PCA on waveforms + void addPCAjob(PCAjob job); + + std::queue<PCAjob> jobs; +}; + +class PCAUnit +{ +public: + PCAUnit(); + PCAUnit(int ID, int localID); + PCAUnit(cPolygon B, int ID, int localID_); + ~PCAUnit(); + int getUnitID(); + int getLocalID(); + bool isWaveFormInsidePolygon(SpikeObject *so); + bool isPointInsidePolygon(PointD p); + void resizeWaveform(int newlength); + void updateWaveform(SpikeObject *so); +public: + int UnitID; + int localID; // used internally, for colors and position. + cPolygon poly; + uint8_t ColorRGB[3]; + RunningStats WaveformStat; + bool Active; + juce::int64 Activated_TS_S; + Time timer; +}; + +// Sort spikes from a single electrode (which could have any number of channels) +// using the box method. Any electrode could have an arbitrary number of units specified. +// Each unit is defined by a set of boxes, which can be placed on any of the given channels. +class SpikeSortBoxes +{ +public: + SpikeSortBoxes(UniqueIDgenerator *uniqueIDgenerator_, PCAcomputingThread *pth, int numch, double SamplingRate, int WaveFormLength); + ~SpikeSortBoxes(); + + void resizeWaveform(int numSamples); + + + void projectOnPrincipalComponents(SpikeObject *so); + bool sortSpike(SpikeObject *so, bool PCAfirst); + void RePCA(); + void addPCAunit(PCAUnit unit); + int addBoxUnit(int channel); + int addBoxUnit(int channel, Box B); + + void getPCArange(float &p1min,float &p2min, float &p1max, float &p2max); + void setPCArange(float p1min,float p2min, float p1max, float p2max); + void resetJobStatus(); + bool isPCAfinished(); + + bool removeUnit(int unitID); + + void removeAllUnits(); + bool addBoxToUnit(int channel, int unitID); + bool addBoxToUnit(int channel, int unitID, Box B); + bool removeBoxFromUnit(int unitID, int boxIndex); + int getNumBoxes(int unitID); + std::vector<Box> getUnitBoxes(int unitID); + std::vector<BoxUnit> getBoxUnits(); + std::vector<PCAUnit> getPCAUnits(); + + void getUnitColor(int UnitID, uint8 &R, uint8 &G, uint8 &B); + void updateBoxUnits(std::vector<BoxUnit> _units); + void updatePCAUnits(std::vector<PCAUnit> _units); + int generateUnitID(); + int generateLocalID(); + void generateNewIDs(); + void setSelectedUnitAndBox(int unitID, int boxID); + void getSelectedUnitAndBox(int &unitID, int &boxid); + void saveCustomParametersToXml(XmlElement *electrodeNode); + void loadCustomParametersFromXml(XmlElement *electrodeNode); +private: + //void StartCriticalSection(); + //void EndCriticalSection(); + UniqueIDgenerator* uniqueIDgenerator; + int numChannels, waveformLength; + int selectedUnit, selectedBox; + CriticalSection mut; + std::vector<BoxUnit> boxUnits; + std::vector<PCAUnit> pcaUnits; + float *pc1, *pc2; + float pc1min, pc2min, pc1max, pc2max; + Array<SpikeObject> spikeBuffer; + int bufferSize,spikeBufferIndex; + PCAcomputingThread *computingThread; + bool bPCAJobSubmitted,bPCAcomputed,bRePCA,bPCAjobFinished ; + + +}; + +#endif // __SPIKESORTBOXES_H diff --git a/Source/Processors/SpikeSorter/SpikeSorter.cpp b/Source/Processors/SpikeSorter/SpikeSorter.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ffbc1bd466cab205055211fb93f972c6f0c6e48f --- /dev/null +++ b/Source/Processors/SpikeSorter/SpikeSorter.cpp @@ -0,0 +1,1804 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2013 Open Ephys + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include <stdio.h> +#include "SpikeSorter.h" +#include "SpikeSortBoxes.h" +#include "SpikeSorterCanvas.h" +#include "../Channel/Channel.h" +#include "../SpikeDisplayNode/SpikeDisplayNode.h" + +class spikeSorter; + +SpikeSorter::SpikeSorter() + : GenericProcessor("Spike Sorter"), + overflowBuffer(2,100), dataBuffer(nullptr), + overflowBufferSize(100), currentElectrode(-1), + numPreSamples(8),numPostSamples(32) +{ + uniqueID = 0; // for electrode count + uniqueSpikeID = 0; + juce::Time timer; + ticksPerSec = (float) timer.getHighResolutionTicksPerSecond(); + electrodeTypes.clear(); + electrodeCounter.clear(); + spikeBuffer = new uint8_t[MAX_SPIKE_BUFFER_LEN]; // MAX_SPIKE_BUFFER_LEN defined in SpikeObject.h + channelBuffers=nullptr; + PCAbeforeBoxes = true; + autoDACassignment = true; + syncThresholds = false; + flipSignal = false; +} + +bool SpikeSorter::getFlipSignalState() +{ + return flipSignal; +} + + +void SpikeSorter::setFlipSignalState(bool state) +{ + flipSignal = state; + + mut.enter(); + if (currentElectrode >= 0) + { + if (electrodes[currentElectrode]->spikePlot != nullptr) + electrodes[currentElectrode]->spikePlot->setFlipSignal(state); + + } + mut.exit(); + +} + +int SpikeSorter::getNumPreSamples() +{ + return numPreSamples; +} + +int SpikeSorter::getNumPostSamples() +{ + return numPostSamples; +} + +bool SpikeSorter::getAutoDacAssignmentStatus() +{ + return autoDACassignment; +} + +bool SpikeSorter::getThresholdSyncStatus() +{ + return syncThresholds; +} + +void SpikeSorter::setThresholdSyncStatus(bool status) +{ + syncThresholds= status; +} + + +void SpikeSorter::seteAutoDacAssignment(bool status) +{ + autoDACassignment = status; +} + +void SpikeSorter::setNumPreSamples(int numSamples) +{ + // we need to update all electrodes, and also inform other modules that this has happened.... + numPreSamples = numSamples; + + for (int k = 0; k < electrodes.size(); k++) + { + electrodes[k]->resizeWaveform(numPreSamples,numPostSamples); + } + +} + +void SpikeSorter::setNumPostSamples(int numSamples) +{ + numPostSamples = numSamples; + for (int k = 0; k < electrodes.size(); k++) + { + electrodes[k]->resizeWaveform(numPreSamples,numPostSamples); + } +} + + +int SpikeSorter::getUniqueProbeID(String type) +{ + for (int i = 0; i < electrodeTypes.size(); i++) + { + if (electrodeTypes[i] == type) + { + return electrodeCounter[i]; + } + } + // if we reached here, we didn't find the type. Add it. + electrodeTypes.push_back(type); + electrodeCounter.push_back(1); + return 1; +} + + +void SpikeSorter::increaseUniqueProbeID(String type) +{ + for (int i = 0; i < electrodeTypes.size(); i++) + { + if (electrodeTypes[i] == type) + { + electrodeCounter[i]++; + } + } +} + + + +SpikeSorter::~SpikeSorter() +{ + delete spikeBuffer; + spikeBuffer = nullptr; + + if (channelBuffers != nullptr) + delete channelBuffers; + +} + + + +AudioProcessorEditor* SpikeSorter::createEditor() +{ + editor = new SpikeSorterEditor(this, true); + + return editor; +} + +void SpikeSorter::updateSettings() +{ + + mut.enter(); + int numChannels = getNumInputs(); + if (numChannels > 0) + overflowBuffer.setSize(getNumInputs(), overflowBufferSize); + + if (channelBuffers != nullptr) + delete channelBuffers; + + double SamplingRate = getSampleRate();; + double ContinuousBufferLengthSec = 5; + channelBuffers = new ContinuousCircularBuffer(numChannels,SamplingRate,1, ContinuousBufferLengthSec); + + for (int i = 0; i < electrodes.size(); i++) + { + + Channel* ch = new Channel(this, i); + //ch->isEventChannel = true; + ch->eventType = SPIKE_BASE_CODE + electrodes[i]->numChannels; + ch->name = electrodes[i]->name; + + eventChannels.add(ch); + // String eventlog = "NewElectrode "+String(electrodes[k]->electrodeID) + " "+String(electrodes[k]->numChannels)+" "; + // for (int j=0;j<electrodes[k]->numChannels;j++) + // eventlog += String(electrodes[k]->channels[j])+ " "+electrodes[k]->name; + // //addNetworkEventToQueue(StringTS(eventlog)); + } + + mut.exit(); +} + + +Electrode::~Electrode() +{ + delete thresholds; + delete isActive; + delete voltageScale; + delete channels; + delete spikeSort; +} + +Electrode::Electrode(int ID, UniqueIDgenerator *uniqueIDgenerator_, PCAcomputingThread *pth, String _name, int _numChannels, int *_channels, float default_threshold, int pre, int post, float samplingRate ) +{ + electrodeID = ID; + computingThread = pth; + uniqueIDgenerator = uniqueIDgenerator_; + name = _name; + + numChannels = _numChannels; + prePeakSamples = pre; + postPeakSamples = post; + + thresholds = new double[numChannels]; + isActive = new bool[numChannels]; + channels = new int[numChannels]; + voltageScale = new double[numChannels]; + depthOffsetMM = 0.0; + + advancerID = -1; + + for (int i = 0; i < numChannels; i++) + { + channels[i] = _channels[i]; + thresholds[i] = default_threshold; + isActive[i] = true; + voltageScale[i] = 500; + } + spikePlot = nullptr; + + if (computingThread != nullptr) + spikeSort = new SpikeSortBoxes(uniqueIDgenerator, computingThread, numChannels, samplingRate, pre+post); + else + spikeSort = nullptr; + + isMonitored = false; +} + +void Electrode::resizeWaveform(int numPre, int numPost) +{ + // update electrode and all sorted units.... + // we can't keep pca space anymore, so we discard of all pca units (?) + prePeakSamples = numPre; + postPeakSamples = numPost; + + //spikePlot = nullptr; + spikeSort->resizeWaveform(prePeakSamples+postPeakSamples); + +} + +void SpikeSorter::setElectrodeVoltageScale(int electrodeID, int index, float newvalue) +{ + std::vector<float> values; + mut.enter(); + for (int k=0;k<electrodes.size();k++) + { + if (electrodes[k]->electrodeID == electrodeID) + { + electrodes[k]->voltageScale[index] = newvalue; + mut.exit(); + return; + } + } + mut.exit(); +} + +std::vector<float> SpikeSorter::getElectrodeVoltageScales(int electrodeID) +{ + std::vector<float> values; + mut.enter(); + for (int k=0;k<electrodes.size();k++) + { + if (electrodes[k]->electrodeID == electrodeID) + { + values.resize(electrodes[k]->numChannels); + for (int i=0;i<electrodes[k]->numChannels;i++) + { + values[i] = electrodes[k]->voltageScale[i]; + } + mut.exit(); + return values; + } + } + mut.exit(); + return values; +} + +// void SpikeSorter::setElectrodeAdvancerOffset(int i, double v) +// { +// mut.enter(); +// if (i >= 0) +// { +// electrodes[i]->depthOffsetMM = v; +// addNetworkEventToQueue(StringTS("NewElectrodeDepthOffset "+String(electrodes[i]->electrodeID)+" "+String(v,4))); +// } +// mut.exit(); +// } + +// void SpikeSorter::setElectrodeAdvancer(int i, int ID) +// { +// mut.enter(); +// if (i >= 0) +// { +// electrodes[i]->advancerID = ID; +// } +// mut.exit(); +// } + +void SpikeSorter::addNewUnit(int electrodeID, int newUnitID, uint8 r, uint8 g, uint8 b) +{ + String eventlog = "NewUnit "+String(electrodeID) + " "+String(newUnitID)+" "+String(r)+" "+String(g)+" "+String(b); + //addNetworkEventToQueue(StringTS(eventlog)); + //updateSinks( electrodeID, newUnitID, r,g,b,true); +} + +void SpikeSorter::removeUnit(int electrodeID, int unitID) +{ + String eventlog = "RemoveUnit "+String(electrodeID) + " "+String(unitID); + //addNetworkEventToQueue(StringTS(eventlog)); + //updateSinks( electrodeID, unitID, 0,0,0,false); + +} + + +void SpikeSorter::removeAllUnits(int electrodeID) +{ + String eventlog = "RemoveAllUnits "+String(electrodeID); + //addNetworkEventToQueue(StringTS(eventlog)); + //updateSinks( electrodeID,true); +} + +RHD2000Thread* SpikeSorter::getRhythmAccess() +{ + + ProcessorGraph *gr = getProcessorGraph(); + Array<GenericProcessor*> p = gr->getListOfProcessors(); + for (int k=0;k<p.size();k++) + { + if (p[k]->getName() == "Rhythm FPGA") + { + SourceNode* src = (SourceNode* )p[k]; + return (RHD2000Thread*)src->getThread(); + } + } + return nullptr; +} + +void SpikeSorter::updateDACthreshold(int dacChannel, float threshold) +{ + RHD2000Thread* th = getRhythmAccess(); + if (th != nullptr) + { + th->setDACthreshold(dacChannel,threshold); + } +} + +Array<int> SpikeSorter::getDACassignments() +{ + Array<int> dacChannels ; + RHD2000Thread* th = getRhythmAccess(); + if (th != nullptr) + { + dacChannels = th->getDACchannels(); + } + return dacChannels; +} + +int SpikeSorter::getDACassignment(int dacchannel) +{ + RHD2000Thread* th = getRhythmAccess(); + if (th != nullptr) + { + Array<int> dacChannels = th->getDACchannels(); + return dacChannels[dacchannel]; + } + + return -1; // not assigned +} + +void SpikeSorter::assignDACtoChannel(int dacOutput, int channel) +{ + // inform sinks about a new unit + //getSourceNode() + RHD2000Thread* th = getRhythmAccess(); + if (th != nullptr) + { + th->setDACchannel(dacOutput, channels[channel]->originalStream, channels[channel]->originalChannel); + } +} + +void SpikeSorter::addElectrode(Electrode* newElectrode) +{ + mut.enter(); + resetElectrode(newElectrode); + electrodes.add(newElectrode); + // inform PSTH sink, if it exists, about this new electrode. + //updateSinks(newElectrode); + mut.exit(); +} + +bool SpikeSorter::addElectrode(int nChans, String name, double Depth) +{ + + mut.enter(); + int firstChan; + + if (electrodes.size() == 0) + { + firstChan = 0; + } + else + { + Electrode* e = electrodes.getLast(); + firstChan = *(e->channels + (e->numChannels - 1)) + 1; + } + + if (firstChan + nChans > getNumInputs()) + { + mut.exit(); + return false; + } + + int *channels = new int[nChans]; + for (int k = 0; k < nChans; k++) + channels[k] = firstChan + k; + + Electrode* newElectrode = new Electrode(++uniqueID, &uniqueIDgenerator, &computingThread, name, nChans, channels, getDefaultThreshold(), + numPreSamples, numPostSamples, getSampleRate()); + + newElectrode->depthOffsetMM = Depth; + String log = "Added electrode (ID "+ String(uniqueID)+") with " + String(nChans) + " channels." ; + std::cout << log << std::endl; + String eventlog = "NewElectrode "+ String(uniqueID) + " " + String(nChans) + " "; + for (int k = 0; k < nChans; k++) + eventlog += String(channels[k])+ " " + name; + + //addNetworkEventToQueue(StringTS(eventlog)); + + resetElectrode(newElectrode); + electrodes.add(newElectrode); + //updateSinks(newElectrode); + setCurrentElectrodeIndex(electrodes.size()-1); + mut.exit(); + return true; + +} + +float SpikeSorter::getDefaultThreshold() +{ + return -20.0f; +} + +StringArray SpikeSorter::getElectrodeNames() +{ + StringArray names; + mut.enter(); + for (int i = 0; i < electrodes.size(); i++) + { + names.add(electrodes[i]->name); + } + mut.exit(); + return names; +} + +void SpikeSorter::resetElectrode(Electrode* e) +{ + e->lastBufferIndex = 0; +} + +bool SpikeSorter::removeElectrode(int index) +{ + mut.enter(); + // std::cout << "Spike detector removing electrode" << std::endl; + + if (index > electrodes.size() || index < 0) { + mut.exit(); + return false; + } + + + String log = "Removing electrode (ID " + String(electrodes[index]->electrodeID)+")"; + std::cout << log <<std::endl; + + String eventlog = "RemoveElectrode " + String(electrodes[index]->electrodeID); + //addNetworkEventToQueue(StringTS(eventlog)); + + int idToRemove = electrodes[index]->electrodeID; + electrodes.remove(index); + + //(idToRemove); + + if (electrodes.size() > 0) + currentElectrode = electrodes.size()-1; + else + currentElectrode = -1; + + mut.exit(); + return true; +} + +void SpikeSorter::setElectrodeName(int index, String newName) +{ + mut.enter(); + if ((electrodes.size() > 0) && (index > 0)) + electrodes[index-1]->name = newName; + //updateSinks(electrodes[index-1]->electrodeID, newName); + mut.exit(); +} + +void SpikeSorter::setChannel(int electrodeIndex, int channelNum, int newChannel) +{ + mut.enter(); + String log = "Setting electrode " + String(electrodeIndex) + " channel " + String( channelNum )+ + " to " + String( newChannel ); + std::cout << log<< std::endl; + + + + String eventlog = "ChanelElectrodeChannel " + String(electrodes[electrodeIndex]->electrodeID) + " " + String(channelNum) + " " + String(newChannel); + //addNetworkEventToQueue(StringTS(eventlog)); + + //updateSinks(electrodes[electrodeIndex]->electrodeID, channelNum,newChannel); + + *(electrodes[electrodeIndex]->channels+channelNum) = newChannel; + mut.exit(); +} + +int SpikeSorter::getNumChannels(int index) +{ + mut.enter(); + int i=electrodes[index]->numChannels; + mut.exit(); + return i; +} + +int SpikeSorter::getChannel(int index, int i) +{ + mut.enter(); + int ii=*(electrodes[index]->channels+i); + mut.exit(); + return ii; +} + + +void SpikeSorter::setChannelActive(int electrodeIndex, int subChannel, bool active) +{ + + currentElectrode = electrodeIndex; + currentChannelIndex = subChannel; + + if (active) + setParameter(98, 1); + else + setParameter(98, 0); + + //getEditorViewport()->makeEditorVisible(this, true, true); +} + +bool SpikeSorter::isChannelActive(int electrodeIndex, int i) +{ + mut.enter(); + bool b= *(electrodes[electrodeIndex]->isActive+i); + mut.exit(); + return b; +} + + +void SpikeSorter::setChannelThreshold(int electrodeNum, int channelNum, float thresh) +{ + mut.enter(); + currentElectrode = electrodeNum; + currentChannelIndex = channelNum; + electrodes[electrodeNum]->thresholds[channelNum] = thresh; + if (electrodes[electrodeNum]->spikePlot != nullptr) + electrodes[electrodeNum]->spikePlot->setDisplayThresholdForChannel(channelNum,thresh); + + if (syncThresholds) + { + for (int k=0;k<electrodes.size();k++) + { + for (int i=0;i<electrodes[k]->numChannels;i++) + { + electrodes[k]->thresholds[i] = thresh; + } + } + } + + mut.exit(); + setParameter(99, thresh); +} + +double SpikeSorter::getChannelThreshold(int electrodeNum, int channelNum) +{ + mut.enter(); + double f= *(electrodes[electrodeNum]->thresholds+channelNum); + mut.exit(); + return f; +} + +void SpikeSorter::setParameter(int parameterIndex, float newValue) +{ + //editor->updateParameterButtons(parameterIndex); + mut.enter(); + if (parameterIndex == 99 && currentElectrode > -1) + { + *(electrodes[currentElectrode]->thresholds+currentChannelIndex) = newValue; + } + else if (parameterIndex == 98 && currentElectrode > -1) + { + if (newValue == 0.0f) + *(electrodes[currentElectrode]->isActive+currentChannelIndex) = false; + else + *(electrodes[currentElectrode]->isActive+currentChannelIndex) = true; + } + mut.exit(); +} + + +bool SpikeSorter::enable() +{ + + useOverflowBuffer = false; + SpikeSorterEditor* editor = (SpikeSorterEditor*) getEditor(); + editor->enable(); + + return true; +} + + +bool SpikeSorter::isReady() +{ + return true; +} + + +bool SpikeSorter::disable() +{ + mut.enter(); + for (int n = 0; n < electrodes.size(); n++) + { + resetElectrode(electrodes[n]); + } + //editor->disable(); + mut.exit(); + return true; +} + +Electrode* SpikeSorter::getActiveElectrode() +{ + if (electrodes.size() == 0) + return nullptr; + + return electrodes[currentElectrode]; +} + + +void SpikeSorter::addSpikeEvent(SpikeObject* s, MidiBuffer& eventBuffer, int peakIndex) +{ + + // std::cout << "Adding spike event for index " << peakIndex << std::endl; + + s->eventType = SPIKE_EVENT_CODE; + + int numBytes = packSpike(s, // SpikeObject + spikeBuffer, // uint8_t* + MAX_SPIKE_BUFFER_LEN); // int + + if (numBytes > 0) + eventBuffer.addEvent(spikeBuffer, numBytes, peakIndex); + + //std::cout << "Adding spike" << std::endl; +} + +void SpikeSorter::addWaveformToSpikeObject(SpikeObject* s, + int& peakIndex, + int& electrodeNumber, + int& currentChannel) +{ + mut.enter(); + int spikeLength = electrodes[electrodeNumber]->prePeakSamples + + + electrodes[electrodeNumber]->postPeakSamples; + + s->timestamp = hardware_timestamp + peakIndex; + + // convert sample offset to software ticks + float samplesPerSec = getSampleRate(); + s->timestamp_software = software_timestamp + int64( ticksPerSec*float(peakIndex)/samplesPerSec); + s->nSamples = spikeLength; + + int chan = *(electrodes[electrodeNumber]->channels+currentChannel); + + s->gain[currentChannel] = (1.0f / channels[chan]->getChannelGain())*1000; + s->threshold[currentChannel] = (int) electrodes[electrodeNumber]->thresholds[currentChannel]; + + // cycle through buffer + + if (isChannelActive(electrodeNumber, currentChannel)) + { + + for (int sample = 0; sample < spikeLength; sample++) + { + + // warning -- be careful of bitvolts conversion + // do not flip signal (!). + float value = getNextSample(electrodes[electrodeNumber]->channels[currentChannel]); + s->data[currentIndex] = uint16(jmin(65535,jmax(0, int(value / channels[chan]->getChannelGain()) + 32768))); + // recovered data + //float value2 = (s->data[currentIndex]-32768) /float(s->gain[currentChannel])*1000.0f; + + currentIndex++; + sampleIndex++; + + //std::cout << currentIndex << std::endl; + + } + } + else + { + for (int sample = 0; sample < spikeLength; sample++) + { + + // insert a blank spike if the + s->data[currentIndex] = 0; + currentIndex++; + sampleIndex++; + + //std::cout << currentIndex << std::endl; + + } + } + + + sampleIndex -= spikeLength; // reset sample index + mut.exit(); + +} + +void SpikeSorter::startRecording() +{ + // send status messages about which electrodes and units are available. + mut.enter(); + for (int k=0;k<electrodes.size();k++) + { + String eventlog = "CurrentElectrodes "+String(electrodes[k]->electrodeID) + " "+ String(electrodes[k]->advancerID) + " "+String(electrodes[k]->depthOffsetMM) + " "+ + String(electrodes[k]->numChannels) + " "; + for (int i=0;i<electrodes[k]->numChannels;i++) + { + eventlog += String(electrodes[k]->channels[i])+ " " + electrodes[k]->name; + } + //addNetworkEventToQueue(StringTS(eventlog)); + + std::vector<BoxUnit> boxUnits = electrodes[k]->spikeSort->getBoxUnits(); + for (int i=0;i<boxUnits.size();i++) + { + String eventlog = "CurrentElectrodeUnits "+String(electrodes[k]->electrodeID) + " " + String(boxUnits[i].UnitID); + } + + std::vector<PCAUnit> pcaUnits = electrodes[k]->spikeSort->getPCAUnits(); + for (int i=0;i<pcaUnits.size();i++) + { + String eventlog = "CurrentElectrodeUnits "+String(electrodes[k]->electrodeID) + " " + String(pcaUnits[i].UnitID); + } + + } + + mut.exit(); +} + +// int64 SpikeSorter::getExtrapolatedHardwareTimestamp(int64 softwareTS) +// { +// Time timer; +// // this is the case in which messages arrived before the data stream started.... +// if (hardware_timestamp == 0) +// return 0; + +// // compute how many ticks passed since the last known software-hardware pair +// int64 ticksPassed = software_timestamp-softwareTS; +// float secondPassed = (float)ticksPassed / timer.getHighResolutionTicksPerSecond(); +// // adjust hardware stamp accordingly +// return hardware_timestamp + secondPassed*getSampleRate(); +// } + + + + +// void SpikeSorter::postTimestamppedStringToMidiBuffer(StringTS s, MidiBuffer& events) +// { +// uint8* msg_with_ts = new uint8[s.len+8]; // for the two timestamps +// memcpy(msg_with_ts, s.str, s.len); +// memcpy(msg_with_ts+s.len, &s.timestamp, 8); + +// addEvent(events, // eventBuffer +// (uint8) NETWORK, // type +// 0, // sampleNum +// 0, // eventId +// (uint8) GENERIC_EVENT, // eventChannel +// (uint8) s.len+8, // numBytes +// msg_with_ts); // eventData + +// delete msg_with_ts; +// } + +void SpikeSorter::handleEvent(int eventType, MidiMessage& event, int sampleNum) +{ + if (eventType == TIMESTAMP) + { + const uint8* dataptr = event.getRawData(); + memcpy(&hardware_timestamp, dataptr + 4, 8); // remember to skip first four bytes + memcpy(&software_timestamp, dataptr + 12, 8); // remember to skip first four bytes + } +} + +// void SpikeSorter::addNetworkEventToQueue(StringTS S) +// { +// StringTS copy(S); +// getUIComponent()->getLogWindow()->addLineToLog(copy.getString()); +// eventQueue.push(copy); +// } + + +// void SpikeSorter::postEventsInQueue(MidiBuffer& events) +// { +// while (eventQueue.size() > 0) +// { +// StringTS msg = eventQueue.front(); +// postTimestamppedStringToMidiBuffer(msg,events); +// eventQueue.pop(); +// } +// } + +void SpikeSorter::process(AudioSampleBuffer& buffer, + MidiBuffer& events, + int& nSamples) +{ + + //printf("Entering Spike Detector::process\n"); + mut.enter(); + uint16_t samplingFrequencyHz = getSampleRate();//buffer.getSamplingFrequency(); + // cycle through electrodes + Electrode* electrode; + dataBuffer = &buffer; + + checkForEvents(events); // find latest's packet timestamps + + //postEventsInQueue(events); + + channelBuffers->update(buffer, hardware_timestamp,software_timestamp,nSamples); + + for (int i = 0; i < electrodes.size(); i++) + { + + // std::cout << "ELECTRODE " << i << std::endl; + + electrode = electrodes[i]; + + // refresh buffer index for this electrode + sampleIndex = electrode->lastBufferIndex - 1; // subtract 1 to account for + // increment at start of getNextSample() + + // cycle through samples + while (samplesAvailable(nSamples)) + { + + sampleIndex++; + + // cycle through channels + for (int chan = 0; chan < electrode->numChannels; chan++) + { + + // std::cout << " channel " << chan << std::endl; + + if (*(electrode->isActive+chan)) + { + //float v = getNextSample(currentChannel); + + int currentChannel = electrode->channels[chan]; + + bool bSpikeDetectedPositive = electrode->thresholds[chan] > 0 && + (getNextSample(currentChannel) > electrode->thresholds[chan]); // rising edge + bool bSpikeDetectedNegative = electrode->thresholds[chan] < 0 && + (getNextSample(currentChannel) < electrode->thresholds[chan]); // falling edge + + if (bSpikeDetectedPositive || bSpikeDetectedNegative) + { + + //std::cout << "Spike detected on electrode " << i << std::endl; + // find the peak + int peakIndex = sampleIndex; + + //if (sampleIndex == 0 && i == 0) + // std::cout << getCurrentSample(currentChannel) << std::endl; + + if (bSpikeDetectedPositive) + { + // find localmaxima + while (getCurrentSample(currentChannel) < getNextSample(currentChannel) && + sampleIndex < peakIndex + electrode->postPeakSamples) + { + sampleIndex++; + } + } else { + // find local minimum + + while (getCurrentSample(currentChannel) > getNextSample(currentChannel) && + sampleIndex < peakIndex + electrode->postPeakSamples) + { + sampleIndex++; + } + } + + peakIndex = sampleIndex; + sampleIndex -= (electrode->prePeakSamples+1); + + SpikeObject newSpike; + newSpike.sortedId = 0; // unsorted. + newSpike.timestamp = peakIndex; + newSpike.electrodeID = electrode->electrodeID; + newSpike.channel = chan; + newSpike.source = i; + newSpike.nChannels = electrode->numChannels; + newSpike.samplingFrequencyHz = samplingFrequencyHz; + newSpike.color[0] = newSpike.color[1] = newSpike.color[2] = 127; + currentIndex = 0; + + // package spikes; + for (int channel = 0; channel < electrode->numChannels; channel++) + { + + addWaveformToSpikeObject(&newSpike, + peakIndex, + i, + channel); + + //std::cout << "adding waveform" << std::endl; + } + + /* + bool perfectMatch = true; + for (int k=0;k<40;k++) { + perfectMatch = perfectMatch & (prevSpike.data[k] == newSpike.data[k]); + } + if (perfectMatch) + { + int x; + x++; + } + */ + + //for (int xxx = 0; xxx < 1000; xxx++) // overload with spikes for testing purposes + electrode->spikeSort->projectOnPrincipalComponents(&newSpike); + + // Add spike to drawing buffer.... + electrode->spikeSort->sortSpike(&newSpike, PCAbeforeBoxes); + + + // transfer buffered spikes to spike plot + if (electrode->spikePlot != nullptr) { + if (electrode->spikeSort->isPCAfinished()) + { + electrode->spikeSort->resetJobStatus(); + float p1min,p2min, p1max, p2max; + electrode->spikeSort->getPCArange(p1min,p2min, p1max, p2max); + electrode->spikePlot->setPCARange(p1min,p2min, p1max, p2max); + } + + + electrode->spikePlot->processSpikeObject(newSpike); + } + + + addSpikeEvent(&newSpike, events, peakIndex); + //prevSpike = newSpike; + // advance the sample index + sampleIndex = peakIndex + electrode->postPeakSamples; + + break; // quit spike "for" loop + } // end spike trigger + + } // end if channel is active + } // end cycle through channels on electrode + + + } // end cycle through samples + + //float vv = getNextSample(currentChannel); + electrode->lastBufferIndex = sampleIndex - nSamples; // should be negative + + //jassert(electrode->lastBufferIndex < 0); + + } // end cycle through electrodes + + // copy end of this buffer into the overflow buffer + + //std::cout << "Copying buffer" << std::endl; + // std::cout << "nSamples: " << nSamples; + //std::cout << "overflowBufferSize:" << overflowBufferSize; + + //std::cout << "sourceStartSample = " << nSamples-overflowBufferSize << std::endl; + // std::cout << "numSamples = " << overflowBufferSize << std::endl; + // std::cout << "buffer size = " << buffer.getNumSamples() << std::endl; + + if (nSamples > overflowBufferSize) + { + + for (int i = 0; i < overflowBuffer.getNumChannels(); i++) + { + + overflowBuffer.copyFrom(i, 0, + buffer, i, + nSamples-overflowBufferSize, + overflowBufferSize); + + + useOverflowBuffer = true; + } + + } + else + { + + useOverflowBuffer = false; + } + + + mut.exit(); + //printf("Exitting Spike Detector::process\n"); +} + +float SpikeSorter::getNextSample(int& chan) +{ + + + + //if (useOverflowBuffer) + //{ + if (sampleIndex < 0) + { + // std::cout << " sample index " << sampleIndex << "from overflowBuffer" << std::endl; + int ind = overflowBufferSize + sampleIndex; + + if (ind < overflowBuffer.getNumSamples()) + return (*overflowBuffer.getReadPointer(chan, ind)); + else + return 0; + + } + else + { + // useOverflowBuffer = false; + // std::cout << " sample index " << sampleIndex << "from regular buffer" << std::endl; + + if (sampleIndex < dataBuffer->getNumSamples()) + return (*dataBuffer->getReadPointer(chan, sampleIndex)); + else + return 0; + } + //} else { + // std::cout << " sample index " << sampleIndex << "from regular buffer" << std::endl; + // return *dataBuffer.getSampleData(chan, sampleIndex); + //} + +} + +float SpikeSorter::getCurrentSample(int& chan) +{ + + // if (useOverflowBuffer) + // { + // return *overflowBuffer.getSampleData(chan, overflowBufferSize + sampleIndex - 1); + // } else { + // return *dataBuffer.getSampleData(chan, sampleIndex - 1); + // } + + if (sampleIndex < 1) + { + //std::cout << " sample index " << sampleIndex << "from overflowBuffer" << std::endl; + return (*overflowBuffer.getReadPointer(chan, overflowBufferSize + sampleIndex - 1)) ; + } + else + { + // useOverflowBuffer = false; + // std::cout << " sample index " << sampleIndex << "from regular buffer" << std::endl; + return (*dataBuffer->getReadPointer(chan, sampleIndex - 1)); + } + //} else { + +} + + +bool SpikeSorter::samplesAvailable(int& nSamples) +{ + + if (sampleIndex > nSamples - overflowBufferSize/2) + { + return false; + } + else + { + return true; + } + +} + +void SpikeSorter::addProbes(String probeType,int numProbes, int nElectrodesPerProbe, int nChansPerElectrode, double firstContactOffset, double interelectrodeDistance) +{ + for (int probeIter=0;probeIter<numProbes;probeIter++) + { + int probeCounter = getUniqueProbeID(probeType); + for (int electrodeIter=0;electrodeIter<nElectrodesPerProbe;electrodeIter++) + { + double depth = firstContactOffset - electrodeIter*interelectrodeDistance; + String name; + if (nElectrodesPerProbe > 1) + name = probeType + " " + String(probeCounter) + " ["+String(electrodeIter+1)+"/"+String(nElectrodesPerProbe)+"]"; + else + name = probeType + " " + String(probeCounter); + + bool successful = addElectrode(nChansPerElectrode, name, depth); + if (!successful) { + sendActionMessage("Not enough channels to add electrode."); + return; + } + } + increaseUniqueProbeID(probeType); + } +} +Array<Electrode*> SpikeSorter::getElectrodes() +{ + return electrodes; +} + +// double SpikeSorter::getAdvancerPosition(int advancerID) +// { +// ProcessorGraph *g = getProcessorGraph(); +// Array<GenericProcessor*> p = g->getListOfProcessors(); +// for (int k=0;k<p.size();k++) +// { +// if (p[k] != nullptr) +// { +// if (p[k]->getName() == "Advancers") +// { +// AdvancerNode *node = (AdvancerNode*)p[k]; +// return node->getAdvancerPosition(advancerID); +// } +// } +// } +// return 0.0; +// } + +// double SpikeSorter::getElectrodeDepth(int electrodeID) +// { +// for (int k=0;k<electrodes.size();k++) +// { +// if (electrodes[k]->electrodeID == electrodeID) +// { +// double currentAdvancerPos = getAdvancerPosition(electrodes[k]->advancerID); +// return electrodes[k]->depthOffsetMM + currentAdvancerPos; +// } +// } +// return 0.0; +// } + + +// double SpikeSorter::getSelectedElectrodeDepth() +// { +// if (electrodes.size() == 0) +// return 0.0; + +// double currentAdvancerPos = getAdvancerPosition(electrodes[currentElectrode]->advancerID); +// return electrodes[currentElectrode]->depthOffsetMM + currentAdvancerPos; +// } + +bool SpikeSorter::isSelectedElectrodeRecorded(int channel_index) +{ + if (electrodes.size() == 0) + return false; + int channel = electrodes[currentElectrode]->channels[channel_index]; + RecordNode* recordNode = getProcessorGraph()->getRecordNode(); + + StringArray names; + Array<bool> recording; + recordNode->getChannelNamesAndRecordingStatus(names, recording); + if (channel >= 0 && channel < recording.size()) + return recording[channel]; + + return false; + //return electrodes[currentElectrode]->depthOffsetMM + currentAdvancerPos; +} + +void SpikeSorter::saveCustomParametersToXml(XmlElement* parentElement) +{ + XmlElement* mainNode = parentElement->createNewChildElement("SpikeSorter"); + mainNode->setAttribute("numElectrodes", electrodes.size()); + + SpikeSorterEditor* ed = (SpikeSorterEditor*) getEditor(); + + mainNode->setAttribute("activeElectrode", ed->getSelectedElectrode()-1); + mainNode->setAttribute("numPreSamples", numPreSamples); + mainNode->setAttribute("numPostSamples", numPostSamples); + mainNode->setAttribute("autoDACassignment", autoDACassignment); + mainNode->setAttribute("syncThresholds",syncThresholds); + mainNode->setAttribute("uniqueID",uniqueID); + mainNode->setAttribute("flipSignal",flipSignal); + + XmlElement* countNode = mainNode->createNewChildElement("ELECTRODE_COUNTER"); + + countNode->setAttribute("numElectrodeTypes", (int)electrodeTypes.size()); + for (int k=0;k<electrodeTypes.size();k++) + { + XmlElement* countNode2 = countNode->createNewChildElement("ELECTRODE_TYPE"); + countNode2->setAttribute("type", electrodeTypes[k]); + countNode2->setAttribute("count", electrodeCounter[k]); + } + + for (int i = 0; i < electrodes.size(); i++) + { + XmlElement* electrodeNode = mainNode->createNewChildElement("ELECTRODE"); + electrodeNode->setAttribute("name", electrodes[i]->name); + electrodeNode->setAttribute("numChannels", electrodes[i]->numChannels); + electrodeNode->setAttribute("prePeakSamples", electrodes[i]->prePeakSamples); + electrodeNode->setAttribute("postPeakSamples", electrodes[i]->postPeakSamples); + electrodeNode->setAttribute("advancerID", electrodes[i]->advancerID); + electrodeNode->setAttribute("depthOffsetMM", electrodes[i]->depthOffsetMM); + electrodeNode->setAttribute("electrodeID", electrodes[i]->electrodeID); + + for (int j = 0; j < electrodes[i]->numChannels; j++) + { + XmlElement* channelNode = electrodeNode->createNewChildElement("SUBCHANNEL"); + channelNode->setAttribute("ch",*(electrodes[i]->channels+j)); + channelNode->setAttribute("thresh",*(electrodes[i]->thresholds+j)); + channelNode->setAttribute("isActive",*(electrodes[i]->isActive+j)); + + } + + // save spike sorting data. + electrodes[i]->spikeSort->saveCustomParametersToXml(electrodeNode); + + } + + +} + +void SpikeSorter::loadCustomParametersFromXml() +{ + + if (parametersAsXml != nullptr) + { + + int electrodeIndex = -1; + + forEachXmlChildElement(*parametersAsXml, mainNode) + { + + // use parametersAsXml to restore state + + if (mainNode->hasTagName("SpikeSorter")) + { + int numElectrodes = mainNode->getIntAttribute("numElectrodes"); + currentElectrode = mainNode->getIntAttribute("activeElectrode"); + numPreSamples = mainNode->getIntAttribute("numPreSamples"); + numPostSamples = mainNode->getIntAttribute("numPostSamples"); + autoDACassignment = mainNode->getBoolAttribute("autoDACassignment"); + syncThresholds = mainNode->getBoolAttribute("syncThresholds"); + uniqueID = mainNode->getIntAttribute("uniqueID"); + flipSignal = mainNode->getBoolAttribute("flipSignal"); + + forEachXmlChildElement(*mainNode, xmlNode) + { + + if (xmlNode->hasTagName("ELECTRODE_COUNTER")) + { + int numElectrodeTypes = xmlNode->getIntAttribute("numElectrodeTypes"); + electrodeCounter.resize(numElectrodeTypes); + electrodeTypes.resize(numElectrodeTypes); + int counter = 0; + forEachXmlChildElement(*xmlNode, xmltype) + { + if (xmltype->hasTagName("ELECTRODE_TYPE")) + { + electrodeTypes[counter] = xmltype->getStringAttribute("type"); + electrodeCounter[counter] = xmltype->getIntAttribute("count"); + counter++; + } + } + } else + if (xmlNode->hasTagName("ELECTRODE")) + { + + electrodeIndex++; + + int channelsPerElectrode = xmlNode->getIntAttribute("numChannels"); + + int advancerID = xmlNode->getIntAttribute("advancerID"); + float depthOffsetMM = xmlNode->getDoubleAttribute("depthOffsetMM"); + int electrodeID = xmlNode->getIntAttribute("electrodeID"); + String electrodeName=xmlNode->getStringAttribute("name"); + + + int channelIndex = -1; + + int *channels = new int[channelsPerElectrode]; + float *thres = new float[channelsPerElectrode]; + bool *isActive = new bool[channelsPerElectrode]; + + forEachXmlChildElement(*xmlNode, channelNode) + { + if (channelNode->hasTagName("SUBCHANNEL")) + { + channelIndex++; + channels[channelIndex] = channelNode->getIntAttribute("ch"); + thres[channelIndex] = channelNode->getDoubleAttribute("thresh"); + isActive[channelIndex] = channelNode->getBoolAttribute("isActive"); + } + } + Electrode* newElectrode = new Electrode(electrodeID, &uniqueIDgenerator,&computingThread, electrodeName, channelsPerElectrode, channels,getDefaultThreshold(), + numPreSamples,numPostSamples, getSampleRate()); + for (int k=0;k<channelsPerElectrode;k++) + { + newElectrode->thresholds[k] = thres[k]; + newElectrode->isActive[k] = isActive[k]; + } + + newElectrode->advancerID = advancerID; + newElectrode->depthOffsetMM = depthOffsetMM; + // now read sorted units information + newElectrode->spikeSort->loadCustomParametersFromXml(xmlNode); + addElectrode(newElectrode); + + } + } + } + } + } + SpikeSorterEditor* ed = (SpikeSorterEditor*) getEditor(); + // ed->updateAdvancerList(); + + if (currentElectrode >= 0) { + ed->refreshElectrodeList(currentElectrode); + ed->setSelectedElectrode(1+currentElectrode); + } else + { + ed->refreshElectrodeList(); + } + + +} + + + +void SpikeSorter::removeSpikePlots() +{ + mut.enter(); + for (int i = 0; i < getNumElectrodes(); i++) + { + Electrode *ee = electrodes[i]; + ee->spikePlot = nullptr; + } + mut.exit(); +} + +int SpikeSorter::getNumElectrodes() +{ + mut.enter(); + int i= electrodes.size(); + mut.exit(); + return i; + +} + +int SpikeSorter::getNumberOfChannelsForElectrode(int i) +{ + mut.enter(); + if (i > -1 && i < electrodes.size()) + { + Electrode *ee = electrodes[i]; + int ii=ee->numChannels; + mut.exit(); + return ii; + } else { + mut.exit(); + return 0; + } +} + + + +String SpikeSorter::getNameForElectrode(int i) +{ + mut.enter(); + if (i > -1 && i < electrodes.size()) + { + Electrode *ee = electrodes[i]; + String s= ee->name; + mut.exit(); + return s; + } else { + mut.exit(); + return " "; + } +} + + +void SpikeSorter::addSpikePlotForElectrode(SpikeHistogramPlot* sp, int i) +{ + mut.enter(); + Electrode *ee = electrodes[i]; + ee->spikePlot = sp; + mut.exit(); +} + +int SpikeSorter::getCurrentElectrodeIndex() +{ + return currentElectrode; +} + +Electrode* SpikeSorter::getElectrode(int i) +{ + return electrodes[i]; +} + + +std::vector<int> SpikeSorter::getElectrodeChannels(int ID) +{ + std::vector<int> ch; + mut.enter(); + for (int k=0;k<electrodes.size();k++) + { + if (electrodes[k]->electrodeID == ID) + { + + ch.resize(electrodes[k]->numChannels); + for (int j=0;j<electrodes[k]->numChannels;j++) + { + ch[j] = electrodes[k]->channels[j]; + } + + return ch; + mut.exit(); + } + + + } + mut.exit(); + return ch; +} + +Electrode* SpikeSorter::setCurrentElectrodeIndex(int i) +{ + jassert(i >= 0 & i < electrodes.size()); + currentElectrode = i; + return electrodes[i]; +} +/* + + +Histogram::Histogram(float _minValue, float _maxValue, float _resolution, bool _throwOutsideSamples) : + minValue(_minValue), maxValue(_maxValue), resolution(_resolution), throwOutsideSamples(_throwOutsideSamples) +{ + numBins = 1+ abs(maxValue-minValue) / resolution; + binCounts = new unsigned long[numBins]; + binCenters = new float[numBins]; + float deno = (numBins-1)/abs(maxValue-minValue); + for (int k=0;k<numBins;k++) + { + binCounts[k] = 0; + binCenters[k] = minValue + k/deno; + } +} +// +//Histogram::Histogram(float _minValue, float _maxValue, int _numBins, bool _throwOutsideSamples) : +// minValue(_minValue), maxValue(_maxValue), numBins(_numBins), throwOutsideSamples(_throwOutsideSamples) +//{ +// resolution = abs(maxValue-minValue) / numBins ; +// binCounts = new int[numBins]; +// binCenters = new float[numBins]; +// for (int k=0;k<numBins;k++) +// { +// binCounts[k] = 0; +// binCenters[k] = minValue + k/(numBins-1)*resolution; +// } +// +//} + +void Histogram::clear() +{ +for (int k=0;k<numBins;k++) + { + binCounts[k] = 0; + } +} + + +void Histogram::addSamples(float *Samples, int numSamples) { + for (int k=0;k<numSamples;k++) + { + int indx = ceil( (Samples[k] - minValue) / (maxValue-minValue) * (numBins-1)); + if (indx >= 0 && indx < numBins) + binCounts[indx]++; + } +} + +Histogram::~Histogram() +{ + delete [] binCounts; + delete [] binCenters; +} + + */ + + + + + + + + + + + + + +/***********************************/ +// +//circularBuffer::circularBuffer(int NumCh, int NumSamplesToHoldPerChannel, double SamplingRate) +//{ +// numCh = NumCh; +// samplingRate = SamplingRate; +// Buf.resize(numCh); +// for (int ch=0;ch<numCh;ch++) { +// Buf[ch].resize(NumSamplesToHoldPerChannel); +// } +// BufTS_H.resize(NumSamplesToHoldPerChannel); +// BufTS_S.resize(NumSamplesToHoldPerChannel); +// bufLen = NumSamplesToHoldPerChannel; +// numSamplesInBuf = 0; +// ptr = 0; // points to a valid position in the buffer. +//} +// +//circularBuffer::~circularBuffer() +//{ +// +//} +// +// +//std::vector<double> circularBuffer::getDataArray(int channel, int N) +//{ +// std::vector<double> LongArray; +// LongArray.resize(N); +// mut.enter(); +// +// int p = ptr - 1; +// for (int k = 0; k < N; k++) +// { +// if (p < 0) +// p = bufLen - 1; +// LongArray[k] = Buf[channel][p]; +// p--; +// } +// mut.exit(); +// return LongArray; +//} +// +//void circularBuffer::addDataToBuffer(std::vector<std::vector<double>> Data, double SoftwareTS, double HardwareTS) +//{ +// mut.enter(); +// int iNumPoints = Data[0].size(); +// for (int k = 0; k < iNumPoints; k++) +// { +// BufTS_H[ptr] = HardwareTS + k; +// BufTS_S[ptr] = SoftwareTS + k / samplingRate; +// for (int ch = 0; ch < numCh; ch++) +// { +// Buf[ch, ptr] = Data[ch, k]; +// } +// ptr++; +// +// if (ptr == bufLen) +// { +// ptr = 0; +// } +// numSamplesInBuf++; +// if (numSamplesInBuf >= bufLen) +// { +// numSamplesInBuf = bufLen; +// } +// } +// mut.exit(); +//} +// +// +//double circularBuffer::findThresholdForChannel(int channel) +//{ +// // Run median on analog input +// double numSamplesPerSecond = 30000; +// std::vector<double> LongArray = getDataArray(channel, numSamplesPerSecond*5); +// +// for (int k = 0; k < LongArray.size(); k++) +// LongArray[k] = fabs(LongArray[k]); +// +// std::sort (LongArray.begin(), LongArray.begin()+LongArray.size()); //(12 32 45 71)26 80 53 33 +// +// +// int Middle = LongArray.size() / 2; +// double Median = LongArray[Middle]; +// double NewThres = -4.0F * Median / 0.675F; +// +// return NewThres; +//} + + +// =================================================== + +void ContinuousCircularBuffer::reallocate(int NumCh) +{ + numCh =NumCh; + Buf.resize(numCh); + for (int k=0;k< numCh;k++) + { + Buf[k].resize(bufLen); + } + numSamplesInBuf = 0; + ptr = 0; // points to a valid position in the buffer. + +} + + +ContinuousCircularBuffer::ContinuousCircularBuffer(int NumCh, float SamplingRate, int SubSampling, float NumSecInBuffer) +{ + Time t; + + numTicksPerSecond = (double) t.getHighResolutionTicksPerSecond(); + + int numSamplesToHoldPerChannel = (int)(SamplingRate * NumSecInBuffer / SubSampling); + buffer_dx = 1.0 / (SamplingRate / SubSampling); + subSampling = SubSampling; + samplingRate = SamplingRate; + numCh =NumCh; + leftover_k = 0; + Buf.resize(numCh); + + + for (int k=0;k< numCh;k++) + { + Buf[k].resize(numSamplesToHoldPerChannel); + } + + hardwareTS.resize(numSamplesToHoldPerChannel); + softwareTS.resize(numSamplesToHoldPerChannel); + valid.resize(numSamplesToHoldPerChannel); + bufLen = numSamplesToHoldPerChannel; + numSamplesInBuf = 0; + ptr = 0; // points to a valid position in the buffer. +} + + +void ContinuousCircularBuffer::update(int channel, int64 hardware_ts, int64 software_ts, bool rise) +{ + // used to record ttl pulses as continuous data... + mut.enter(); + valid[ptr] = true; + hardwareTS[ptr] = hardware_ts; + softwareTS[ptr] = software_ts; + + Buf[channel][ptr] = (rise) ? 1.0 : 0.0; + + ptr++; + if (ptr == bufLen) + { + ptr = 0; + } + numSamplesInBuf++; + if (numSamplesInBuf >= bufLen) + { + numSamplesInBuf = bufLen; + } + mut.exit(); +} + +void ContinuousCircularBuffer::update(AudioSampleBuffer& buffer, int64 hardware_ts, int64 software_ts, int numpts) +{ + mut.enter(); + + // we don't start from zero because of subsampling issues. + // previous packet may not have ended exactly at the last given sample. + int k = leftover_k; + int lastUsedSample; + for (; k < numpts; k+=subSampling) + { + lastUsedSample = k; + valid[ptr] = true; + hardwareTS[ptr] = hardware_ts + k; + softwareTS[ptr] = software_ts + int64(float(k) / samplingRate * numTicksPerSecond); + + for (int ch = 0; ch < numCh; ch++) + { + Buf[ch][ptr] = *(buffer.getReadPointer(ch,k)); + } + ptr++; + if (ptr == bufLen) + { + ptr = 0; + } + numSamplesInBuf++; + if (numSamplesInBuf >= bufLen) + { + numSamplesInBuf = bufLen; + } + } + + int numMissedSamples = (numpts-1)-lastUsedSample; + leftover_k = (subSampling-numMissedSamples-1) % subSampling; + mut.exit(); + +} + + +void ContinuousCircularBuffer::update(std::vector<std::vector<bool>> contdata, int64 hardware_ts, int64 software_ts, int numpts) +{ + mut.enter(); + + // we don't start from zero because of subsampling issues. + // previous packet may not have ended exactly at the last given sample. + int k = leftover_k; + int lastUsedSample; + for (; k < numpts; k+=subSampling) + { + lastUsedSample = k; + valid[ptr] = true; + hardwareTS[ptr] = hardware_ts + k; + softwareTS[ptr] = software_ts + int64(float(k) / samplingRate * numTicksPerSecond); + + for (int ch = 0; ch < numCh; ch++) + { + Buf[ch][ptr] = contdata[ch][k]; + } + ptr++; + if (ptr == bufLen) + { + ptr = 0; + } + numSamplesInBuf++; + if (numSamplesInBuf >= bufLen) + { + numSamplesInBuf = bufLen; + } + } + + int numMissedSamples = (numpts-1)-lastUsedSample; + leftover_k =subSampling-numMissedSamples-1; + mut.exit(); + +} +/* +void ContinuousCircularBuffer::AddDataToBuffer(std::vector<std::vector<double>> lfp, double soft_ts) +{ + mut.enter(); + int numpts = lfp[0].size(); + for (int k = 0; k < numpts / subSampling; k++) + { + valid[ptr] = true; + for (int ch = 0; ch < numCh; ch++) + { + Buf[ch][ptr] = lfp[ch][k]; + TS[ptr] = soft_ts + (double)(k * subSampling) / samplingRate; + } + ptr++; + if (ptr == bufLen) + { + ptr = 0; + } + numSamplesInBuf++; + if (numSamplesInBuf >= bufLen) + { + numSamplesInBuf = bufLen; + } + } + mut.exit(); +} +*/ + +int ContinuousCircularBuffer::GetPtr() +{ + return ptr; +} + +/************************************************************/ + + + diff --git a/Source/Processors/SpikeSorter/SpikeSorter.h b/Source/Processors/SpikeSorter/SpikeSorter.h new file mode 100644 index 0000000000000000000000000000000000000000..7c07a439deff6477ed0c52e3226eab621ded23bf --- /dev/null +++ b/Source/Processors/SpikeSorter/SpikeSorter.h @@ -0,0 +1,408 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2013 Open Ephys + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#ifndef __SPIKESORTER_H_3F920F95__ +#define __SPIKESORTER_H_3F920F95__ + +#include "../../../JuceLibraryCode/JuceHeader.h" + +#include "../GenericProcessor/GenericProcessor.h" +#include "SpikeSorterEditor.h" +#include "SpikeSortBoxes.h" +#include "../Visualization/SpikeObject.h" +#include "../SourceNode/SourceNode.h" +#include "../DataThreads/RHD2000Thread.h" +#include <algorithm> // std::sort +#include <queue> +#include <stdlib.h> +#include <stdio.h> +#include <math.h> + +class SpikeSorterEditor; +class SpikeHistogramPlot; +class Trial; +/** + + Detects spikes in a continuous signal and outputs events containing the spike data. + + Allows the user to draw boundaries around clusters. + + @see GenericProcessor, SpikeSorterEditor + +*/ + +/* +class Histogram { +public: + Histogram(float _minValue, float _maxValue, float _resolution, bool _throwOutsideSamples); + //Histogram(float _minValue, float _maxValue, int _numBins, bool _throwOutsideSamples); + void addSamples(float *Samples, int numSamples); + ~Histogram(); + void clear(); + + float minValue, maxValue, resolution; + int numBins; + bool throwOutsideSamples; + unsigned long *binCounts; + float *binCenters; +}; +*/ + +class PCAjob; +class PCAcomputingThread; +class UniqueIDgenerator +{ +public: + UniqueIDgenerator() {globalUniqueID=0;} + int generateUniqueID() {return ++globalUniqueID;}; + void setUniqueID(int ID) {globalUniqueID= ID;} + int getLastUniqueID() {return globalUniqueID;} +private: + int globalUniqueID; +}; + +class Electrode +{ + public: + Electrode(int electrodeID, UniqueIDgenerator *uniqueIDgenerator_, PCAcomputingThread *pth,String _name, int _numChannels, int *_channels, float default_threshold, int pre, int post, float samplingRate ); + ~Electrode(); + + void resizeWaveform(int numPre, int numPost); + + String name; + + int numChannels; + int prePeakSamples, postPeakSamples; + int lastBufferIndex; + + int advancerID; + float depthOffsetMM; + + int electrodeID; + int* channels; + double* thresholds; + bool* isActive; + double *voltageScale; + //float PCArange[4]; + + SpikeHistogramPlot* spikePlot; + SpikeSortBoxes* spikeSort; + PCAcomputingThread *computingThread; + UniqueIDgenerator *uniqueIDgenerator; + bool isMonitored; +}; + + +class ContinuousCircularBuffer +{ +public: + ContinuousCircularBuffer(int NumCh, float SamplingRate, int SubSampling, float NumSecInBuffer); + void reallocate(int N); + void update(std::vector<std::vector<bool>> contdata, int64 hardware_ts, int64 software_ts, int numpts); + void update(AudioSampleBuffer& buffer, int64 hardware_ts, int64 software_ts, int numpts); + void update(int channel, int64 hardware_ts, int64 software_ts, bool rise); + int GetPtr(); + void addTrialStartToSmartBuffer(int trialID); + int numCh; + int subSampling; + float samplingRate; + CriticalSection mut; + int numSamplesInBuf; + double numTicksPerSecond; + int ptr; + int bufLen; + int leftover_k; + double buffer_dx; + + std::vector<std::vector<float> > Buf; + std::vector<bool> valid; + std::vector<int64> hardwareTS,softwareTS; +}; + + +//class StringTS; + + + +class SpikeSorter : public GenericProcessor +{ +public: + + // CONSTRUCTOR AND DESTRUCTOR // + + /** constructor */ + SpikeSorter(); + + /** destructor */ + ~SpikeSorter(); + + + // PROCESSOR METHODS // + + /** Processes an incoming continuous buffer and places new + spikes into the event buffer. */ + void process(AudioSampleBuffer& buffer, MidiBuffer& events, int& nSamples); + + /** Used to alter parameters of data acquisition. */ + void setParameter(int parameterIndex, float newValue); + + /** Called whenever the signal chain is altered. */ + void updateSettings(); + + /** Called prior to start of acquisition. */ + bool enable(); + + /** Called after acquisition is finished. */ + bool disable(); + + + bool isReady(); + /** Creates the SpikeSorterEditor. */ + AudioProcessorEditor* createEditor(); + + + + //void addNetworkEventToQueue(StringTS S); + + void postEventsInQueue(MidiBuffer& events); + + // INTERNAL BUFFERS // + + /** Extra samples are placed in this buffer to allow seamless + transitions between callbacks. */ + AudioSampleBuffer overflowBuffer; + + + // CREATE AND DELETE ELECTRODES // + + /** Adds an electrode with n channels to be processed. */ + bool addElectrode(int nChans, String name, double depth); + + void addProbes(String probeType,int numProbes, int nElectrodesPerProbe, int nChansPerElectrode, double firstContactOffset, double interelectrodeDistance); + + /** Removes an electrode with a given index. */ + bool removeElectrode(int index); + + + // EDIT AND QUERY ELECTRODE SETTINGS // + + /** Returns the number of channels for a given electrode. */ + int getNumChannels(int index); + + /** Edits the mapping between input channels and electrode channels. */ + void setChannel(int electrodeIndex, int channelNum, int newChannel); + + /** Returns the continuous channel that maps to a given + electrode channel. */ + int getChannel(int index, int chan); + + /** Sets the name of a given electrode. */ + void setElectrodeName(int index, String newName); + + /** */ + void setChannelActive(int electrodeIndex, int channelNum, bool active); + + /** */ + bool isChannelActive(int electrodeIndex, int channelNum); + + /** returns the current active electrode, i.e., the one displayed in the editor */ + Electrode* getActiveElectrode(); + + /** Returns a StringArray containing the names of all electrodes */ + StringArray getElectrodeNames(); + + /** modify a channel spike detection threshold */ + void setChannelThreshold(int electrodeNum, int channelNum, float threshold); + + /** returns a channel's detection threshold */ + double getChannelThreshold(int electrodeNum, int channelNum); + + /** used to generate messages over the network and to inform PSTH sink */ + void addNewUnit(int electrodeID, int newUnitID, uint8 r, uint8 g, uint8 b); + void removeUnit(int electrodeID, int newUnitID); + + /** saves all electrodes, thresholds, units, etc to xml */ + void saveCustomParametersToXml(XmlElement* parentElement); + void loadCustomParametersFromXml(); + + /** returns the depth of an electrode. The depth is calculated as the + known depth of the advancer that is used to control that electrode, plus + the defined depth offset. Depth offset is mainly useful for depth probes, + in which the contact position is not always the at the tip */ + //double getElectrodeDepth(int electrodeID); + + /** returns the number of electrodes */ + int getNumElectrodes(); + + /** clears up the spike plots. Called during updates */ + void removeSpikePlots(); + + int getNumberOfChannelsForElectrode(int i); + String getNameForElectrode(int i); + void addSpikePlotForElectrode(SpikeHistogramPlot* sp, int i); + int getCurrentElectrodeIndex(); + Electrode* setCurrentElectrodeIndex(int i); + Electrode* getElectrode(int i); + //StringTS createStringTS(String S); + //int64 getExtrapolatedHardwareTimestamp(int64 softwareTS); + //void postTimestamppedStringToMidiBuffer(StringTS s, MidiBuffer& events); + //void setElectrodeAdvancer(int i,int ID); + //void setElectrodeAdvancerOffset(int i, double v); + //double getAdvancerPosition(int advancerID); + //double getSelectedElectrodeDepth(); + bool getAutoDacAssignmentStatus(); + void seteAutoDacAssignment(bool status); + int getNumPreSamples(); + int getNumPostSamples(); + void setNumPreSamples(int numSamples); + void setNumPostSamples(int numSamples); + int getDACassignment(int channel); + void assignDACtoChannel(int dacOutput, int channel); + Array<int> getDACassignments(); + void updateDACthreshold(int dacChannel, float threshold); + bool getThresholdSyncStatus(); + void setThresholdSyncStatus(bool status); + bool getFlipSignalState(); + void setFlipSignalState(bool state); + void startRecording(); + std::vector<float> getElectrodeVoltageScales(int electrodeID); + //void getElectrodePCArange(int electrodeID, float &minX,float &maxX,float &minY,float &maxY); + //void setElectrodePCArange(int electrodeID, float minX,float maxX,float minY,float maxY); + + void removeAllUnits(int electrodeID); + + void setElectrodeVoltageScale(int electrodeID, int index, float newvalue); + bool isSelectedElectrodeRecorded(int channel); + std::vector<int> getElectrodeChannels(int ID); + + Array<Electrode*> getElectrodes(); + + std::vector<String> electrodeTypes; + +private: + UniqueIDgenerator uniqueIDgenerator; + long uniqueSpikeID; + SpikeObject prevSpike; + + void addElectrode(Electrode* newElectrode); + void increaseUniqueProbeID(String type); + int getUniqueProbeID(String type); + + float ticksPerSec; + int uniqueID; + //std::queue<StringTS> eventQueue; + /** pointer to a continuous buffer. */ + AudioSampleBuffer* dataBuffer; + + float getDefaultThreshold(); + + int overflowBufferSize; + + int sampleIndex; + + std::vector<int> electrodeCounter; + float getNextSample(int& chan); + float getCurrentSample(int& chan); + bool samplesAvailable(int& nSamples); + + bool useOverflowBuffer; + + int currentElectrode; + int currentChannelIndex; + int currentIndex; + + + int numPreSamples,numPostSamples; + uint8_t* spikeBuffer;///[256]; + //int64 timestamp; + int64 hardware_timestamp; + int64 software_timestamp; + + bool PCAbeforeBoxes; + ContinuousCircularBuffer* channelBuffers; // used to compute auto threshold + + void handleEvent(int eventType, MidiMessage& event, int sampleNum); + + void addSpikeEvent(SpikeObject* s, MidiBuffer& eventBuffer, int peakIndex); + + void resetElectrode(Electrode*); + CriticalSection mut; + bool autoDACassignment; + bool syncThresholds; + RHD2000Thread* getRhythmAccess(); + bool flipSignal; + + + void addWaveformToSpikeObject(SpikeObject* s, + int& peakIndex, + int& electrodeNumber, + int& currentChannel); + + + Array<Electrode*> electrodes; + PCAcomputingThread computingThread; + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SpikeSorter); + +}; + + + + +/* + +class circularBuffer { +public: + circularBuffer(int NumCh, int NumSamplesToHoldPerChannel, double SamplingRate); + ~circularBuffer(); + + std::vector<double> getDataArray(int channel, int N); + double findThresholdForChannel(int channel); + void update(AudioSampleBuffer& buffer); + +private: + CriticalSection mut; + + int numCh; + int numSamplesInBuf; + int ptr; + double samplingRate; + int bufLen; + std::vector<std::vector<double>> Buf; + std::vector<double> BufTS_H; + std::vector<double> BufTS_S; +}; + + +*/ + + + + + + + + + + + +#endif // __SPIKESORTER_H_3F920F95__ diff --git a/Source/Processors/SpikeSorter/SpikeSorterCanvas.cpp b/Source/Processors/SpikeSorter/SpikeSorterCanvas.cpp new file mode 100644 index 0000000000000000000000000000000000000000..abfc13528109520887efa69b8d9299b0269feda4 --- /dev/null +++ b/Source/Processors/SpikeSorter/SpikeSorterCanvas.cpp @@ -0,0 +1,2212 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2013 Open Ephys + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include "SpikeSorterCanvas.h" +#include "../SpikeDisplayNode/SpikeDisplayCanvas.h" + +SpikeSorterCanvas::SpikeSorterCanvas(SpikeSorter* n) : + processor(n), newSpike(false) +{ + electrode = nullptr; + viewport = new Viewport(); + spikeDisplay = new SpikeThresholdDisplay(n,this, viewport); + + viewport->setViewedComponent(spikeDisplay, false); + viewport->setScrollBarsShown(true, true); + + inDrawingPolygonMode = false; + scrollBarThickness = viewport->getScrollBarThickness(); + + addUnitButton = new UtilityButton("New box unit", Font("Small Text", 13, Font::plain)); + addUnitButton->setRadius(3.0f); + addUnitButton->addListener(this); + addAndMakeVisible(addUnitButton); + + addPolygonUnitButton = new UtilityButton("New polygon", Font("Small Text", 13, Font::plain)); + addPolygonUnitButton->setRadius(3.0f); + addPolygonUnitButton->addListener(this); + addAndMakeVisible(addPolygonUnitButton); + + addBoxButton = new UtilityButton("Add box", Font("Small Text", 13, Font::plain)); + addBoxButton->setRadius(3.0f); + addBoxButton->addListener(this); + addAndMakeVisible(addBoxButton); + + delUnitButton = new UtilityButton("Delete", Font("Small Text", 13, Font::plain)); + delUnitButton->setRadius(3.0f); + delUnitButton->addListener(this); + addAndMakeVisible(delUnitButton); + + rePCAButton = new UtilityButton("Re-PCA", Font("Small Text", 13, Font::plain)); + rePCAButton->setRadius(3.0f); + rePCAButton->addListener(this); + addAndMakeVisible(rePCAButton); + + newIDbuttons = new UtilityButton("New IDs", Font("Small Text", 13, Font::plain)); + newIDbuttons->setRadius(3.0f); + newIDbuttons->addListener(this); + addAndMakeVisible(newIDbuttons); + + deleteAllUnits = new UtilityButton("Delete All", Font("Small Text", 13, Font::plain)); + deleteAllUnits->setRadius(3.0f); + deleteAllUnits->addListener(this); + addAndMakeVisible(deleteAllUnits); + + nextElectrode = new UtilityButton("Next Electrode", Font("Small Text", 13, Font::plain)); + nextElectrode->setRadius(3.0f); + nextElectrode->addListener(this); + addAndMakeVisible(nextElectrode); + + prevElectrode = new UtilityButton("Prev Electrode", Font("Small Text", 13, Font::plain)); + prevElectrode->setRadius(3.0f); + prevElectrode->addListener(this); + addAndMakeVisible(prevElectrode); + + addAndMakeVisible(viewport); + + setWantsKeyboardFocus(true); + + update(); + +} + +SpikeSorterCanvas::~SpikeSorterCanvas() +{ + +} + +void SpikeSorterCanvas::beginAnimation() +{ + std::cout << "SpikeSorterCanvas beginning animation." << std::endl; + + startCallbacks(); +} + +void SpikeSorterCanvas::endAnimation() +{ + std::cout << "SpikeSorterCanvas ending animation." << std::endl; + + stopCallbacks(); +} + +void SpikeSorterCanvas::update() +{ + + std::cout << "Updating SpikeSorterCanvas" << std::endl; + + int nPlots = processor->getNumElectrodes(); + processor->removeSpikePlots(); + spikeDisplay->removePlots(); + + if (nPlots > 0) + { + // Plot only active electrode + int currentElectrode = processor->getCurrentElectrodeIndex(); + electrode = processor->getActiveElectrode(); + SpikeHistogramPlot* sp = spikeDisplay->addSpikePlot(processor->getNumberOfChannelsForElectrode(currentElectrode), electrode->electrodeID, + processor->getNameForElectrode(currentElectrode)); + processor->addSpikePlotForElectrode(sp, currentElectrode); + electrode->spikePlot->setFlipSignal(processor->getFlipSignalState()); + electrode->spikePlot->updateUnitsFromProcessor(); + + } + spikeDisplay->resized(); + spikeDisplay->repaint(); +} + + +void SpikeSorterCanvas::refreshState() +{ + // called when the component's tab becomes visible again + resized(); +} + +void SpikeSorterCanvas::resized() +{ + viewport->setBounds(130,0,getWidth()-140,getHeight()); + + spikeDisplay->setBounds(0,0,getWidth()-140, spikeDisplay->getTotalHeight()); + + nextElectrode->setBounds(0, 20, 120,30); + prevElectrode->setBounds(0, 60, 120,30); + + addUnitButton->setBounds(0, 120, 120,20); + addPolygonUnitButton->setBounds(0, 150, 120,20); + addBoxButton->setBounds(0, 180, 120,20); + delUnitButton->setBounds(0, 210, 120,20); + + rePCAButton->setBounds(0, 240, 120,20); + + newIDbuttons->setBounds(0, 270, 120,20); + deleteAllUnits->setBounds(0, 300, 120,20); + +} + +void SpikeSorterCanvas::paint(Graphics& g) +{ + + g.fillAll(Colours::darkgrey); + +} + +void SpikeSorterCanvas::refresh() +{ + // called every 10 Hz + processSpikeEvents(); + + repaint(); +} + + +void SpikeSorterCanvas::processSpikeEvents() +{ + + + Electrode* e = ((SpikeSorter*) processor)->getActiveElectrode(); + + // e->spikeSort->lstLastSpikes + // processor->setParameter(2, 0.0f); // request redraw + +} + + + + + +void SpikeSorterCanvas::removeUnitOrBox() +{ + int electrodeID = processor->getActiveElectrode()->electrodeID; + int unitID, boxID; + processor->getActiveElectrode()->spikePlot->getSelectedUnitAndBox(unitID, boxID); + bool selectNewBoxUnit = false; + bool selectNewPCAUnit = false; + if (unitID > 0) + { + if (boxID >= 0) + { + // box unit + int numBoxes = processor->getActiveElectrode()->spikeSort->getNumBoxes(unitID); + if (numBoxes > 1) + { + // delete box, but keep unit + processor->getActiveElectrode()->spikeSort->removeBoxFromUnit(unitID, boxID); + electrode->spikePlot->updateUnitsFromProcessor(); + electrode->spikePlot->setSelectedUnitAndBox(unitID,0); + } + else + { + // delete unit + processor->getActiveElectrode()->spikeSort->removeUnit(unitID); + electrode->spikePlot->updateUnitsFromProcessor(); + processor->removeUnit(electrodeID, unitID); + + std::vector<BoxUnit> boxunits = processor->getActiveElectrode()->spikeSort->getBoxUnits(); + std::vector<PCAUnit> pcaunits = processor->getActiveElectrode()->spikeSort->getPCAUnits(); + if (boxunits.size() > 0) + { + selectNewBoxUnit = true; + } + else if (pcaunits.size() > 0) + { + selectNewPCAUnit = true; + } + else + { + electrode->spikePlot->setSelectedUnitAndBox(-1,-1); + } + } + } + else + { + // pca unit + processor->getActiveElectrode()->spikeSort->removeUnit(unitID); + electrode->spikePlot->updateUnitsFromProcessor(); + processor->removeUnit(electrodeID, unitID); + + std::vector<BoxUnit> boxunits = processor->getActiveElectrode()->spikeSort->getBoxUnits(); + std::vector<PCAUnit> pcaunits = processor->getActiveElectrode()->spikeSort->getPCAUnits(); + if (pcaunits.size() > 0) + { + selectNewPCAUnit = true; + } + else if (boxunits.size() > 0) + { + selectNewBoxUnit = true; + } + else + { + electrode->spikePlot->setSelectedUnitAndBox(-1,-1); + } + + + } + if (selectNewPCAUnit) + { + // set new selected unit to be the last existing unit + std::vector<PCAUnit> u = processor->getActiveElectrode()->spikeSort->getPCAUnits(); + if (u.size() > 0) + { + electrode->spikePlot->setSelectedUnitAndBox(u[u.size()-1].getUnitID(),-1); + } + else + { + electrode->spikePlot->setSelectedUnitAndBox(-1,-1); + } + } + if (selectNewBoxUnit) + { + // set new selected unit to be the last existing unit + std::vector<BoxUnit> u = processor->getActiveElectrode()->spikeSort->getBoxUnits(); + if (u.size() > 0) + { + electrode->spikePlot->setSelectedUnitAndBox(u[u.size()-1].getUnitID(),0); + } + else + { + electrode->spikePlot->setSelectedUnitAndBox(-1,-1); + } + } + + + + } + +} + +bool SpikeSorterCanvas::keyPressed(const KeyPress& key) +{ + + KeyPress c = KeyPress::createFromDescription("c"); + KeyPress e = KeyPress::createFromDescription("escape"); + KeyPress d = KeyPress::createFromDescription("delete"); + + if (key.isKeyCode(c.getKeyCode())) // C + { + spikeDisplay->clear(); + + std::cout << "Clearing display" << std::endl; + return true; + } + else if (key.isKeyCode(e.getKeyCode())) // ESC + { + spikeDisplay->setPolygonMode(false); + return true; + } + else if (key.isKeyCode(d.getKeyCode())) // Delete + { + removeUnitOrBox(); + return true; + } + + return false; + +} + +void SpikeSorterCanvas::buttonClicked(Button* button) +{ + int channel = 0; + int unitID = -1; + int boxID = -1; + Time t; + + if (button == addPolygonUnitButton) + { + inDrawingPolygonMode = true; + addPolygonUnitButton->setToggleState(true, dontSendNotification); + electrode->spikePlot->setPolygonDrawingMode(true); + } + else if (button == addUnitButton) + { + Electrode* e = processor->getActiveElectrode(); + + if (e != nullptr) + { + int electrodeID = processor->getActiveElectrode()->electrodeID; + + std::cout << "Adding box unit to electrode " << e->electrodeID << std::endl; + int newUnitID = processor->getActiveElectrode()->spikeSort->addBoxUnit(0); + + uint8 r, g, b; + processor->getActiveElectrode()->spikeSort->getUnitColor(newUnitID, r, g, b); + electrode->spikePlot->updateUnitsFromProcessor(); + electrode->spikePlot->setSelectedUnitAndBox(newUnitID, 0); + processor->addNewUnit(electrodeID, newUnitID, r, g, b); + } + + } + else if (button == delUnitButton) + { + removeUnitOrBox(); + + } + else if (button == addBoxButton) + { + + processor->getActiveElectrode()->spikePlot->getSelectedUnitAndBox(unitID, boxID); + + if (unitID > 0) + { + std::cout << "Adding box to channel " << channel << " with unitID " << unitID << std::endl; + processor->getActiveElectrode()->spikeSort->addBoxToUnit(channel, unitID); + electrode->spikePlot->updateUnitsFromProcessor(); + } + } + else if (button == rePCAButton) + { + processor->getActiveElectrode()->spikeSort->RePCA(); + } + else if (button == nextElectrode) + { + SpikeSorterEditor* ed = (SpikeSorterEditor*)processor->getEditor(); + ed->setElectrodeComboBox(1); + } + else if (button == prevElectrode) + { + + SpikeSorterEditor* ed = (SpikeSorterEditor*)processor->getEditor(); + + ed->setElectrodeComboBox(-1); + + } + else if (button == newIDbuttons) + { + // generate new IDs + processor->getActiveElectrode()->spikeSort->generateNewIDs(); + electrode->spikePlot->updateUnitsFromProcessor(); + //processor->updateSinks(electrode->electrodeID,false); + } + else if (button == deleteAllUnits) + { + // delete unit + processor->getActiveElectrode()->spikeSort->removeAllUnits(); + electrode->spikePlot->updateUnitsFromProcessor(); + processor->removeAllUnits(electrode->electrodeID); + } + + repaint(); +} + + + + + +// ---------------------------------------------------------------- + +SpikeThresholdDisplay::SpikeThresholdDisplay(SpikeSorter* p, SpikeSorterCanvas* sdc, Viewport* v) : + processor(p),canvas(sdc), viewport(v) +{ + + totalHeight = 1000; + +} + +SpikeThresholdDisplay::~SpikeThresholdDisplay() +{ + +} + +void SpikeThresholdDisplay::clear() +{ + if (spikePlots.size() > 0) + { + for (int i = 0; i < spikePlots.size(); i++) + { + spikePlots[i]->clear(); + } + } + +} + + +void SpikeThresholdDisplay::removePlots() +{ + spikePlots.clear(); + +} + +SpikeHistogramPlot* SpikeThresholdDisplay::addSpikePlot(int numChannels, int electrodeID, String name_) +{ + + std::cout << "Adding new spike plot." << std::endl; + + SpikeHistogramPlot* spikePlot = new SpikeHistogramPlot(processor,canvas, electrodeID, 1000 + numChannels, name_); + spikePlots.add(spikePlot); + addAndMakeVisible(spikePlot); + + return spikePlot; +} + +void SpikeThresholdDisplay::paint(Graphics& g) +{ + + g.fillAll(Colours::grey); + +} + +void SpikeThresholdDisplay::setPolygonMode(bool on) +{ + if (spikePlots.size() > 0) + spikePlots[0]->setPolygonDrawingMode(on); +} + +void SpikeThresholdDisplay::resized() +{ + // this is kind of a mess -- is there any way to optimize it? + + if (spikePlots.size() > 0) + { + + int w = getWidth(); + int h = 430;//getHeight(); + + spikePlots[0]->setBounds(0, 0, w, h); + + + setBounds(0, 0, w, h); + } + +} + +void SpikeThresholdDisplay::mouseDown(const MouseEvent& event) +{ + +} + +void SpikeThresholdDisplay::plotSpike(const SpikeObject& spike, int electrodeNum) +{ + spikePlots[electrodeNum]->processSpikeObject(spike); + +} + + + + + + +// ---------------------------------------------------------------- + +SpikeHistogramPlot::SpikeHistogramPlot(SpikeSorter* prc,SpikeSorterCanvas* sdc, int electrodeID_, int p, String name_) : + canvas(sdc), isSelected(false), plotType(p), electrodeID(electrodeID_), + limitsChanged(true), processor(prc), name(name_) + +{ + + font = Font("Default", 15, Font::plain); + + switch (p) + { + case SINGLE_PLOT: + // std::cout<<"SpikePlot as SINGLE_PLOT"<<std::endl; + nWaveAx = 1; + nProjAx = 1; + nChannels = 1; + minWidth = 600; + aspectRatio = 0.5f; + break; + case STEREO_PLOT: + // std::cout<<"SpikePlot as STEREO_PLOT"<<std::endl; + nWaveAx = 2; + nProjAx = 1; + nChannels = 2; + minWidth = 300; + aspectRatio = 0.5f; + break; + case TETRODE_PLOT: + // std::cout<<"SpikePlot as TETRODE_PLOT"<<std::endl; + nWaveAx = 4; + nProjAx = 1; + nChannels = 4; + minWidth = 400; + aspectRatio = 0.5f; + break; + // case HIST_PLOT: + // nWaveAx = 1; + // nProjAx = 0; + // nHistAx = 1; + // break; + default: // unsupported number of axes provided + std::cout << "SpikePlot as UNKNOWN, defaulting to SINGLE_PLOT" << std::endl; + nWaveAx = 1; + nProjAx = 0; + plotType = SINGLE_PLOT; + nChannels = 1; + } + + std::vector<float> scales = processor->getElectrodeVoltageScales(electrodeID); + initAxes(scales); + + for (int i = 0; i < nChannels; i++) + { + UtilityButton* rangeButton = new UtilityButton(String(scales[i],0), Font("Small Text", 10, Font::plain)); + rangeButton->setRadius(3.0f); + rangeButton->addListener(this); + addAndMakeVisible(rangeButton); + + rangeButtons.add(rangeButton); + } + +} + + +void SpikeHistogramPlot::setSelectedUnitAndBox(int unitID, int boxID) +{ + const ScopedLock myScopedLock(mut); + processor->getActiveElectrode()->spikeSort->setSelectedUnitAndBox(unitID, boxID); +} + +void SpikeHistogramPlot::getSelectedUnitAndBox(int& unitID, int& boxID) +{ + const ScopedLock myScopedLock(mut); + processor->getActiveElectrode()->spikeSort->getSelectedUnitAndBox(unitID, boxID); +} + + +SpikeHistogramPlot::~SpikeHistogramPlot() +{ + pAxes.clear(); + wAxes.clear(); + +} + +void SpikeHistogramPlot::paint(Graphics& g) +{ + + //const MessageManagerLock mmLock; + + g.setColour(Colours::white); + g.drawRect(0,0,getWidth(),getHeight()); + + g.setFont(font); + + g.drawText(name,10,0,200,20,Justification::left,false); + +} + +void SpikeHistogramPlot::setFlipSignal(bool state) +{ + for (int i = 0; i < wAxes.size(); i++) + { + wAxes[i]->setSignalFlip(state); + } +} + +void SpikeHistogramPlot::setPolygonDrawingMode(bool on) +{ + const ScopedLock myScopedLock(mut); + pAxes[0]->setPolygonDrawingMode(on); +} + +void SpikeHistogramPlot::updateUnitsFromProcessor() +{ + const ScopedLock myScopedLock(mut); + boxUnits = processor->getActiveElectrode()->spikeSort->getBoxUnits(); + pcaUnits = processor->getActiveElectrode()->spikeSort->getPCAUnits(); + + if (nWaveAx > 0) + { + wAxes[0]->updateUnits(boxUnits); + } + pAxes[0]->updateUnits(pcaUnits); + + + int selectedUnitID, selectedBoxID; + processor->getActiveElectrode()->spikeSort->getSelectedUnitAndBox(selectedUnitID, selectedBoxID); + + + + +} + +void SpikeHistogramPlot::setPCARange(float p1min, float p2min, float p1max, float p2max) +{ + const ScopedLock myScopedLock(mut); + pAxes[0]->setPCARange(p1min, p2min, p1max, p2max); +} + +void SpikeHistogramPlot::processSpikeObject(const SpikeObject& s) +{ + const ScopedLock myScopedLock(mut); + if (nWaveAx > 0) + { + for (int i = 0; i < nWaveAx; i++) + { + wAxes[i]->updateSpikeData(s); + } + + pAxes[0]->updateSpikeData(s); + + + } +} + +void SpikeHistogramPlot::select() +{ + isSelected = true; +} + +void SpikeHistogramPlot::deselect() +{ + isSelected = false; +} + +void SpikeHistogramPlot::initAxes(std::vector<float> scales) +{ + const ScopedLock myScopedLock(mut); + initLimits(); + + for (int i = 0; i < nWaveAx; i++) + { + WaveformAxes* wAx = new WaveformAxes(this,processor, electrodeID, i); + wAx->setDetectorThreshold(processor->getActiveElectrode()->thresholds[i]); + wAxes.add(wAx); + addAndMakeVisible(wAx); + ranges.add(scales[i]); + } + + PCAProjectionAxes* pAx = new PCAProjectionAxes(processor); + float p1min,p2min, p1max, p2max; + processor->getActiveElectrode()->spikeSort->getPCArange(p1min,p2min, p1max, p2max); + pAx->setPCARange(p1min,p2min, p1max, p2max); + + pAxes.add(pAx); + addAndMakeVisible(pAx); + + setLimitsOnAxes(); // initialize the ranges +} + +void SpikeHistogramPlot::resized() +{ + const ScopedLock myScopedLock(mut); + + float width = (float)getWidth()-10; + float height = (float) getHeight()-25; + + float axesWidth, axesHeight; + + // to compute the axes positions we need to know how many columns of proj and wave axes should exist + // using these two values we can calculate the positions of all of the sub axes + int nProjCols, nWaveCols; + + switch (plotType) + { + case SINGLE_PLOT: + nProjCols = 1; + nWaveCols = 1; + axesWidth = width/2; + axesHeight = height; + break; + + case STEREO_PLOT: + nProjCols = 1; + nWaveCols = 2; + axesWidth = width/2; + axesHeight = height; + break; + case TETRODE_PLOT: + nProjCols = 1; + nWaveCols = 2; + axesWidth = width/2; + axesHeight = height/2; + break; + } + + for (int i = 0; i < nWaveAx; i++) + { + wAxes[i]->setBounds(5 + (i % nWaveCols) * axesWidth/nWaveCols, 20 + (i/nWaveCols) * axesHeight, axesWidth/nWaveCols, axesHeight); + rangeButtons[i]->setBounds(8 + (i % nWaveCols) * axesWidth/nWaveCols, + 20 + (i/nWaveCols) * axesHeight + axesHeight - 18, + 35, 15); + } + pAxes[0]->setBounds(5 + axesWidth, 20 + 0, width/2, height); + + +} + + + +void SpikeHistogramPlot::modifyRange(std::vector<float> values) +{ + const int NUM_RANGE = 7; + float range_array[NUM_RANGE] = {100,250,500,750,1000,1250,1500}; + String label; + int newIndex = 0; + + for (int index = 0; index < nChannels; index++) + { + for (int k = 0; k < NUM_RANGE; k++) + { + if (abs(values[index] - range_array[k]) < 0.1) + { + newIndex = k; + break; + } + } + + ranges.set(index, range_array[newIndex]); + String label = String(range_array[newIndex],0); + rangeButtons[index]->setLabel(label); + } + setLimitsOnAxes(); +} + + +void SpikeHistogramPlot::modifyRange(int index,bool up) +{ + const int NUM_RANGE = 7; + float range_array[NUM_RANGE] = {100,250,500,750,1000,1250,1500}; + String label; + for (int k = 0; k < NUM_RANGE; k++) + { + if (abs(ranges[index] - range_array[k]) < 0.1) + { + int newIndex; + if (up) + newIndex = (k + 1) % NUM_RANGE; + else + { + newIndex = (k - 1); + if (newIndex < 0) + newIndex = NUM_RANGE-1; + } + ranges.set(index, range_array[newIndex]); + String label = String(range_array[newIndex],0); + rangeButtons[index]->setLabel(label); + setLimitsOnAxes(); + + processor->setElectrodeVoltageScale(electrodeID, index, range_array[newIndex]); + return; + } + + } + // we shoudl never reach here. + jassert(false); + return ; + +} + +void SpikeHistogramPlot::buttonClicked(Button* button) +{ + UtilityButton* buttonThatWasClicked = (UtilityButton*) button; + + int index = rangeButtons.indexOf(buttonThatWasClicked); + modifyRange(index,true); + +} + +void SpikeHistogramPlot::setLimitsOnAxes() +{ + const ScopedLock myScopedLock(mut); + for (int i = 0; i < nWaveAx; i++) + wAxes[i]->setRange(ranges[i]); +} + +void SpikeHistogramPlot::initLimits() +{ + for (int i = 0; i < nChannels; i++) + { + limits[i][0] = 1209;//-1*pow(2,11); + limits[i][1] = 11059;//pow(2,14)*1.6; + } + +} + +void SpikeHistogramPlot::getBestDimensions(int* w, int* h) +{ + switch (plotType) + { + case TETRODE_PLOT: + *w = 4; + *h = 2; + break; + case STEREO_PLOT: + *w = 2; + *h = 1; + break; + case SINGLE_PLOT: + *w = 1; + *h = 1; + break; + default: + *w = 1; + *h = 1; + break; + } +} + +void SpikeHistogramPlot::clear() +{ + const ScopedLock myScopedLock(mut); + std::cout << "SpikePlot::clear()" << std::endl; + + for (int i = 0; i < nWaveAx; i++) + wAxes[i]->clear(); + for (int i = 0; i < nProjAx; i++) + pAxes[i]->clear(); + + +} + + +void SpikeHistogramPlot::setDisplayThresholdForChannel(int i, float f) +{ + const ScopedLock myScopedLock(mut); + if (i < wAxes.size()) + wAxes[i]->setDetectorThreshold(f); + + return; +} + + +float SpikeHistogramPlot::getDisplayThresholdForChannel(int i) +{ + const ScopedLock myScopedLock(mut); + float f= wAxes[i]->getDisplayThreshold(); + + return f; +} + +/********************************/ + + + +// -------------------------------------------------- + +GenericDrawAxes::GenericDrawAxes(int t) + : gotFirstSpike(false), type(t) +{ + ylims[0] = 0; + ylims[1] = 1; + + xlims[0] = 0; + xlims[1] = 1; + + font = Font("Default", 12, Font::plain); + +} + +GenericDrawAxes::~GenericDrawAxes() +{ + +} + +bool GenericDrawAxes::updateSpikeData(const SpikeObject& newSpike) +{ + if (!gotFirstSpike) + { + gotFirstSpike = true; + } + + s = newSpike; + return true; +} + +void GenericDrawAxes::setYLims(double ymin, double ymax) +{ + + //std::cout << "setting y limits to " << ymin << " " << ymax << std::endl; + ylims[0] = ymin; + ylims[1] = ymax; +} +void GenericDrawAxes::getYLims(double* min, double* max) +{ + *min = ylims[0]; + *max = ylims[1]; +} +void GenericDrawAxes::setXLims(double xmin, double xmax) +{ + xlims[0] = xmin; + xlims[1] = xmax; +} +void GenericDrawAxes::getXLims(double* min, double* max) +{ + *min = xlims[0]; + *max = xlims[1]; +} + + +void GenericDrawAxes::setType(int t) +{ + if (t < WAVE1 || t > PROJ3x4) + { + std::cout<<"Invalid Axes type specified"; + return; + } + type = t; +} + +int GenericDrawAxes::getType() +{ + return type; +} + +int GenericDrawAxes::roundUp(int numToRound, int multiple) +{ + if (multiple == 0) + { + return numToRound; + } + + int remainder = numToRound % multiple; + if (remainder == 0) + return numToRound; + return numToRound + multiple - remainder; +} + + +void GenericDrawAxes::makeLabel(int val, int gain, bool convert, char* s) +{ + if (convert) + { + double volt = ad16ToUv(val, gain)/1000.; + if (abs(val)>1e6) + { + //val = val/(1e6); + sprintf(s, "%.2fV", volt); + } + else if (abs(val)>1e3) + { + //val = val/(1e3); + sprintf(s, "%.2fmV", volt); + } + else + sprintf(s, "%.2fuV", volt); + } + else + { + sprintf(s,"%d", (int)val); + } +} + +double GenericDrawAxes::ad16ToUv(int x, int gain) +{ + int result = (double)(x * 20e6) / (double)(gain * pow(2.0,16)); + return result; +} + + +// -------------------------------------------------- + + +WaveformAxes::WaveformAxes(SpikeHistogramPlot* plt, SpikeSorter* p,int electrodeID_, int _channel) : GenericDrawAxes(channel), electrodeID(electrodeID_), + signalFlipped(false), + channel(_channel), + drawGrid(true), + displayThresholdLevel(0.0f), + spikesReceivedSinceLastRedraw(0), + spikeIndex(0), + bufferSize(5), + range(250.0f), + isOverThresholdSlider(false), + isDraggingThresholdSlider(false), + processor(p), + spikeHistogramPlot(plt) +{ + bDragging = false; + + isOverUnit = -1; + isOverBox = -1; + // selectedUnit = -1; + // selectedBox = -1; + addMouseListener(this, true); + + thresholdColour = Colours::red; + + + font = Font("Small Text",10,Font::plain); + int numSamples = 40; + for (int n = 0; n < bufferSize; n++) + { + SpikeObject so; + generateEmptySpike(&so, 4, numSamples); + + spikeBuffer.add(so); + } +} + +void WaveformAxes::mouseWheelMove(const MouseEvent& event, const MouseWheelDetails& wheel) +{ + // weirdly enough, sometimes we get twice of this event even though a single wheel move was made... + if (wheel.deltaY < 0) + spikeHistogramPlot->modifyRange(channel, true); + else + spikeHistogramPlot->modifyRange(channel, false); + +} + +void WaveformAxes::setSignalFlip(bool state) +{ + signalFlipped = state; + repaint(); +} + +void WaveformAxes::setRange(float r) +{ + + //std::cout << "Setting range to " << r << std::endl; + + range = r; + + repaint(); +} + +void WaveformAxes::plotSpike(const SpikeObject& s, Graphics& g) +{ + + float h = getHeight(); + g.setColour(Colour(s.color[0],s.color[1],s.color[2])); + //g.setColour(Colours::pink); + //compute the spatial width for each waveform sample + float dx = getWidth()/float(spikeBuffer[0].nSamples); + + /* + float align = 8 * getWidth()/float(spikeBuffer[0].nSamples); + g.drawLine(align, + 0, + align, + h); + */ + + // type corresponds to channel so we need to calculate the starting + // sample based upon which channel is getting plotted + int offset = channel*s.nSamples; //spikeBuffer[0].nSamples * type; // + + int dSamples = 1; + + float x = 0.0f; + + for (int i = 0; i < s.nSamples-1; i++) + { + //std::cout << s.data[sampIdx] << std::endl; + + if (*s.gain != 0) + { + float s1 =h- (h/2 + float(s.data[offset+i]-32768)/float(*s.gain)*1000.0f / (range) * h); + float s2 =h- (h/2 + float(s.data[offset+i+1]-32768)/float(*s.gain)*1000.0f / (range) * h); + if (signalFlipped) + { + s1=h-s1; + s2=h-s2; + } + g.drawLine(x, + s1, + x+dx, + s2); + } + x += dx; + } + +} + +void WaveformAxes::drawThresholdSlider(Graphics& g) +{ + + // draw display threshold (editable) + g.setColour(thresholdColour); + if (signalFlipped) + { + float h = getHeight()-(getHeight()*(0.5f - displayThresholdLevel/range)); + g.drawLine(0, h, getWidth(), h); + g.drawText(String(roundFloatToInt(displayThresholdLevel)),2,h,35,10,Justification::left, false); + } + else + { + float h = getHeight()*(0.5f - displayThresholdLevel/range); + g.drawLine(0, h, getWidth(), h); + g.drawText(String(roundFloatToInt(displayThresholdLevel)),2,h,35,10,Justification::left, false); + } + +} + + +void WaveformAxes::drawWaveformGrid(Graphics& g) +{ + + float h = getHeight(); + float w = getWidth(); + + g.setColour(Colours::darkgrey); + + for (float y = -range/2; y < range/2; y += 25.0f) + { + if (y == 0) + g.drawLine(0,h/2 + y/range*h, w, h/2+ y/range*h,2.0f); + else + g.drawLine(0,h/2 + y/range*h, w, h/2+ y/range*h); + } + +} + + +bool WaveformAxes::updateSpikeData(const SpikeObject& s) +{ + if (!gotFirstSpike) + { + gotFirstSpike = true; + } + + if (spikesReceivedSinceLastRedraw < bufferSize) + { + + SpikeObject newSpike = s; + + spikeIndex++; + spikeIndex %= bufferSize; + + spikeBuffer.set(spikeIndex, newSpike); + + spikesReceivedSinceLastRedraw++; + + } + + return true; + +} + +bool WaveformAxes::checkThreshold(const SpikeObject& s) +{ + int sampIdx = 40*type; + + for (int i = 0; i < s.nSamples-1; i++) + { + + if (float(s.data[sampIdx]-32768)/float(*s.gain)*1000.0f > displayThresholdLevel) + { + return true; + } + + sampIdx++; + } + + return false; + +} + +void WaveformAxes::clear() +{ + + spikeBuffer.clear(); + spikeIndex = 0; + int numSamples=40; + for (int n = 0; n < bufferSize; n++) + { + SpikeObject so; + generateEmptySpike(&so, 4,numSamples); + + spikeBuffer.add(so); + } + + repaint(); +} + +void WaveformAxes::mouseMove(const MouseEvent& event) +{ + + // Point<int> pos = event.getPosition(); + + float y = event.y; + + float h = getHeight()*(0.5f - displayThresholdLevel/range); + if (signalFlipped) + { + h = getHeight() - h; + } + + // std::cout << y << " " << h << std::endl; + + if (y > h - 10.0f && y < h + 10.0f && !isOverThresholdSlider) + { + thresholdColour = Colours::yellow; + // std::cout << "Yes." << std::endl; + isOverThresholdSlider = true; + // cursorType = MouseCursor::DraggingHandCursor; + } + else if ((y < h - 10.0f || y > h + 10.0f) && isOverThresholdSlider) + { + thresholdColour = Colours::red; + isOverThresholdSlider = false; + } + else + { + // are we inside a box ? + isOverUnit = 0; + isOverBox = -1; + strOverWhere = ""; + isOverUnitBox(event.x, event.y, isOverUnit, isOverBox, strOverWhere); + + } + repaint(); + +} + +int WaveformAxes::findUnitIndexByID(int ID) +{ + for (int k = 0; k < units.size(); k++) + if (units[k].UnitID == ID) + return k; + return -1; +} + +void WaveformAxes::mouseDown(const juce::MouseEvent& event) +{ + + if (event.mods.isRightButtonDown()) + { + clear(); + } + + float h = getHeight(); + float w = getWidth(); + float microsec_span = 40.0/30000.0 * 1e6; + float microvolt_span = range/2; + mouseDownX = event.x/w * microsec_span ; + if (signalFlipped) + mouseDownY=(h/2- (h-event.y))/(h/2)*microvolt_span; + else + mouseDownY=(h/2- event.y)/(h/2)*microvolt_span; + + if (isOverUnit > 0) + { + processor->getActiveElectrode()->spikeSort->setSelectedUnitAndBox(isOverUnit, isOverBox); + int indx = findUnitIndexByID(isOverUnit); + jassert(indx >= 0); + mouseOffsetX = mouseDownX - units[indx].lstBoxes[isOverBox].x; + mouseOffsetY = mouseDownY - units[indx].lstBoxes[isOverBox].y; + } + else + { + processor->getActiveElectrode()->spikeSort->setSelectedUnitAndBox(-1, -1); + + } + // MouseUnitOffset = ScreenToMS_uV(e.X, e.Y) - new PointD(boxOnDown.x, boxOnDown.y); + + // if (isOverThresholdSlider) + // { + // cursorType = MouseCursor::DraggingHandCursor; + // } +} + + +void WaveformAxes::mouseUp(const MouseEvent& event) +{ + if (bDragging) + { + bDragging = false; + // send a message to processor to update its internal structure? + Electrode* e = processor->getActiveElectrode(); + e->spikeSort->updateBoxUnits(units); + } + // if (isOverThresholdSlider) + // { + // cursorType = MouseCursor::DraggingHandCursor; + // } +} + +void WaveformAxes::mouseDrag(const MouseEvent& event) +{ + bDragging = true; + + if (isOverUnit > 0) + { + // dragging a box + // convert position to metric coordinates. + float h = getHeight(); + float w = getWidth(); + float microsec_span = 40.0/30000.0 * 1e6; + float microvolt_span = range/2; + float x = event.x/w * microsec_span ; + + float y; + if (signalFlipped) + y=(h/2- (h-event.y))/(h/2)*microvolt_span; + else + y=(h/2- event.y)/(h/2)*microvolt_span; + + // update units position.... + + for (int k=0; k<units.size(); k++) + { + if (units[k].getUnitID() == isOverUnit) + { + float oldx = units[k].lstBoxes[isOverBox].x; + float oldy = units[k].lstBoxes[isOverBox].y; + + float dx = x - oldx; + float dy = y - oldy; + + if (strOverWhere == "right") + { + units[k].lstBoxes[isOverBox].w = x - oldx; + } + else if (strOverWhere == "left") + { + units[k].lstBoxes[isOverBox].w += -dx; + units[k].lstBoxes[isOverBox].x = x; + } + else if ((!signalFlipped && strOverWhere == "top") || (signalFlipped && strOverWhere == "bottom")) + { + units[k].lstBoxes[isOverBox].y += dy; + units[k].lstBoxes[isOverBox].h += dy; + } + else if ((!signalFlipped && strOverWhere == "bottom") || (signalFlipped && strOverWhere == "top")) + { + units[k].lstBoxes[isOverBox].h = -dy; + } + else if ((!signalFlipped && strOverWhere == "bottomright") || (signalFlipped && strOverWhere == "topright")) + { + units[k].lstBoxes[isOverBox].w = x - oldx; + units[k].lstBoxes[isOverBox].h = -dy; + + } + else if ((!signalFlipped && strOverWhere == "bottomleft") || (signalFlipped && strOverWhere == "topleft")) + { + units[k].lstBoxes[isOverBox].w += -dx; + units[k].lstBoxes[isOverBox].x = x; + units[k].lstBoxes[isOverBox].h = -dy; + } + else if ((!signalFlipped && strOverWhere == "topright") || (signalFlipped && strOverWhere == "bottomright")) + { + units[k].lstBoxes[isOverBox].y += dy; + units[k].lstBoxes[isOverBox].h += dy; + units[k].lstBoxes[isOverBox].w = x - oldx; + + } + else if ((!signalFlipped && strOverWhere == "topleft") || (signalFlipped && strOverWhere == "bottomleft")) + { + units[k].lstBoxes[isOverBox].w += -dx; + units[k].lstBoxes[isOverBox].x = x; + units[k].lstBoxes[isOverBox].y += dy; + units[k].lstBoxes[isOverBox].h += dy; + + } + else if (strOverWhere == "inside") + { + units[k].lstBoxes[isOverBox].x = x-mouseOffsetX; + units[k].lstBoxes[isOverBox].y = y-mouseOffsetY; + } + + if (units[k].lstBoxes[isOverBox].h < 0) + { + units[k].lstBoxes[isOverBox].y -= units[k].lstBoxes[isOverBox].h; + units[k].lstBoxes[isOverBox].h *= -1; + if (strOverWhere == "top") + strOverWhere = "bottom"; + else if (strOverWhere == "bottom") + strOverWhere = "top"; + else if (strOverWhere == "topleft") + strOverWhere = "bottomleft"; + else if (strOverWhere == "topright") + strOverWhere = "bottomright"; + else if (strOverWhere == "bottomleft") + strOverWhere = "topleft"; + else if (strOverWhere == "bottomright") + strOverWhere = "topright"; + } + if (units[k].lstBoxes[isOverBox].w < 0) + { + units[k].lstBoxes[isOverBox].x += units[k].lstBoxes[isOverBox].w; + units[k].lstBoxes[isOverBox].w *= -1; + if (strOverWhere == "left") + strOverWhere = "right"; + else if (strOverWhere == "right") + strOverWhere = "left"; + else if (strOverWhere == "topleft") + strOverWhere = "topright"; + else if (strOverWhere == "topright") + strOverWhere = "topleft"; + else if (strOverWhere == "bottomleft") + strOverWhere = "bottomright"; + else if (strOverWhere == "bottomright") + strOverWhere = "bottomleft"; + } + + } + + } + + //void WaveformAxes::isOverUnitBox(float x, float y, int &UnitID, int &BoxID, String &where) + } + else if (isOverThresholdSlider) + { + + float thresholdSliderPosition ; + if (signalFlipped) + thresholdSliderPosition = (getHeight()-float(event.y)) / float(getHeight()); + else + thresholdSliderPosition = float(event.y) / float(getHeight()); + + if (thresholdSliderPosition > 1) + thresholdSliderPosition = 1; + else if (thresholdSliderPosition < -1) // Modified to allow negative thresholds. + thresholdSliderPosition =-1; + + + displayThresholdLevel = (0.5f - thresholdSliderPosition) * range; + // update processor + processor->getActiveElectrode()->thresholds[channel] = displayThresholdLevel; + SpikeSorterEditor* edt = (SpikeSorterEditor*) processor->getEditor(); + for (int k=0; k<processor->getActiveElectrode()->numChannels; k++) + edt->electrodeButtons[k]->setToggleState(false, dontSendNotification); + + edt->electrodeButtons[channel]->setToggleState(true, dontSendNotification); + + edt->setThresholdValue(channel,displayThresholdLevel); + } + repaint(); +} + +// MouseCursor WaveAxes::getMouseCursor() +// { +// MouseCursor c = MouseCursor(cursorType); + +// return c; +// } + +void WaveformAxes::mouseExit(const MouseEvent& event) +{ + if (isOverThresholdSlider) + { + isOverThresholdSlider = false; + thresholdColour = Colours::red; + repaint(); + } +} + +float WaveformAxes::getDisplayThreshold() +{ + return displayThresholdLevel; +} + +void WaveformAxes::setDetectorThreshold(float t) +{ + displayThresholdLevel = t; +} + + + +void WaveformAxes::isOverUnitBox(float x, float y, int& UnitID, int& BoxID, String& where) +{ + + float h = getHeight(); + float w = getWidth(); + // Map box coordinates to screen coordinates. + // Assume time span is 40 samples at 30 Khz? + float microsec_span = 40.0/30000.0 * 1e6; + float microvolt_span = range/2; + + // Typical spike is 40 samples, at 30kHz ~ 1.3 ms or 1300 usecs. + for (int k = 0; k < units.size(); k++) + { + for (int boxiter = 0; boxiter< units[k].lstBoxes.size(); boxiter++) + { + Box B = units[k].lstBoxes[boxiter]; + float rectx1 = B.x / microsec_span * w; + float recty1 = h/2 - (B.y / microvolt_span * h/2); + float rectx2 = (B.x+B.w) / microsec_span * w; + float recty2 = h/2 - ((B.y-B.h) / microvolt_span * h/2); + + if (signalFlipped) + { + recty1 = h-recty1; + recty2 = h-recty2; + } + + if (rectx1 > rectx2) + swapVariables(rectx1,rectx2); + if (recty1 > recty2) + swapVariables(recty1,recty2); + + if (x >= rectx1 - 10 & y >= recty1 -10 & x <= rectx2 + 10 & y <= recty2+10) + { + //setMouseCursor(MouseCursor::DraggingHandCursor); + UnitID = units[k].UnitID; + BoxID = boxiter; + if (x >= rectx1 - 10 & x <= rectx1 + 10 && y >= recty1-10 & y <= recty1+10) + { + where = "topleft"; + setMouseCursor(MouseCursor::TopLeftCornerResizeCursor); + } + else if (x >= rectx2 - 10 & x <= rectx2 + 10 && y >= recty1-10 & y <= recty1+10) + { + where = "topright"; + setMouseCursor(MouseCursor::TopRightCornerResizeCursor); + } + else if (x >= rectx1 - 10 & x <= rectx1 + 10 && y >= recty2-10 & y <= recty2+10) + { + where = "bottomleft"; + setMouseCursor(MouseCursor::BottomLeftCornerResizeCursor); + } + else if (x >= rectx2 - 10 & x <= rectx2 + 10 && y >= recty2-10 & y <= recty2+10) + { + where = "bottomright"; + setMouseCursor(MouseCursor::BottomRightCornerResizeCursor); + } + else if (x >= rectx1 - 10 & x <= rectx1 + 10) + { + where = "left"; + setMouseCursor(MouseCursor::LeftEdgeResizeCursor); + } + else if (x >= rectx2 - 10 & x <= rectx2 + 10) + { + where = "right"; + setMouseCursor(MouseCursor::RightEdgeResizeCursor); + } + else if (y >= recty1 - 10 & y <= recty1 + 10) + { + setMouseCursor(MouseCursor::TopEdgeResizeCursor); + where = "top"; + } + else if (y >= recty2 - 10 & y <= recty2 + 10) + { + where = "bottom"; + setMouseCursor(MouseCursor::BottomEdgeResizeCursor); + } + else + { + setMouseCursor(MouseCursor::DraggingHandCursor); + where = "inside"; + } + return; + } + } + } + + setMouseCursor(MouseCursor::NormalCursor); // not inside any boxes +} + +void WaveformAxes::drawBoxes(Graphics& g) +{ + // y and h are given in micro volts. + // x and w and given in micro seconds. + + float h = getHeight(); + float w = getWidth(); + // Map box coordinates to screen coordinates. + // Assume time span is 40 samples at 30 Khz? + float microsec_span = 40.0/30000.0 * 1e6; + float microvolt_span = range/2; + + int selectedUnitID, selectedBoxID; + processor->getActiveElectrode()->spikeSort->getSelectedUnitAndBox(selectedUnitID, selectedBoxID); + + // Typical spike is 40 samples, at 30kHz ~ 1.3 ms or 1300 usecs. + for (int k = 0; k < units.size(); k++) + { + g.setColour(Colour(units[k].ColorRGB[0],units[k].ColorRGB[1],units[k].ColorRGB[2])); + + for (int boxiter = 0; boxiter < units[k].lstBoxes.size(); boxiter++) + { + Box B = units[k].lstBoxes[boxiter]; + + float thickness = 2; + if (units[k].getUnitID() == selectedUnitID && boxiter == selectedBoxID) + thickness = 3; + else if (units[k].getUnitID() == isOverUnit && boxiter == isOverBox) + thickness = 2; + else + thickness = 1; + + + float rectx1 = B.x / microsec_span * w; + float recty1 = (h/2 - (B.y / microvolt_span * h/2)); + + float rectx2 = (B.x+B.w) / microsec_span * w; + float recty2 = (h/2 - ((B.y-B.h) / microvolt_span * h/2)); + + //std::cout << rectx1 << " " << rectx2 << " " << recty1 << " " << recty2 << std::endl; + + float drawRecty1, drawRecty2; + if (signalFlipped) + { + drawRecty2 = h-recty1; + drawRecty1 = h-recty2; + } + else + { + drawRecty1 = recty1; + drawRecty2 = recty2; + } + g.drawRect(rectx1,drawRecty1,rectx2-rectx1, drawRecty2-drawRecty1,thickness); + g.drawText(String(units[k].UnitID), rectx1,drawRecty1-15,rectx2-rectx1,15,juce::Justification::centred,false); + + } + } +} + + + +void WaveformAxes::updateUnits(std::vector<BoxUnit> _units) +{ + units = _units; +} + +void WaveformAxes::paint(Graphics& g) +{ + g.setColour(Colours::black); + g.fillRect(0,0,getWidth(), getHeight()); + + // int chan = 0; + + if (drawGrid) + drawWaveformGrid(g); + + if (channel == 0) + { + //double depth = processor->getSelectedElectrodeDepth(); + //String d = "Depth: "+String(depth,4) +" mm"; + //g.setFont(Font("Small Text", 13, Font::plain)); + // g.setColour(Colours::white); + + //g.drawText(d,10,10,150,20,Justification::left,false); + } + // draw the grid lines for the waveforms + + // draw the threshold line and labels + drawThresholdSlider(g); + drawBoxes(g); + // if no spikes have been received then don't plot anything + if (!gotFirstSpike) + { + return; + } + + + for (int spikeNum = 0; spikeNum < bufferSize; spikeNum++) + { + + if (spikeNum != spikeIndex) + { + g.setColour(Colours::grey); + plotSpike(spikeBuffer[spikeNum], g); + } + + } + + g.setColour(Colours::white); + plotSpike(spikeBuffer[spikeIndex], g); + + bool isRecorded = processor->isSelectedElectrodeRecorded(channel); + + if (!isRecorded) + { + String d = "NOT RECORDED"; + g.setFont(Font("Small Text", 15, Font::plain)); + g.setColour(Colours::red); + g.drawText(d,getWidth()-140,10,120,25,Justification::right,false); + + } + + spikesReceivedSinceLastRedraw = 0; + +} + +// -------------------------------------------------- + + +PCAProjectionAxes::PCAProjectionAxes(SpikeSorter* p) : GenericDrawAxes(0), processor(p), imageDim(500), + rangeX(250), rangeY(250), spikesReceivedSinceLastRedraw(0) +{ + projectionImage = Image(Image::RGB, imageDim, imageDim, true); + bufferSize = 600; + pcaMin[0] = pcaMin[1] = 0; + pcaMax[0] = pcaMax[1] = 0; + + rangeSet = false; + inPolygonDrawingMode = false; + clear(); + updateProcessor = false; + isOverUnit = -1; + + rangeUpButton = new UtilityButton("+", Font("Small Text", 10, Font::plain)); + rangeUpButton->setRadius(3.0f); + rangeUpButton->addListener(this); + addAndMakeVisible(rangeUpButton); + + rangeDownButton = new UtilityButton("-", Font("Small Text", 10, Font::plain)); + rangeDownButton->setRadius(3.0f); + rangeDownButton->addListener(this); + addAndMakeVisible(rangeDownButton); + + redrawSpikes = true; + +} + +void PCAProjectionAxes::resized() +{ + + rangeDownButton->setBounds(10,10, 20, 15); + rangeUpButton->setBounds(35,10, 20, 15); +} + +void PCAProjectionAxes::setPolygonDrawingMode(bool on) +{ + if (on) + { + inPolygonDrawingMode = true; + setMouseCursor(MouseCursor::CrosshairCursor); + + } + else + { + inPolygonDrawingMode = false; + setMouseCursor(MouseCursor::NormalCursor); + } +} + +void PCAProjectionAxes::updateUnits(std::vector<PCAUnit> _units) +{ + units = _units; +} + +void PCAProjectionAxes::drawUnit(Graphics& g, PCAUnit unit) +{ + float w = getWidth(); + float h = getHeight(); + + int selectedUnitID, selectedBoxID; + processor->getActiveElectrode()->spikeSort->getSelectedUnitAndBox(selectedUnitID, selectedBoxID); + g.setColour(Colour(unit.ColorRGB[0],unit.ColorRGB[1],unit.ColorRGB[2])); + if (unit.poly.pts.size() > 2) + { + float thickness; + if (unit.getUnitID() == selectedUnitID) + thickness = 3; + else if (unit.getUnitID() == isOverUnit) + thickness = 2; + else + thickness = 1; + + double cx=0,cy=0; + for (int k=0; k<unit.poly.pts.size()-1; k++) + { + // convert projection coordinates to screen coordinates. + float x1 = (unit.poly.offset.X + unit.poly.pts[k].X - pcaMin[0]) / (pcaMax[0]-pcaMin[0]) * w; + float y1 = (unit.poly.offset.Y + unit.poly.pts[k].Y - pcaMin[1]) / (pcaMax[1]-pcaMin[1]) * h; + float x2 = (unit.poly.offset.X + unit.poly.pts[k+1].X - pcaMin[0]) / (pcaMax[0]-pcaMin[0]) * w; + float y2 = (unit.poly.offset.Y + unit.poly.pts[k+1].Y - pcaMin[1]) / (pcaMax[1]-pcaMin[1]) * h; + cx+=x1; + cy+=y1; + g.drawLine(x1,y1,x2,y2,thickness); + } + float x1 = (unit.poly.offset.X + unit.poly.pts[0].X - pcaMin[0]) / (pcaMax[0]-pcaMin[0]) * w; + float y1 = (unit.poly.offset.Y + unit.poly.pts[0].Y - pcaMin[1]) / (pcaMax[1]-pcaMin[1]) * h; + float x2 = (unit.poly.offset.X + unit.poly.pts[unit.poly.pts.size()-1].X - pcaMin[0]) / (pcaMax[0]-pcaMin[0]) * w; + float y2 = (unit.poly.offset.Y + unit.poly.pts[unit.poly.pts.size()-1].Y - pcaMin[1]) / (pcaMax[1]-pcaMin[1]) * h; + g.drawLine(x1,y1,x2,y2,thickness); + + cx+=x2; + cy+=y2; + + g.drawText(String(unit.UnitID), (cx/unit.poly.pts.size())-10,(cy/unit.poly.pts.size())-10,20,15,juce::Justification::centred,false); + } +} + +void PCAProjectionAxes::paint(Graphics& g) +{ + + spikesReceivedSinceLastRedraw = 0; + + g.drawImage(projectionImage, + 0, 0, getWidth(), getHeight(), + 0, 0, rangeX, rangeY); + + + // draw pca units polygons + for (int k=0; k<units.size(); k++) + { + drawUnit(g, units[k]); + } + + + if (inPolygonDrawingMode) + { + setMouseCursor(MouseCursor::CrosshairCursor); + // draw polygon + bool first = true; + PointD prev; + + if (drawnPolygon.size() > 0) + { + g.setColour(Colour(drawnUnit.ColorRGB[0],drawnUnit.ColorRGB[1],drawnUnit.ColorRGB[2])); + + for (std::list<PointD>::iterator it = drawnPolygon.begin(); it != drawnPolygon.end(); it++) + { + if (first) + { + first = false; + } + else + { + g.drawLine((*it).X, (*it).Y, prev.X,prev.Y); + } + prev = *it; + } + + g.drawLine(drawnPolygon.front().X,drawnPolygon.front().Y,drawnPolygon.back().X,drawnPolygon.back().Y); + } + } + + //Graphics im(projectionImage); + + if (redrawSpikes) + { + // recompute image + int w = getWidth(); + int h = getHeight(); + projectionImage.clear(juce::Rectangle<int>(0, 0, projectionImage.getWidth(), projectionImage.getHeight()), + Colours::black); + + bool subsample = false; + int dk = (subsample) ? 5 : 1; + + for (int k=0; k<bufferSize; k+=dk) + { + drawProjectedSpike(spikeBuffer[k]); + } + redrawSpikes = false; + } + +} + + +void PCAProjectionAxes::drawProjectedSpike(SpikeObject s) +{ + if (rangeSet) + { + Graphics g(projectionImage); + + g.setColour(Colour(s.color[0],s.color[1],s.color[2])); + + float x = (s.pcProj[0] - pcaMin[0]) / (pcaMax[0]-pcaMin[0]) * rangeX; + float y = (s.pcProj[1] - pcaMin[1]) / (pcaMax[1]-pcaMin[1]) * rangeY; + if (x >= 0 & y >= 0 & x <= rangeX & y <= rangeY) + g.fillEllipse(x,y,2,2); + } +} + +void PCAProjectionAxes::redraw(bool subsample) +{ + Graphics g(projectionImage); + + // recompute image + int w = getWidth(); + int h = getHeight(); + projectionImage.clear(juce::Rectangle<int>(0, 0, projectionImage.getWidth(), projectionImage.getHeight()), + Colours::black); + + int dk = (subsample) ? 5 : 1; + + for (int k=0; k<bufferSize; k+=dk) + { + drawProjectedSpike(spikeBuffer[k]); + } + +} + +void PCAProjectionAxes::setPCARange(float p1min, float p2min, float p1max, float p2max) +{ + + pcaMin[0] = p1min; + pcaMin[1] = p2min; + pcaMax[0] = p1max; + pcaMax[1] = p2max; + rangeSet = true; + redrawSpikes = true; + processor->getActiveElectrode()->spikeSort->setPCArange(p1min,p2min, p1max, p2max); + +} + +bool PCAProjectionAxes::updateSpikeData(const SpikeObject& s) +{ + + if (spikesReceivedSinceLastRedraw < bufferSize) + { + + SpikeObject newSpike = s; + + spikeIndex++; + spikeIndex %= bufferSize; + + spikeBuffer.set(spikeIndex, newSpike); + + spikesReceivedSinceLastRedraw++; + //drawProjectedSpike(newSpike); + redrawSpikes = true; + + } + return true; +} + + +void PCAProjectionAxes::clear() +{ + projectionImage.clear(juce::Rectangle<int>(0, 0, projectionImage.getWidth(), projectionImage.getHeight()), + Colours::black); + + + spikeBuffer.clear(); + spikeIndex = 0; + + redrawSpikes = true; + //repaint(); +} + + +void PCAProjectionAxes::mouseDrag(const juce::MouseEvent& event) +{ + + if (!inPolygonDrawingMode) + { + + setMouseCursor(MouseCursor::DraggingHandCursor); + int selectedUnitID, selectedBoxID; + processor->getActiveElectrode()->spikeSort->getSelectedUnitAndBox(selectedUnitID, selectedBoxID); + + if (isOverUnit > 0 && selectedUnitID == isOverUnit) + { + // pan unit + int unitindex=-1; + + for (int k=0; k<units.size(); k++) + { + if (units[k].getUnitID() == selectedUnitID) + { + unitindex = k; + break; + } + } + jassert(unitindex >= 0); + + int w = getWidth(); + int h = getHeight(); + float range0 = pcaMax[0]-pcaMin[0]; + float range1 = pcaMax[1]-pcaMin[1]; + + float dx = float(event.x-prevx) / w*range0; + float dy = float(event.y-prevy) / h*range1; + + + units[unitindex].poly.offset.X += dx; + units[unitindex].poly.offset.Y += dy; + updateProcessor = true; + // draw polygon + prevx = event.x; + prevy = event.y; + + } + else + { + // Pan PCA space + int w = getWidth(); + int h = getHeight(); + float range0 = pcaMax[0]-pcaMin[0]; + float range1 = pcaMax[1]-pcaMin[1]; + + float dx = -float(event.x-prevx) / w*range0; + float dy = -float(event.y-prevy) / h*range1; + + pcaMin[0]+=dx; + pcaMin[1]+=dy; + pcaMax[0]+=dx; + pcaMax[1]+=dy; + processor->getActiveElectrode()->spikeSort->setPCArange(pcaMin[0],pcaMin[1], pcaMax[0], pcaMax[1]); + + // draw polygon + prevx = event.x; + prevy = event.y; + + redrawSpikes = true; + } + + } + else + { + int pixel_quantizer = 6; + float distance = float(event.x-prevx)*float(event.x-prevx)+ + float(event.y-prevy)*float(event.y-prevy); + if (distance > pixel_quantizer*pixel_quantizer) // add a point every n pixels. + { + drawnPolygon.push_back(PointD(event.x,event.y)); + // draw polygon + prevx = event.x; + prevy = event.y; + + repaint(); + } + } + +} + +void PCAProjectionAxes::mouseUp(const juce::MouseEvent& event) +{ + repaint(); + //redraw(false); + setMouseCursor(MouseCursor::NormalCursor); + if (updateProcessor) + { + processor->getActiveElectrode()->spikeSort->updatePCAUnits(units); + updateProcessor = false; + + } + + if (inPolygonDrawingMode) + { + inPolygonDrawingMode = false; + SpikeSorterEditor* edt = (SpikeSorterEditor*)processor->getEditor(); + edt->spikeSorterCanvas->addPolygonUnitButton->setToggleState(false, dontSendNotification); + + // convert pixel coordinates to pca space coordinates and update unit + cPolygon poly; + poly.pts.resize(drawnPolygon.size()); + int k=0; + + float w = getWidth(); + float h = getHeight(); + float range0 = pcaMax[0]-pcaMin[0]; + float range1 = pcaMax[1]-pcaMin[1]; + + for (std::list<PointD>::iterator it = drawnPolygon.begin(); it != drawnPolygon.end(); it++,k++) + { + poly.pts[k].X = (*it).X / w * range0 + pcaMin[0]; + poly.pts[k].Y = (*it).Y / h * range1 + pcaMin[1]; + } + drawnUnit.poly = poly; + units.push_back(drawnUnit); + // add a new PCA unit + Electrode* e = processor->getActiveElectrode(); + e->spikeSort->addPCAunit(drawnUnit); + + + uint8 r,g,b; + e->spikeSort->getUnitColor(drawnUnit.getUnitID(), r,g,b); + + processor->addNewUnit(e->electrodeID, drawnUnit.getUnitID(),r,g,b); + + drawnPolygon.clear(); + } +} + + +void PCAProjectionAxes::mouseMove(const juce::MouseEvent& event) +{ + isOverUnit = -1; + float w = getWidth(); + float h = getHeight(); + + for (int k=0; k<units.size(); k++) + { + // convert projection coordinates to screen coordinates. + float x1 = ((float)event.x/w) * (pcaMax[0]-pcaMin[0]) + pcaMin[0]; + float y1 = ((float)event.y/h) * (pcaMax[1]-pcaMin[1]) + pcaMin[1]; + if (units[k].isPointInsidePolygon(PointD(x1,y1))) + { + isOverUnit = units[k].getUnitID(); + break; + } + + } + + +} + + +void PCAProjectionAxes::mouseDown(const juce::MouseEvent& event) +{ + prevx = event.x; + prevy = event.y; + if (event.mods.isRightButtonDown()) + { + clear(); + } + if (inPolygonDrawingMode) + { + drawnUnit = PCAUnit(processor->getActiveElectrode()->spikeSort->generateUnitID(),processor->getActiveElectrode()->spikeSort->generateLocalID()); + drawnPolygon.push_back(PointD(event.x,event.y)); + } + else + { + if (isOverUnit > 0) + processor->getActiveElectrode()->spikeSort->setSelectedUnitAndBox(isOverUnit, -1); + else + processor->getActiveElectrode()->spikeSort->setSelectedUnitAndBox(-1, -1); + } +} + + +bool PCAProjectionAxes::keyPressed(const KeyPress& key) +{ + KeyPress e = KeyPress::createFromDescription("escape"); + + if (key.isKeyCode(e.getKeyCode()) && inPolygonDrawingMode) // C + { + inPolygonDrawingMode = false; + setMouseCursor(MouseCursor::NormalCursor); + return true; + } + return false; +} + +void PCAProjectionAxes::rangeDown() +{ + float range0 = pcaMax[0]-pcaMin[0]; + float range1 = pcaMax[1]-pcaMin[1]; + pcaMin[0] = pcaMin[0] - 0.1 * range0; + pcaMax[0] = pcaMax[0] + 0.1 * range0; + pcaMin[1] = pcaMin[1] - 0.1 * range1; + pcaMax[1] = pcaMax[1] + 0.1 * range1; + setPCARange(pcaMin[0], pcaMin[1], pcaMax[0], pcaMax[1]); +} + +void PCAProjectionAxes::rangeUp() +{ + float range0 = pcaMax[0]-pcaMin[0]; + float range1 = pcaMax[1]-pcaMin[1]; + pcaMin[0] = pcaMin[0] + 0.1 * range0; + pcaMax[0] = pcaMax[0] - 0.1 * range0; + pcaMin[1] = pcaMin[1] + 0.1 * range1; + pcaMax[1] = pcaMax[1] - 0.1 * range1; + + setPCARange(pcaMin[0], pcaMin[1], pcaMax[0], pcaMax[1]); + +} + +void PCAProjectionAxes::buttonClicked(Button* button) +{ + if (button == rangeDownButton) + { + rangeDown(); + } + + else if (button == rangeUpButton) + { + rangeUp(); + } + +} + +void PCAProjectionAxes::mouseWheelMove(const MouseEvent& event, const MouseWheelDetails& wheel) +{ + if (wheel.deltaY > 0) + rangeDown(); + else + rangeUp(); +} \ No newline at end of file diff --git a/Source/Processors/SpikeSorter/SpikeSorterCanvas.h b/Source/Processors/SpikeSorter/SpikeSorterCanvas.h new file mode 100644 index 0000000000000000000000000000000000000000..8f5e52fb2d3ffa5c31ad5bd49eea75f028aa2720 --- /dev/null +++ b/Source/Processors/SpikeSorter/SpikeSorterCanvas.h @@ -0,0 +1,436 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2013 Open Ephys + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#ifndef SPIKESORTERCANVAS_H_ +#define SPIKESORTERCANVAS_H_ + +#include "../../../JuceLibraryCode/JuceHeader.h" + +#include "SpikeSorter.h" +#include "../Visualization/SpikeObject.h" + +#include "../Visualization/Visualizer.h" +#include <vector> + +#define WAVE1 0 +#define WAVE2 1 +#define WAVE3 2 +#define WAVE4 3 +#define PROJ1x2 4 +#define PROJ1x3 5 +#define PROJ1x4 6 +#define PROJ2x3 7 +#define PROJ2x4 8 +#define PROJ3x4 9 + +#define TETRODE_PLOT 1004 +#define STEREO_PLOT 1002 +#define SINGLE_PLOT 1001 + +#define MAX_NUMBER_OF_SPIKE_SOURCES 128 +#define MAX_N_CHAN 4 + +class SpikeHistogramPlot; +class SpikeThresholdDisplay; +class SpikeDisplayNode; +class SpikePlot; +class SpikeDisplay; +class GenericAxes; +class ProjectionAxes; +class WaveAxes; +class SpikePlot; +class RecordNode; + +/** + + Displays spike waveforms and projections for Spike Sorter + + @see SpikeDisplayNode, SpikeDisplayEditor, Visualizer + +*/ + +class SpikeSorterCanvas : public Visualizer, public Button::Listener + +{ +public: + SpikeSorterCanvas(SpikeSorter* n); + ~SpikeSorterCanvas(); + + void paint(Graphics& g); + + void refresh(); + + void processSpikeEvents(); + + void beginAnimation(); + void endAnimation(); + + void refreshState(); + + void setParameter(int, float) {} + void setParameter(int, int, int, float) {} + + void update(); + + void resized(); + + bool keyPressed(const KeyPress& key); + + void buttonClicked(Button* button); + + void startRecording() { } // unused + void stopRecording() { } // unused + + SpikeSorter* processor; + + ScopedPointer<UtilityButton> addPolygonUnitButton, + addUnitButton, delUnitButton, addBoxButton, delBoxButton, rePCAButton,nextElectrode,prevElectrode,newIDbuttons,deleteAllUnits; + +private: + void removeUnitOrBox(); + ScopedPointer<SpikeThresholdDisplay> spikeDisplay; + ScopedPointer<Viewport> viewport; + + bool inDrawingPolygonMode; + bool newSpike; + SpikeObject spike; + Electrode *electrode; + int scrollBarThickness; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SpikeSorterCanvas); + +}; + + +class SpikeThresholdDisplay : public Component +{ +public: + SpikeThresholdDisplay(SpikeSorter*, SpikeSorterCanvas*, Viewport*); + + ~SpikeThresholdDisplay(); + + void removePlots(); + void clear(); + SpikeHistogramPlot* addSpikePlot(int numChannels, int electrodeNum, String name); + + void paint(Graphics& g); + + void resized(); + void setPolygonMode(bool on); + void mouseDown(const juce::MouseEvent& event); + + void plotSpike(const SpikeObject& spike, int electrodeNum); + + int getTotalHeight() + { + return totalHeight; + } + +private: + int numColumns; + int totalHeight; + + SpikeSorter* processor; + SpikeSorterCanvas* canvas; + Viewport* viewport; + + OwnedArray<SpikeHistogramPlot> spikePlots; + + +}; + + + +class UnitWaveformAxes : public Component +{ +public: + UnitWaveformAxes(); + +}; + +class GenericDrawAxes : public Component +{ +public: + + GenericDrawAxes(int t); + + virtual ~GenericDrawAxes(); + + virtual bool updateSpikeData(const SpikeObject& s); + + void setXLims(double xmin, double xmax); + void getXLims(double* xmin, double* xmax); + void setYLims(double ymin, double ymax); + void getYLims(double* ymin, double* ymax); + + void setType(int type); + int getType(); + + virtual void paint(Graphics& g) = 0; + + int roundUp(int, int); + void makeLabel(int val, int gain, bool convert, char* s); + +protected: + double xlims[2]; + double ylims[2]; + + SpikeObject s; + + bool gotFirstSpike; + + int type; + + Font font; + + double ad16ToUv(int x, int gain); + +}; + +class WaveformAxes : public GenericDrawAxes +{ +public: + WaveformAxes(SpikeHistogramPlot *plt, SpikeSorter *p, int electrodeID_, int channel); + ~WaveformAxes() {} + + + bool updateSpikeData(const SpikeObject& s); + bool checkThreshold(const SpikeObject& spike); + + void setSignalFlip(bool state); + void paint(Graphics& g); + void isOverUnitBox(float x, float y, int &UnitID, int &BoxID, String &where) ; + + void plotSpike(const SpikeObject& s, Graphics& g); + void drawBoxes(Graphics &g); + + void clear(); + int findUnitIndexByID(int ID); + void mouseMove(const MouseEvent& event); + void mouseExit(const MouseEvent& event); + void mouseDown(const MouseEvent& event); + void mouseDrag(const MouseEvent& event); + void mouseWheelMove(const MouseEvent &event, const MouseWheelDetails &wheel); + void mouseUp(const MouseEvent& event); + + void setRange(float); + float getRange() + { + return range; + } + + float getDisplayThreshold(); + void setDetectorThreshold(float); + + //MouseCursor getMouseCursor(); + void updateUnits(std::vector<BoxUnit> _units); + +// int selectedUnit, selectedBox; + +private: + int electrodeID; + bool signalFlipped; + bool bDragging ; + Colour waveColour; + Colour thresholdColour; + Colour gridColour; + int channel; + bool drawGrid; + + float displayThresholdLevel; + float detectorThresholdLevel; + + void drawWaveformGrid(Graphics& g); + + void drawThresholdSlider(Graphics& g); + + int spikesReceivedSinceLastRedraw; + + Font font; + float mouseDownX, mouseDownY; + float mouseOffsetX,mouseOffsetY; + Array<SpikeObject> spikeBuffer; + + int spikeIndex; + int bufferSize; + + float range; + + bool isOverThresholdSlider; + bool isDraggingThresholdSlider; + int isOverUnit,isOverBox; + String strOverWhere; + + std::vector<BoxUnit> units; + SpikeSorter* processor; + SpikeHistogramPlot* spikeHistogramPlot; + MouseCursor::StandardCursorType cursorType; + +}; + + + +class PCAProjectionAxes : public GenericDrawAxes, Button::Listener +{ +public: + PCAProjectionAxes(SpikeSorter *p); + ~PCAProjectionAxes() {} + + void setPCARange(float p1min, float p2min, float p1max, float p2max); + bool updateSpikeData(const SpikeObject& s); + void resized(); + void paint(Graphics& g); + void setPolygonDrawingMode(bool on); + void clear(); + void mouseDown(const juce::MouseEvent& event); + void mouseUp(const juce::MouseEvent& event); + void mouseMove(const juce::MouseEvent& event); + void mouseDrag(const juce::MouseEvent& event); + bool keyPressed(const KeyPress& key); + void mouseWheelMove(const MouseEvent &event, const MouseWheelDetails &wheel); + void redraw(bool subsample); + + void updateUnits(std::vector<PCAUnit> _units); + + void buttonClicked(Button* button); + + void drawUnit(Graphics &g, PCAUnit unit); + void rangeDown(); + void rangeUp(); + +private: + float prevx,prevy; + bool inPolygonDrawingMode; + void drawProjectedSpike(SpikeObject s); + + bool rangeSet; + SpikeSorter* processor; + void updateProjectionImage(uint16_t, uint16_t, uint16_t, const uint8_t *col); + void updateRange(const SpikeObject& s); + ScopedPointer<UtilityButton> rangeDownButton, rangeUpButton; + + Array<SpikeObject> spikeBuffer; + int bufferSize; + int spikeIndex; + bool updateProcessor; + void calcWaveformPeakIdx(const SpikeObject&, int, int, int*, int*); + + Image projectionImage; + + Colour pointColour; + Colour gridColour; + + int imageDim; + + int rangeX; + int rangeY; + + int spikesReceivedSinceLastRedraw; + + float pcaMin[2],pcaMax[2]; + std::list<PointD> drawnPolygon; + + std::vector<PCAUnit> units; + int isOverUnit; + PCAUnit drawnUnit; + + bool redrawSpikes; +}; + + +class SpikeHistogramPlot : public Component, Button::Listener +{ +public: + SpikeHistogramPlot(SpikeSorter *, SpikeSorterCanvas*, int electrodeID, int plotType, String name_); + virtual ~SpikeHistogramPlot(); + + void paint(Graphics& g); + void resized(); + void setFlipSignal(bool state); + + void select(); + void deselect(); + + void setPolygonDrawingMode(bool on); + void setPCARange(float p1min, float p2min, float p1max, float p2max); + void modifyRange(int index,bool up); + void updateUnitsFromProcessor(); + void processSpikeObject(const SpikeObject& s); + + SpikeSorterCanvas* canvas; + + bool isSelected; + + int electrodeNumber; + + void getSelectedUnitAndBox(int &unitID, int &boxID); + void setSelectedUnitAndBox(int unitID, int boxID); + int nChannels; + + void initAxes(std::vector<float> scales); + void getBestDimensions(int*, int*); + + void clear(); + + float minWidth; + float aspectRatio; + + void buttonClicked(Button* button); + + float getDisplayThresholdForChannel(int); + void setDisplayThresholdForChannel(int channelNum, float thres); + //void setDetectorThresholdForChannel(int, float); + +private: + void modifyRange(std::vector<float> values); + + int plotType; + int nWaveAx; + int nProjAx; + int electrodeID; + bool limitsChanged; + + double limits[MAX_N_CHAN][2]; + + std::vector<BoxUnit> boxUnits; + std::vector<PCAUnit> pcaUnits; + SpikeSorter* processor; + OwnedArray<PCAProjectionAxes> pAxes; + OwnedArray<WaveformAxes> wAxes; + OwnedArray<UtilityButton> rangeButtons; + Array<float> ranges; + + void initLimits(); + void setLimitsOnAxes(); + void updateAxesPositions(); + + + String name; + CriticalSection mut; + Font font; + + + +}; + +#endif // SPIKESORTERCANVAS_H_ diff --git a/Source/Processors/SpikeSorter/SpikeSorterEditor.cpp b/Source/Processors/SpikeSorter/SpikeSorterEditor.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1cae5e6ad91a4a52cb28e050e128b65fcf9b25b6 --- /dev/null +++ b/Source/Processors/SpikeSorter/SpikeSorterEditor.cpp @@ -0,0 +1,859 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2013 Open Ephys + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include "SpikeSorterEditor.h" +#include "../SpikeDisplayNode/SpikeDisplayEditor.h" +#include "SpikeSorterCanvas.h" +#include "SpikeSorter.h" +#include "../Editors/ChannelSelector.h" +#include "../../UI/EditorViewport.h" + +#include <stdio.h> + + + +SpikeSorterEditor::SpikeSorterEditor(GenericProcessor* parentNode, bool useDefaultParameterEditors=true) + : VisualizerEditor(parentNode, 300, useDefaultParameterEditors), spikeSorterCanvas(nullptr), isPlural(true) + +{ + tabText = "Spike Detector"; + + + MemoryInputStream mis(BinaryData::silkscreenserialized, BinaryData::silkscreenserializedSize, false); + Typeface::Ptr typeface = new CustomTypeface(mis); + font = Font(typeface); + + desiredWidth = 300; + + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + + advancerList = new ComboBox("Advancers"); + advancerList->addListener(this); + advancerList->setBounds(10,95,130,20); + addAndMakeVisible(advancerList); + + depthOffsetLabel = new Label("Depth Offset","Depth Offset"); + depthOffsetLabel->setFont(Font("Default", 10, Font::plain)); + depthOffsetLabel->setEditable(false); + depthOffsetLabel->setBounds(125,115,80,20); + depthOffsetLabel->setColour(Label::textColourId, Colours::grey); + addAndMakeVisible(depthOffsetLabel); + + advancerLabel = new Label("Depth Offset","ADVANCER:"); + advancerLabel->setFont(Font("Default", 10, Font::plain)); + advancerLabel->setEditable(false); + advancerLabel->setBounds(10,80,80,20); + advancerLabel->setColour(Label::textColourId, Colours::grey); + addAndMakeVisible(advancerLabel); + + depthOffsetEdit = new Label("Depth Offset","0.0"); + depthOffsetEdit->setFont(Font("Default", 10, Font::plain)); + depthOffsetEdit->setEditable(true); + depthOffsetEdit->setBounds(145,95,40,20); + depthOffsetEdit->addListener(this); + depthOffsetEdit->setColour(Label::textColourId, Colours::white); + depthOffsetEdit->setColour(Label::backgroundColourId, Colours::grey); + + addAndMakeVisible(depthOffsetEdit); + + electrodeList = new ComboBox("Electrode List"); + electrodeList->setEditableText(false); + electrodeList->setJustificationType(Justification::centredLeft); + electrodeList->addListener(this); + electrodeList->setBounds(65,30,130,20); + addAndMakeVisible(electrodeList); + + numElectrodes = new Label("Number of Electrodes","1"); + numElectrodes->setEditable(true); + numElectrodes->addListener(this); + numElectrodes->setBounds(30,30,25,20); + addAndMakeVisible(numElectrodes); + + upButton = new TriangleButton(1); + upButton->addListener(this); + upButton->setBounds(50,30,10,8); + addAndMakeVisible(upButton); + + downButton = new TriangleButton(2); + downButton->addListener(this); + downButton->setBounds(50,40,10,8); + addAndMakeVisible(downButton); + + plusButton = new UtilityButton("+", titleFont); + plusButton->addListener(this); + plusButton->setRadius(3.0f); + plusButton->setBounds(15,27,14,14); + addAndMakeVisible(plusButton); + + audioMonitorButton = new UtilityButton("MONITOR", Font("Default", 12, Font::plain)); + audioMonitorButton->addListener(this); + audioMonitorButton->setRadius(3.0f); + audioMonitorButton->setBounds(80,65,65,15); + audioMonitorButton->setClickingTogglesState(true); + addAndMakeVisible(audioMonitorButton); + + removeElectrodeButton = new UtilityButton("-",font); + removeElectrodeButton->addListener(this); + removeElectrodeButton->setBounds(15,45,14,14); + addAndMakeVisible(removeElectrodeButton); + + + configButton = new UtilityButton("CONFIG",Font("Default", 12, Font::plain)); + configButton->addListener(this); + configButton->setBounds(10,65,60,15); + addAndMakeVisible(configButton); + + thresholdSlider = new ThresholdSlider(font); + thresholdSlider->setBounds(210,25,65,65); + addAndMakeVisible(thresholdSlider); + thresholdSlider->addListener(this); + thresholdSlider->setActive(false); + Array<double> v; + thresholdSlider->setValues(v); + + thresholdLabel = new Label("Name","Threshold"); + font.setHeight(10); + thresholdLabel->setFont(font); + thresholdLabel->setBounds(208, 85, 95, 15); + thresholdLabel->setColour(Label::textColourId, Colours::grey); + addAndMakeVisible(thresholdLabel); + + // create a custom channel selector + deleteAndZero(channelSelector); + + channelSelector = new ChannelSelector(true, font); + addChildComponent(channelSelector); + channelSelector->setVisible(false); + + channelSelector->activateButtons(); + channelSelector->setRadioStatus(true); + channelSelector->paramButtonsToggledByDefault(false); + // updateAdvancerList(); + + dacAssignmentLabel= new Label("DAC output","DAC output"); + dacAssignmentLabel->setFont(Font("Default", 10, Font::plain)); + dacAssignmentLabel->setEditable(false); + dacAssignmentLabel->setBounds(210,115,80,20); + dacAssignmentLabel->setColour(Label::textColourId, Colours::grey); + addAndMakeVisible(dacAssignmentLabel); + + dacCombo = new ComboBox("DAC Assignment"); + dacCombo->addListener(this); + dacCombo->setBounds(205,100,70,18); + dacCombo->addItem("-",1); + for (int k=0; k<8; k++) + { + dacCombo->addItem("DAC"+String(k+1),k+2); + } + dacCombo->setSelectedId(1); + addAndMakeVisible(dacCombo); + +} + +Visualizer* SpikeSorterEditor::createNewCanvas() +{ + + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + spikeSorterCanvas = new SpikeSorterCanvas(processor); + //ActionListener* listener = (ActionListener*) SpikeSorterCanvas; + //getUIComponent()->registerAnimatedComponent(listener); + return spikeSorterCanvas; +} + + +SpikeSorterEditor::~SpikeSorterEditor() +{ + + for (int i = 0; i < electrodeButtons.size(); i++) + { + removeChildComponent(electrodeButtons[i]); + } + +} + +void SpikeSorterEditor::sliderEvent(Slider* slider) +{ + int electrodeNum = -1; + + for (int i = 0; i < electrodeButtons.size(); i++) + { + if (electrodeButtons[i]->getToggleState()) + { + electrodeNum = i; + break; + } + } + + if (electrodeNum > -1) + { + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + processor->setChannelThreshold(electrodeList->getSelectedItemIndex(), + electrodeNum, + slider->getValue()); + + + + //Array<int> dacChannels = processor->getDACassignments; + int dacChannel = dacCombo->getSelectedId()-2; + if (dacChannel >= 0) + { + // update dac threshold. + processor->updateDACthreshold(dacChannel, slider->getValue()); + } + + } + repaint(); + if (canvas!= nullptr) + canvas->repaint(); + +} + + +void SpikeSorterEditor::buttonEvent(Button* button) +{ + VisualizerEditor::buttonEvent(button); + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + + if (electrodeButtons.contains((ElectrodeButton*) button)) + { + + { + for (int k=0; k<electrodeButtons.size(); k++) + { + if (electrodeButtons[k] != button) + electrodeButtons[k]->setToggleState(false,dontSendNotification); + } + if (electrodeButtons.size() == 1) + electrodeButtons[0]->setToggleState(true,dontSendNotification); + + ElectrodeButton* eb = (ElectrodeButton*) button; + int channelNum = eb->getChannelNum()-1; + + std::cout << "Channel number: " << channelNum << std::endl; + Array<int> a; + a.add(channelNum); + channelSelector->setActiveChannels(a); + + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + + thresholdSlider->setActive(true); + thresholdSlider->setValue(processor->getChannelThreshold(electrodeList->getSelectedItemIndex(), + electrodeButtons.indexOf((ElectrodeButton*) button))); + + + if (processor->getAutoDacAssignmentStatus()) + { + processor->assignDACtoChannel(0, channelNum); + processor->assignDACtoChannel(1, channelNum); + } + Array<int> dacAssignmentToChannels = processor->getDACassignments(); + // search for channel[0]. If found, set the combo box accordingly... + dacCombo->setSelectedId(1, sendNotification); + for (int i=0; i<dacAssignmentToChannels.size(); i++) + { + if (dacAssignmentToChannels[i] == channelNum) + { + dacCombo->setSelectedId(i+2, sendNotification); + break; + } + } + + } + } + + + int num = numElectrodes->getText().getIntValue(); + + if (button == upButton) + { + numElectrodes->setText(String(++num), sendNotification); + + return; + + } + else if (button == downButton) + { + + if (num > 1) + numElectrodes->setText(String(--num), sendNotification); + + return; + + } + else if (button == configButton) + { + PopupMenu configMenu; + PopupMenu waveSizeMenu; + PopupMenu waveSizePreMenu; + PopupMenu waveSizePostMenu; + + waveSizePreMenu.addItem(1,"8",true,processor->getNumPreSamples() == 8); + waveSizePreMenu.addItem(2,"16",true,processor->getNumPreSamples() == 16); + waveSizePostMenu.addItem(3,"32",true,processor->getNumPostSamples() == 32); + waveSizePostMenu.addItem(4,"64",true,processor->getNumPostSamples() == 64); + + waveSizeMenu.addSubMenu("Pre samples",waveSizePreMenu); + waveSizeMenu.addSubMenu("Post samples",waveSizePostMenu); + waveSizeMenu.addItem(7,"Flip Signal",true,processor->getFlipSignalState()); + configMenu.addSubMenu("Waveform",waveSizeMenu,true); + configMenu.addItem(5,"Current Channel => Audio",true,processor->getAutoDacAssignmentStatus()); + configMenu.addItem(6,"Threshold => All channels",true,processor->getThresholdSyncStatus()); + + const int result = configMenu.show(); + switch (result) + { + case 1: + processor->setNumPreSamples(8); + break; + case 2: + processor->setNumPreSamples(16); + break; + case 3: + processor->setNumPostSamples(32); + break; + case 4: + processor->setNumPostSamples(64); + break; + case 5: + processor->seteAutoDacAssignment(!processor->getAutoDacAssignmentStatus()); + refreshElectrodeList(); + break; + case 6: + processor->setThresholdSyncStatus(!processor->getThresholdSyncStatus()); + break; + case 7: + processor->setFlipSignalState(!processor->getFlipSignalState()); + break; + } + + } + else if (button == plusButton) + { + // std::cout << "Plus button pressed!" << std::endl; + if (acquisitionIsActive) + { + sendActionMessage("Stop acquisition before adding electrodes."); + return; + } + + //updateAdvancerList(); + PopupMenu probeMenu; + probeMenu.addItem(1,"Single Electrode"); + probeMenu.addItem(2,"Stereotrode"); + probeMenu.addItem(3,"Tetrode"); + PopupMenu depthprobeMenu; + depthprobeMenu.addItem(4,"8 ch, 125um"); + depthprobeMenu.addItem(5,"16 ch, 125um"); + depthprobeMenu.addItem(6,"24 ch, 125um"); + depthprobeMenu.addItem(7,"32 ch, 50um"); + depthprobeMenu.addItem(8,"32 ch, 25um"); + probeMenu.addSubMenu("Depth probe", depthprobeMenu,true); + + const int result = probeMenu.show(); + int nChansPerElectrode; + int nElectrodes; + double interelectrodeDistance=0; + double firstElectrodeOffset ; + int numProbes = numElectrodes->getText().getIntValue(); + String ProbeType; + + switch (result) + { + case 0: + return; + case 1: + ProbeType = "Single Electrode"; + nChansPerElectrode = 1; + nElectrodes = 1; + firstElectrodeOffset=0; + break; + case 2: + ProbeType = "Stereotrode"; + nChansPerElectrode = 2; + nElectrodes = 1; + firstElectrodeOffset = 0; + break; + case 3: + ProbeType = "Tetrode"; + nChansPerElectrode = 4; + nElectrodes = 1; + firstElectrodeOffset = 0; + break; + case 4: + ProbeType = "Depth Probe"; + nChansPerElectrode = 1; + nElectrodes = 8; + interelectrodeDistance = 0.125; + firstElectrodeOffset= -0.5; + break; + case 5: + ProbeType = "Depth Probe"; + nChansPerElectrode = 1; + nElectrodes = 16; + interelectrodeDistance = 0.125; + firstElectrodeOffset= -0.5; + break; + case 6: + ProbeType = "Depth Probe"; + nChansPerElectrode = 1; + nElectrodes = 24; + interelectrodeDistance = 0.125; + firstElectrodeOffset= -0.5; + break; + case 7: + ProbeType = "Depth Probe"; + nChansPerElectrode = 1; + nElectrodes = 32; + interelectrodeDistance = 0.050; + firstElectrodeOffset= -0.5; + break; + case 8: + ProbeType = "Depth Probe"; + nChansPerElectrode = 1; + nElectrodes = 32; + interelectrodeDistance = 0.025; + firstElectrodeOffset= -0.075; + break; + } + + processor->addProbes(ProbeType,numProbes, nElectrodes,nChansPerElectrode, firstElectrodeOffset,interelectrodeDistance); + refreshElectrodeList(); + + getEditorViewport()->makeEditorVisible(this, true, true); + + return; + + } + else if (button == removeElectrodeButton) // DELETE + { + if (acquisitionIsActive) + { + sendActionMessage("Stop acquisition before deleting electrodes."); + return; + } + removeElectrode(electrodeList->getSelectedItemIndex()); + + //getEditorViewport()->makeEditorVisible(this, true, true); + + return; + } + else if (button == audioMonitorButton) + { + + channelSelector->clearAudio(); + + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + + Array<Electrode*> electrodes = processor->getElectrodes(); + + for (int i = 0; i < electrodes.size(); i++) + { + Electrode* e = electrodes[i]; + e->isMonitored = false; + } + + Electrode* e = processor->getActiveElectrode(); + e->isMonitored = audioMonitorButton->getToggleState(); + + for (int i = 0; i < e->numChannels; i++) + { + int channelNum = e->channels[i]; + channelSelector->setAudioStatus(channelNum, audioMonitorButton->getToggleState()); + + } + + } + + + +} + +void SpikeSorterEditor::setThresholdValue(int channel, double threshold) +{ + thresholdSlider->setActive(true); + thresholdSlider->setValue(threshold); + repaint(); +} + +void SpikeSorterEditor::channelChanged(int chan) +{ + //std::cout << "New channel: " << chan << std::endl; + if (chan <=0) + return; + + for (int i = 0; i < electrodeButtons.size(); i++) + { + if (electrodeButtons[i]->getToggleState()) + { + electrodeButtons[i]->setChannelNum(chan); + electrodeButtons[i]->repaint(); + Array<int> a; + a.add(chan-1); + channelSelector->setActiveChannels(a); + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + processor->setChannel(electrodeList->getSelectedItemIndex(), + i, + chan-1); + + // if DAC is selected, update the mapping. + int dacchannel = dacCombo->getSelectedId()-2; + if (dacchannel >=0) + { + processor->assignDACtoChannel(dacchannel, chan-1); + } + if (processor->getAutoDacAssignmentStatus()) + { + processor->assignDACtoChannel(0,chan-1); + processor->assignDACtoChannel(1,chan-1); + break; + } + + } + } + +} + +int SpikeSorterEditor::getSelectedElectrode() +{ + return electrodeList->getSelectedId(); +} + +void SpikeSorterEditor::setSelectedElectrode(int i) +{ + electrodeList->setSelectedId(i); +} + +void SpikeSorterEditor::refreshElectrodeList(int selected) +{ + electrodeList->clear(); + + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + + StringArray electrodeNames = processor->getElectrodeNames(); + + for (int i = 0; i < electrodeNames.size(); i++) + { + electrodeList->addItem(electrodeNames[i], electrodeList->getNumItems()+1); + } + + if (electrodeList->getNumItems() > 0) + { + if (selected == 0) + selected = electrodeList->getNumItems(); + + electrodeList->setSelectedId(selected); + // electrodeList->setText(electrodeList->getItemText(electrodeList->getNumItems()-1)); + lastId = electrodeList->getNumItems(); + electrodeList->setEditableText(true); + + drawElectrodeButtons(selected-1); + Electrode* e = processor->getElectrode(selected - 1); + + int advancerIndex = 0; + for (int k=0; k<advancerIDs.size(); k++) + { + if (advancerIDs[k] == e->advancerID) + { + advancerIndex = 1+k; + break; + } + } + + advancerList->setSelectedId(advancerIndex); + depthOffsetEdit->setText(String(e->depthOffsetMM,4),dontSendNotification); + + if (processor->getAutoDacAssignmentStatus()) + { + processor->assignDACtoChannel(0, e->channels[0]); + processor->assignDACtoChannel(1, e->channels[0]); + } + Array<int> dacAssignmentToChannels = processor->getDACassignments(); + // search for channel[0]. If found, set the combo box accordingly... + dacCombo->setSelectedId(1, sendNotification); + for (int i=0; i<dacAssignmentToChannels.size(); i++) + { + if (dacAssignmentToChannels[i] == e->channels[0]) + { + dacCombo->setSelectedId(i+2, sendNotification); + processor->updateDACthreshold(i+2, e->thresholds[0]); + break; + } + } + + + + + } + if (spikeSorterCanvas != nullptr) + spikeSorterCanvas->update(); +} + + +void SpikeSorterEditor::removeElectrode(int index) +{ + std::cout << "Deleting electrode number " << index << std::endl; + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + processor->removeElectrode(index); + refreshElectrodeList(); + + int newIndex = jmin(index, electrodeList->getNumItems()-1); + newIndex = jmax(newIndex, 0); + + electrodeList->setSelectedId(newIndex, sendNotification); + electrodeList->setText(electrodeList->getItemText(newIndex)); + + if (electrodeList->getNumItems() == 0) + { + electrodeButtons.clear(); + electrodeList->setEditableText(false); + } +} + +void SpikeSorterEditor::labelTextChanged(Label* label) +{ + if (label == depthOffsetEdit) + { + // update electrode depth offset. + Value v = depthOffsetEdit->getTextValue(); + double offset = v.getValue(); + + int electrodeIndex = electrodeList->getSelectedId()-1; + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + //if (electrodeIndex >= 0) + // processor->setElectrodeAdvancerOffset(electrodeIndex, offset); + + if (spikeSorterCanvas != nullptr) + spikeSorterCanvas->update(); + + } +} + +void SpikeSorterEditor::setElectrodeComboBox(int direction) +{ + int N = electrodeList->getNumItems(); + int C = electrodeList->getSelectedId(); + C+=direction; + if (C <= 0) + C = N; + if (C > N) + C = 1; + electrodeList->setSelectedId(C, dontSendNotification); +} + +void SpikeSorterEditor::comboBoxChanged(ComboBox* comboBox) +{ + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + + if (comboBox == dacCombo) + { + int selection = dacCombo->getSelectedId(); + // modify the dac channel assignment... + if (selection > 1) + { + int selectedSubChannel = -1; + for (int i = 0; i < electrodeButtons.size(); i++) + { + if (electrodeButtons[i]->getToggleState()) + { + selectedSubChannel = i; + break; + } + } + Electrode* e = processor->getActiveElectrode(); + if (e != nullptr) + { + int dacchannel = selection-2; + processor->assignDACtoChannel(dacchannel, e->channels[selectedSubChannel]); + } + } + + } + else if (comboBox == electrodeList) + { + int ID = comboBox->getSelectedId(); + + if (ID == 0) + { + // modify electrode name + processor->setElectrodeName(lastId, comboBox->getText()); + refreshElectrodeList(); + + } + else + { + // switch to a new electrode. + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + lastId = ID; + Electrode* e= processor->setCurrentElectrodeIndex(ID-1); + drawElectrodeButtons(ID-1); + int advancerIndex = 0; + + audioMonitorButton->setToggleState(e->isMonitored, dontSendNotification); + + for (int k=0; k<advancerIDs.size(); k++) + { + if (advancerIDs[k] == e->advancerID) + { + advancerIndex = 1+k; + break; + } + } + advancerList->setSelectedId(advancerIndex, dontSendNotification); + depthOffsetEdit->setText(String(e->depthOffsetMM,4),dontSendNotification); + + if (processor->getAutoDacAssignmentStatus()) + { + processor->assignDACtoChannel(0, e->channels[0]); + processor->assignDACtoChannel(1, e->channels[0]); + } + Array<int> dacAssignmentToChannels = processor->getDACassignments(); + // search for channel[0]. If found, set the combo box accordingly... + dacCombo->setSelectedId(1, sendNotification); + for (int i=0; i<dacAssignmentToChannels.size(); i++) + { + if (dacAssignmentToChannels[i] == e->channels[0]) + { + dacCombo->setSelectedId(i+2, sendNotification); + break; + } + } + + } + + + + } + else if (comboBox == advancerList) + { + // attach advancer to electrode. + // int electrodeIndex = electrodeList->getSelectedId()-1; + // SpikeSorter* processor = (SpikeSorter*) getProcessor(); + // int selectedAdvancer = advancerList->getSelectedId() ; + // if (electrodeIndex >= 0 && selectedAdvancer > 0) + // processor->setElectrodeAdvancer(electrodeIndex,advancerIDs[advancerList->getSelectedId()-1]); + // else + // advancerList->setSelectedId(0,dontSendNotification); + } + +} + +void SpikeSorterEditor::checkSettings() +{ + electrodeList->setSelectedItemIndex(0); +} + +void SpikeSorterEditor::drawElectrodeButtons(int ID) +{ + + SpikeSorter* processor = (SpikeSorter*) getProcessor(); + + electrodeButtons.clear(); + + int width = 20; + int height = 15; + + int numChannels = processor->getNumChannels(ID); + int row = 0; + int column = 0; + + Array<int> activeChannels; + Array<double> thresholds; + + for (int i = 0; i < numChannels; i++) + { + ElectrodeButton* button = new ElectrodeButton(processor->getChannel(ID,i)+1); + electrodeButtons.add(button); + + if (i == 0) + { + activeChannels.add(processor->getChannel(ID,i)); + thresholds.add(processor->getChannelThreshold(ID,i)); + } + + button->setToggleState(i == 0, dontSendNotification); + button->setBounds(155+(column++)*width, 60+row*height, width, 15); + addAndMakeVisible(button); + button->addListener(this); + + if (column % 2 == 0) + { + column = 0; + row++; + } + + } + + channelSelector->setActiveChannels(activeChannels); + + thresholdSlider->setValues(thresholds); + thresholdSlider->setActive(true); + thresholdSlider->setEnabled(true); + thresholdSlider->setValue(processor->getChannelThreshold(ID,0),dontSendNotification); + repaint(); + if (spikeSorterCanvas != nullptr) + spikeSorterCanvas->update(); +} + + +// void SpikeSorterEditor::updateAdvancerList() +// { + +// ProcessorGraph *g = getProcessor()->getProcessorGraph(); +// Array<GenericProcessor*> p = g->getListOfProcessors(); +// for (int k=0;k<p.size();k++) +// { +// if (p[k]->getName() == "Advancers") +// { +// AdvancerNode *node = (AdvancerNode *)p[k]; +// if (node != nullptr) +// { +// advancerNames = node->getAdvancerNames(); +// advancerIDs = node->getAdvancerIDs(); + +// advancerList->clear(dontSendNotification); +// for (int i=0;i<advancerNames.size();i++) +// { +// advancerList->addItem(advancerNames[i],1+i); +// } +// } +// } +// } + + +// int selectedElectrode = electrodeList->getSelectedId(); +// if (selectedElectrode > 0) { +// SpikeSorter* processor = (SpikeSorter*) getProcessor(); +// Electrode *e = processor->getElectrode( selectedElectrode-1); +// int advancerIndex = 0; +// for (int k=0;k<advancerIDs.size();k++) +// { +// if (advancerIDs[k] == e->advancerID) +// { +// advancerIndex = 1+k; +// break; +// } +// } +// advancerList->setSelectedId(advancerIndex); +// } +// repaint(); +// } diff --git a/Source/Processors/SpikeSorter/SpikeSorterEditor.h b/Source/Processors/SpikeSorter/SpikeSorterEditor.h new file mode 100644 index 0000000000000000000000000000000000000000..2e237ef4440e6fa141db6761d0e44bbfb7988814 --- /dev/null +++ b/Source/Processors/SpikeSorter/SpikeSorterEditor.h @@ -0,0 +1,114 @@ +/* + ------------------------------------------------------------------ + + This file is part of the Open Ephys GUI + Copyright (C) 2013 Open Ephys + + ------------------------------------------------------------------ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#ifndef __SPIKESORTEREDITOR_H_F0BD2DD9__ +#define __SPIKESORTEREDITOR_H_F0BD2DD9__ + + +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../Editors/GenericEditor.h" +#include "../../UI/UIComponent.h" +#include "../../UI/DataViewport.h" +#include "../Visualization/DataWindow.h" +#include "../Editors/VisualizerEditor.h" +#include "../Editors/ElectrodeButtons.h" +#include "../SpikeDetector/SpikeDetectorEditor.h" + +class SpikeSorterCanvas; + +/** + + User interface for the SpikeSorter processor. + + Allows the user to add single electrodes, stereotrodes, or tetrodes. + + Parameters of individual channels, such as channel mapping, threshold, + and enabled state, can be edited. + + @see SpikeSorter + +*/ + +class SpikeSorterEditor : public VisualizerEditor, + public Label::Listener, + public ComboBox::Listener + +{ +public: + SpikeSorterEditor(GenericProcessor* parentNode, bool useDefaultParameterEditors); + virtual ~SpikeSorterEditor(); + void buttonEvent(Button* button); + void labelTextChanged(Label* label); + void comboBoxChanged(ComboBox* comboBox); + void sliderEvent(Slider* slider); + + void channelChanged(int chan); + + Visualizer* createNewCanvas(); + void checkSettings(); + void setThresholdValue(int chan, double threshold); + OwnedArray<ElectrodeButton> electrodeButtons; + SpikeSorterCanvas* spikeSorterCanvas; + //void updateAdvancerList(); + void refreshElectrodeList(int selected = 0); + void setSelectedElectrode(int i); + int getSelectedElectrode(); + void setElectrodeComboBox(int direction); + +private: + void drawElectrodeButtons(int); + + + + // ComboBox* electrodeTypes; + ScopedPointer<ComboBox> electrodeList,dacCombo; + ScopedPointer<ComboBox> advancerList; + ScopedPointer<Label> advancerLabel, depthOffsetLabel, depthOffsetEdit; + ScopedPointer<Label> numElectrodes; + ScopedPointer<Label> thresholdLabel,dacAssignmentLabel; + ScopedPointer<TriangleButton> upButton; + ScopedPointer<TriangleButton> downButton; + ScopedPointer<UtilityButton> plusButton; + ScopedPointer<UtilityButton> configButton; + ScopedPointer<UtilityButton> removeElectrodeButton; + ScopedPointer<UtilityButton> audioMonitorButton; + ScopedPointer<ThresholdSlider> thresholdSlider; + + Array<String> advancerNames ; + Array<int> advancerIDs; + void removeElectrode(int index); + void editElectrode(int index, int chan, int newChan); + + int lastId; + bool isPlural; + + Font font; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SpikeSorterEditor); + +}; + + + + +#endif // __SPIKESORTEREDITOR_H_F0BD2DD9__ diff --git a/Source/Processors/Utilities/Splitter.cpp b/Source/Processors/Splitter/Splitter.cpp similarity index 92% rename from Source/Processors/Utilities/Splitter.cpp rename to Source/Processors/Splitter/Splitter.cpp index 94da0a3565f82ff38e092a32e7cf5aea586c788e..cb1fcdabf0cf805a22cff00afcb71682bce8a2c0 100755 --- a/Source/Processors/Utilities/Splitter.cpp +++ b/Source/Processors/Splitter/Splitter.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,7 +22,7 @@ */ #include "Splitter.h" -#include "../Editors/SplitterEditor.h" +#include "SplitterEditor.h" #include "../../UI/EditorViewport.h" diff --git a/Source/Processors/Utilities/Splitter.h b/Source/Processors/Splitter/Splitter.h similarity index 92% rename from Source/Processors/Utilities/Splitter.h rename to Source/Processors/Splitter/Splitter.h index dcb9734e5aa5792f0ff3c2976435d9cd28203e66..12a6f80bbd87a62a9678b8d2f80c97cd9e8e62b2 100755 --- a/Source/Processors/Utilities/Splitter.h +++ b/Source/Processors/Splitter/Splitter.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,7 +25,7 @@ #define __SPLITTER_H_A75239F7__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "../GenericProcessor.h" +#include "../GenericProcessor/GenericProcessor.h" #include <stdio.h> diff --git a/Source/Processors/Editors/SplitterEditor.cpp b/Source/Processors/Splitter/SplitterEditor.cpp similarity index 95% rename from Source/Processors/Editors/SplitterEditor.cpp rename to Source/Processors/Splitter/SplitterEditor.cpp index f2547482e7c1625c7c337728b81e06d112a676a1..3dfc309232b2cde688cc622309b5360d8e544772 100755 --- a/Source/Processors/Editors/SplitterEditor.cpp +++ b/Source/Processors/Splitter/SplitterEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -22,7 +22,7 @@ */ #include "SplitterEditor.h" -#include "../Utilities/Splitter.h" +#include "Splitter.h" #include "../../UI/EditorViewport.h" // PipelineSelectorButton::PipelineSelectorButton() diff --git a/Source/Processors/Editors/SplitterEditor.h b/Source/Processors/Splitter/SplitterEditor.h similarity index 92% rename from Source/Processors/Editors/SplitterEditor.h rename to Source/Processors/Splitter/SplitterEditor.h index dcb8e789d31a5009ac2c7251c34c6c5828b838d9..8e57195c27139b809dbecea9cd861f97549c8eb7 100755 --- a/Source/Processors/Editors/SplitterEditor.h +++ b/Source/Processors/Splitter/SplitterEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,7 +26,7 @@ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" +#include "../Editors/GenericEditor.h" /** diff --git a/Source/Processors/Visualization/DataWindow.cpp b/Source/Processors/Visualization/DataWindow.cpp index e147e090f90198c597df43ab55fb42c701a66c38..62746822919dc2cb4d4895621c1ed21912e3c8f7 100755 --- a/Source/Processors/Visualization/DataWindow.cpp +++ b/Source/Processors/Visualization/DataWindow.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -34,7 +34,6 @@ DataWindow::DataWindow(Button* cButton, String name) centreWithSize(800,500); setUsingNativeTitleBar(true); setResizable(true,false); - //setTitleBarHeight(40); } DataWindow::~DataWindow() diff --git a/Source/Processors/Visualization/DataWindow.h b/Source/Processors/Visualization/DataWindow.h index 7545bbee98ddb8b26a0a736e9cf74dd0a56ea09f..e068e54118f0d38130bd8ec3d7a990bde1e1896b 100755 --- a/Source/Processors/Visualization/DataWindow.h +++ b/Source/Processors/Visualization/DataWindow.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -28,9 +28,9 @@ /** - Allows OpenGL visualizers to be placed in their own window. + Allows visualizers to be placed in their own window. - @see DataViewport, OpenGLCanvas + @see DataViewport */ diff --git a/Source/Processors/Visualization/OpenGLCanvas.cpp b/Source/Processors/Visualization/OpenGLCanvas.cpp deleted file mode 100755 index 7b3b88b3f012fa29a830bd99ba638f03ee66e71a..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/OpenGLCanvas.cpp +++ /dev/null @@ -1,279 +0,0 @@ -/* - ------------------------------------------------------------------ - - This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys - - ------------------------------------------------------------------ - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - -*/ - -#include "OpenGLCanvas.h" -#include <stdio.h> -#include <math.h> - -OpenGLCanvas::OpenGLCanvas() : //OpenGLComponent(OpenGLComponent::OpenGLType::openGLDefault, true), - scrollPix(0), animationIsActive(false), refreshMs(5000), - scrollBarWidth(15), scrollDiff(0), originalScrollPix(0), - scrollTime(0), showScrollTrack(true), PI(3.1415926) -{ - -} - -OpenGLCanvas::~OpenGLCanvas() -{ - -} - -void OpenGLCanvas::startCallbacks() -{ - startTimer(refreshMs); - animationIsActive = true; -} - -void OpenGLCanvas::stopCallbacks() -{ - stopTimer(); - animationIsActive = false; -} - -void OpenGLCanvas::paint(Graphics& g) -{ - - paintCanvas(g); - - drawScrollBars(g); - -} - -void OpenGLCanvas::drawScrollBars(Graphics& g) -{ - - //std::cout << "Drawing scroll bars" << std::endl; - - float scrollBarY = float(getHeight())/float(getTotalHeight()); - float timeSinceScroll = timer.getMillisecondCounter()-scrollTime; - - if (scrollBarY < 1.0f && timeSinceScroll < 1300) - { - float alpha; - - if (timeSinceScroll < 1000) - alpha = 1.0f; - else - alpha = 1.0f*(1-float(timeSinceScroll-1000)/300.0f); - - float Yoffset = float(scrollPix)/float(getTotalHeight()); - - if (showScrollTrack) - drawScrollBar(g, 0.995f, 2.0f, alpha*0.2f); - - scrollBarBottom = scrollBarY + Yoffset - 2.0f; - scrollBarTop = Yoffset + 2.0f; - - drawScrollBar(g, scrollBarBottom, scrollBarTop, alpha*0.5f); - - } - else - { - if (!animationIsActive) - { - stopTimer(); - } - showScrollTrack = false; - } - -} - -void OpenGLCanvas::drawScrollBar(Graphics& g, float y1, float y2, float alpha) -{ - // - // glViewport(0, getFooterHeight(), - // getWidth(), - // getHeight()-getHeaderHeight()-getFooterHeight()); - // - // float x1 = getWidth()-8.0f; - // - // g.setColour(Colours::black.withAlpha(alpha)); - // - // g.fillRect(x1, y1, 1.0f, y2-y1); - -} - -void OpenGLCanvas::showScrollBars() -{ - // scrollTime = timer.getMillisecondCounter(); - // startTimer(refreshMs); -} - - -void OpenGLCanvas::mouseMove(const MouseEvent& e) -{ - // if (getTotalHeight() > getHeight()) { - // - // Point<int> pos = e.getPosition(); - // int xcoord = pos.getX(); - // if (xcoord > getWidth() - scrollBarWidth) - // { - // showScrollTrack = true; showScrollBars(); - // } - // } - // - // mouseMoveInCanvas(e); -} - -void OpenGLCanvas::mouseDown(const MouseEvent& e) -{ - - if (getTotalHeight() > getHeight()) - { - - Point<int> pos = e.getPosition(); - int xcoord = pos.getX(); - - if (xcoord > getWidth()-scrollBarWidth) - { - - int ycoord = pos.getY(); - - float targetPoint = float(ycoord)/float(getHeight()); - - if (targetPoint < scrollBarTop && targetPoint < scrollBarTop) - { - - scrollPix = int(float(ycoord)/float(getHeight())*float(getTotalHeight())); - - } - else if (targetPoint > scrollBarBottom && targetPoint > scrollBarBottom) - { - - scrollPix = int(float(ycoord)/float(getHeight())*float(getTotalHeight())) - - (scrollBarBottom-scrollBarTop)*float(getTotalHeight()); - - } - - showScrollTrack = true; - showScrollBars(); - } - } - - mouseDownInCanvas(e); -} - -void OpenGLCanvas::mouseDrag(const MouseEvent& e) -{ - - if (getTotalHeight() > getHeight()) - { - if (e.getMouseDownX() > getWidth()-scrollBarWidth) - { - - if (float(e.getMouseDownY()/float(getHeight())) > scrollBarTop && - float(e.getMouseDownY()/float(getHeight())) < scrollBarBottom) - { - - if (scrollDiff == 0) - { - originalScrollPix = scrollPix; - scrollDiff = 1; - } - - } - - if (scrollDiff == 1) - { - scrollPix = originalScrollPix + - float(e.getDistanceFromDragStartY())/float(getHeight()) - * float(getTotalHeight()); - - if (scrollPix < 0) - scrollPix = 0; - - if (scrollPix + getHeight() > getTotalHeight()) - scrollPix = getTotalHeight() - getHeight(); - - scrollTime = timer.getMillisecondCounter(); - showScrollTrack = true; - repaint(); - } - } - } - - mouseDragInCanvas(e); -} - -void OpenGLCanvas::mouseUp(const MouseEvent& e) -{ - scrollDiff = 0; - - mouseUpInCanvas(e); -} - -int OpenGLCanvas::mouseWheelMove(const MouseEvent& e, - float wheelIncrementX, float wheelIncrementY) - -{ - if (getTotalHeight() > getHeight()) - { - - if (wheelIncrementY > 0) - { - if (scrollPix + getHeight() < getTotalHeight()) - { - scrollPix += int(100.0f*wheelIncrementY); - if (scrollPix + getHeight() > getTotalHeight()) - scrollPix = getTotalHeight() - getHeight(); - } - } - else if (wheelIncrementY < 0) - { - if (scrollPix > 0) - { - scrollPix += int(100.0f*wheelIncrementY); - if (scrollPix < 0) - scrollPix = 0; - } - } - - repaint(); - - showScrollBars(); - - } - - mouseWheelMoveInCanvas(e, wheelIncrementX, wheelIncrementY); - - return 0; //mouseWheelMove should be void according to juce's documentation. -} - -void OpenGLCanvas::timerCallback() -{ - repaint(); -} - - -void OpenGLCanvas::resized() -{ - - if (scrollPix + getHeight() > getTotalHeight() && getTotalHeight() > getHeight()) - scrollPix = getTotalHeight() - getHeight(); - else - scrollPix = 0; - - showScrollBars(); - - canvasWasResized(); -} diff --git a/Source/Processors/Visualization/OpenGLCanvas.h b/Source/Processors/Visualization/OpenGLCanvas.h deleted file mode 100755 index 56e47ca39f765aec86cbf13cd464b61d44ed8724..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/OpenGLCanvas.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - ------------------------------------------------------------------ - - This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys - - ------------------------------------------------------------------ - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - -*/ - -#ifndef __OPENGLCANVAS_H_98F0C13D__ -#define __OPENGLCANVAS_H_98F0C13D__ - -#include "../../../JuceLibraryCode/JuceHeader.h" - -//#include "../../OpenGL.h" - -/** - - Can be subclassed to create OpenGL visualizers. - - Provides convenient methods for loading fonts, setting up a 2D canvas, - and drawing scroll bars. - -*/ - -class OpenGLCanvas : public Component, Timer - -{ -public: - OpenGLCanvas(); - ~OpenGLCanvas(); - - virtual void refreshState() {}; - - void resized(); - virtual void canvasWasResized() { } - - void mouseDown(const MouseEvent& e); - void mouseDrag(const MouseEvent& e); - void mouseMove(const MouseEvent& e); - void mouseUp(const MouseEvent& e); - int mouseWheelMove(const MouseEvent&, float, float); - - virtual void mouseDownInCanvas(const MouseEvent& e) {} - virtual void mouseDragInCanvas(const MouseEvent& e) {} - virtual void mouseMoveInCanvas(const MouseEvent& e) {} - virtual void mouseUpInCanvas(const MouseEvent& e) {} - virtual void mouseWheelMoveInCanvas(const MouseEvent&, - float, - float) {} - - void startCallbacks(); - void stopCallbacks(); - - int getScrollAmount() - { - return scrollPix; - }; - int getScrollBarWidth() - { - return scrollBarWidth; - } - void drawScrollBars(Graphics& g); - - virtual int getHeaderHeight() - { - return 0; - } - virtual int getFooterHeight() - { - return 0; - } - - void paint(Graphics& g); - - virtual void paintCanvas(Graphics& g) = 0; - -protected: - - virtual int getTotalHeight() - { - return getHeight(); - } - int scrollPix; - void showScrollBars(); - - bool animationIsActive; - - int refreshMs; - -private: - - void drawScrollBar(Graphics& g, float y1, float y2, float alpha); - - int scrollBarWidth, scrollDiff, originalScrollPix; - int scrollTime; - bool showScrollTrack; - - Time timer; - void timerCallback(); - - float scrollBarTop, scrollBarBottom; - - const float PI; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(OpenGLCanvas); - -}; - - -#endif // __OPENGLCANVAS_H_98F0C13D__ diff --git a/Source/Processors/Visualization/SpikeObject.cpp b/Source/Processors/Visualization/SpikeObject.cpp index f63d2d769326c059472cd03e4694f3c966a1288b..702b9cc53a4b1754aa331bfe3420261ed66e93b8 100755 --- a/Source/Processors/Visualization/SpikeObject.cpp +++ b/Source/Processors/Visualization/SpikeObject.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,6 +26,9 @@ #include <stdlib.h> #include "time.h" +#define MIN(a,b)((a)<(b)?(a):(b)) +#define MAX(a,b)((a)<(b)?(b):(a)) + // Simple method for serializing a SpikeObject into a string of bytes int packSpike(const SpikeObject* s, uint8_t* buffer, int bufferSize) { @@ -34,7 +37,7 @@ int packSpike(const SpikeObject* s, uint8_t* buffer, int bufferSize) // a pointer to a uint8_t buffer (which will hold the serialized SpikeObject, // and a integer indicating the bufferSize. - //int reqBytes = 1 + 4 + 2 + 2 + 2 + 2 * s->nChannels * s->nSamples + 2 * s->nChannels * 2; + //int reqBytes = 1 + 4 + 2+2 + 2 + 2 + 2 * s->nChannels * s->nSamples + 2 * s->nChannels * 2; int idx = 0; @@ -43,6 +46,9 @@ int packSpike(const SpikeObject* s, uint8_t* buffer, int bufferSize) memcpy(buffer+idx, &(s->timestamp), 8); idx += 8; + + memcpy(buffer+idx, &(s->timestamp_software), 8); + idx += 8; memcpy(buffer+idx, &(s->source), 2); idx +=2; @@ -53,11 +59,35 @@ int packSpike(const SpikeObject* s, uint8_t* buffer, int bufferSize) memcpy(buffer+idx, &(s->nSamples), 2); idx +=2; + memcpy(buffer+idx, &(s->sortedId), 2); + idx +=2; + + memcpy(buffer+idx, &(s->electrodeID), 2); + idx +=2; + + memcpy(buffer+idx, &(s->channel), 2); + idx +=2; + + memcpy(buffer+idx, &(s->color[0]), 1); + idx +=1; + memcpy(buffer+idx, &(s->color[1]), 1); + idx +=1; + memcpy(buffer+idx, &(s->color[2]), 1); + idx +=1; + + memcpy(buffer+idx, &(s->pcProj[0]), sizeof(float)); + idx +=sizeof(float); + + memcpy(buffer+idx, &(s->pcProj[1]), sizeof(float)); + idx +=sizeof(float); + + memcpy(buffer+idx, &(s->samplingFrequencyHz), 2); + idx +=2; memcpy(buffer+idx, &(s->data), s->nChannels * s->nSamples * 2); idx += s->nChannels * s->nSamples * 2; - memcpy(buffer+idx, &(s->gain), s->nChannels * 2); - idx += s->nChannels * 2; + memcpy(buffer+idx, &(s->gain), s->nChannels * 4); // 4 bytes for a float + idx += s->nChannels * 4; memcpy(buffer+idx, &(s->threshold), s->nChannels * 2); idx += s->nChannels * 2; @@ -79,22 +109,25 @@ int packSpike(const SpikeObject* s, uint8_t* buffer, int bufferSize) bool unpackSpike(SpikeObject* s, const uint8_t* buffer, int bufferSize) { //if (!isBufferValid(buffer, bufferSize)) - // return false; + // return false; int idx = 0; memcpy(&(s->eventType), buffer+idx, 1); idx += 1; - // if (s->eventType != 4) - // { - // std::cout << "received invalid spike -- incorrect event code" << std::endl; - // return false; - // } + // if (s->eventType != 4) + // { + // std::cout << "received invalid spike -- incorrect event code" << std::endl; + // return false; + // } memcpy(&(s->timestamp), buffer+idx, 8); idx += 8; + memcpy(&(s->timestamp_software), buffer+idx, 8); + idx += 8; + memcpy(&(s->source), buffer+idx, 2); idx += 2; @@ -122,11 +155,40 @@ bool unpackSpike(SpikeObject* s, const uint8_t* buffer, int bufferSize) return false; } + + + memcpy(&(s->sortedId), buffer+idx, 2); + idx +=2; + + memcpy(&(s->electrodeID), buffer+idx, 2); + idx +=2; + + memcpy(&(s->channel), buffer+idx, 2); + idx +=2; + + memcpy(&(s->color[0]), buffer+idx, 1); + idx +=1; + memcpy(&(s->color[1]), buffer+idx, 1); + idx +=1; + memcpy(&(s->color[2]), buffer+idx, 1); + idx +=1; + + + + memcpy(&(s->pcProj[0]), buffer+idx, sizeof(float)); + idx +=sizeof(float); + memcpy(&(s->pcProj[1]), buffer+idx, sizeof(float)); + idx +=sizeof(float); + + memcpy(&(s->samplingFrequencyHz), buffer+idx, 2); + idx +=2; + + memcpy(&(s->data), buffer+idx, s->nChannels * s->nSamples * 2); idx += s->nChannels * s->nSamples * 2; - memcpy(&(s->gain), buffer+idx, s->nChannels * 2); - idx += s->nChannels * 2; + memcpy(&(s->gain), buffer+idx, s->nChannels * 4); + idx += s->nChannels * 4; memcpy(&(s->threshold), buffer+idx, s->nChannels *2); idx += s->nChannels * 2; @@ -193,19 +255,19 @@ void generateSimulatedSpike(SpikeObject* s, uint64_t timestamp, int noise) uint16_t trace[][32] = { { - 880, 900, 940, 1040, 1290, 1790, 2475, 2995, 3110, 2890, - 2505, 2090, 1720, 1410, 1155, 945, 775, 635, 520, 420, - 340, 265, 205, 155, 115, 80, 50, 34, 10, 34, 50, 80 + 880, 900, 940, 1040, 1290, 1790, 2475, 2995, 3110, 2890, + 2505, 2090, 1720, 1410, 1155, 945, 775, 635, 520, 420, + 340, 265, 205, 155, 115, 80, 50, 34, 10, 34, 50, 80 }, { - 1040, 1090, 1190, 1350, 1600, 1960, 2380, 2790, 3080, 3140, - 2910, 2430, 1810, 1180, 680, 380, 270, 320, 460, 630, - 770, 870, 940, 970, 990, 1000, 1000, 1000, 1000, 1000, 1000, 1000 + 1040, 1090, 1190, 1350, 1600, 1960, 2380, 2790, 3080, 3140, + 2910, 2430, 1810, 1180, 680, 380, 270, 320, 460, 630, + 770, 870, 940, 970, 990, 1000, 1000, 1000, 1000, 1000, 1000, 1000 }, { - 1000, 1000, 1000, 1000, 1000, 1040, 1140, 1440, 2040, 2240, - 2400, 2340, 2280, 1880, 1640, 920, 520, 300, 140, 040, - 20, 20, 40, 100, 260, 500, 740, 900, 960, 1000, 1000, 1000 + 1000, 1000, 1000, 1000, 1000, 1040, 1140, 1440, 2040, 2240, + 2400, 2340, 2280, 1880, 1640, 920, 520, 300, 140, 040, + 20, 20, 40, 100, 260, 500, 740, 900, 960, 1000, 1000, 1000 } }; @@ -225,6 +287,7 @@ void generateSimulatedSpike(SpikeObject* s, uint64_t timestamp, int noise) s->source = 0; s->nChannels = 4; s->nSamples = 32; + s->electrodeID = 0; int idx=0; int waveType = rand()%2; // Pick one of the three predefined waveshapes to generate @@ -251,21 +314,28 @@ void generateSimulatedSpike(SpikeObject* s, uint64_t timestamp, int noise) } } -void generateEmptySpike(SpikeObject* s, int nChannels) + +void generateEmptySpike(SpikeObject* s, int nChannels, int numSamples) { s->eventType = SPIKE_EVENT_CODE; s->timestamp = 0; s->source = 0; - s->nChannels = 4; - s->nSamples = 32; + s->nChannels = 1; + s->nSamples = numSamples; + s->electrodeID = 0; + s->samplingFrequencyHz = 30000; + s->sortedId = 0; + s->color[0] = s->color[1] = s->color[2] = 128; + s->pcProj[0] = s->pcProj[1] = 0; + int idx = 0; - for (int i=0; i<4; i++) + for (int i=0; i<s->nChannels; i++) { - s->gain[i] = 0; + s->gain[i] = 0.0; s->threshold[i] = 0; - for (int j=0; j<32; j++) + for (int j=0; j<s->nSamples; j++) { s->data[idx] = 0; idx = idx+1; @@ -286,3 +356,47 @@ void printSpike(SpikeObject* s) std::cout<<s->data+i<<" "; std::cout<<std::endl; } + +float spikeDataBinToMicrovolts(SpikeObject *s, int bin, int ch) +{ + jassert(ch >= 0 && ch < s->nChannels); + jassert(bin >= 0 && ch < s->nSamples); + float v= float(s->data[bin+ch*s->nSamples]-32768)/float(s->gain[ch])*1000.0f; + return v; +} + + +float spikeDataIndexToMicrovolts(SpikeObject *s, int index) +{ + int gain_index = index / s->nSamples; + jassert(gain_index >= 0 && gain_index < s->nChannels); + float v= float(s->data[index]-32768)/float(s->gain[gain_index])*1000.0f; + return v; +} + + + +int microVoltsToSpikeDataBin(SpikeObject *s, float uV, int ch) +{ + return uV/1000.0f*float(s->gain[ch])+32768; +} + + + + +float spikeTimeBinToMicrosecond(SpikeObject *s, int bin, int ch) +{ + float spikeTimeSpan = 1.0f/s->samplingFrequencyHz * s->nSamples * 1e6; + return float(bin)/(s->nSamples-1) * spikeTimeSpan; +} + +int microSecondsToSpikeTimeBin(SpikeObject *s, float t, int ch) +{ + // Lets say we have 32 samples per wave form + + // t = 0 corresponds to the left most index. + float spikeTimeSpan = (1.0f/s->samplingFrequencyHz * s->nSamples)*1e6; + return MIN(s->nSamples-1, MAX(0,t/spikeTimeSpan * (s->nSamples-1))); +} + + diff --git a/Source/Processors/Visualization/SpikeObject.h b/Source/Processors/Visualization/SpikeObject.h index 6c99dc0b5e0094d26bdd789aa689d4ee09866bf0..a386ee0ef097f0c557f559a68b3a2eb64dac16a6 100755 --- a/Source/Processors/Visualization/SpikeObject.h +++ b/Source/Processors/Visualization/SpikeObject.h @@ -24,16 +24,18 @@ #ifndef SPIKEOBJECT_H_ #define SPIKEOBJECT_H_ +#include "../../../JuceLibraryCode/JuceHeader.h" #include <iostream> #include <stdint.h> #include <math.h> +#define SPIKE_METADATA_SIZE 42 #define MAX_NUMBER_OF_SPIKE_CHANNELS 4 -#define MAX_NUMBER_OF_SPIKE_CHANNEL_SAMPLES 60 +#define MAX_NUMBER_OF_SPIKE_CHANNEL_SAMPLES 80 #define CHECK_BUFFER_VALIDITY true #define SPIKE_EVENT_CODE 4; #define MAX_SPIKE_BUFFER_LEN 512 // max length of spike buffer in bytes -// the true max calculated from the spike values below is actually 507 + // the true max calculated from the spike values below is actually 507 #define SPIKE_BASE_CODE 100 @@ -60,16 +62,31 @@ struct SpikeObject { uint8_t eventType; - uint64_t timestamp; - uint16_t source; + int64_t timestamp; + int64_t timestamp_software; + uint16_t source; // used internally, the index of the electrode in the electrode array uint16_t nChannels; uint16_t nSamples; - uint16_t data[MAX_NUMBER_OF_SPIKE_CHANNELS* MAX_NUMBER_OF_SPIKE_CHANNEL_SAMPLES]; - uint16_t gain[MAX_NUMBER_OF_SPIKE_CHANNELS]; + uint16_t sortedId; // sorted unit ID (or 0 if unsorted) + uint16_t electrodeID; // unique electrode ID (regardless electrode position in the array) + uint16_t channel; // the channel in which threshold crossing was detected (index in channel array, not absolute channel number). + uint8_t color[3]; + float pcProj[2]; + uint16_t samplingFrequencyHz; + uint16_t data[MAX_NUMBER_OF_SPIKE_CHANNELS * MAX_NUMBER_OF_SPIKE_CHANNEL_SAMPLES]; + float gain[MAX_NUMBER_OF_SPIKE_CHANNELS]; uint16_t threshold[MAX_NUMBER_OF_SPIKE_CHANNELS]; - }; + + +float spikeDataIndexToMicrovolts(SpikeObject *s, int index); + +float spikeDataBinToMicrovolts(SpikeObject *s, int bin, int ch = 0); +int microVoltsToSpikeDataBin(SpikeObject *s, float uV, int ch = 0); +float spikeTimeBinToMicrosecond(SpikeObject *s, int bin, int ch=0); +int microSecondsToSpikeTimeBin(SpikeObject *s, float t, int ch=0); + /** Simple method for serializing a SpikeObject into a string of bytes, returns true is the packaged spike buffer is valid */ int packSpike(const SpikeObject* s, uint8_t* buffer, int bufferLength); @@ -91,7 +108,7 @@ void generateSimulatedSpike(SpikeObject* s, uint64_t timestamp, int noise); // std::ostream& operator<<(std::ostream &strm, const SpikeObject s); /** Helper function for zeroing out a spike object with a specified number of channels */ -void generateEmptySpike(SpikeObject* s, int nChannels); +void generateEmptySpike(SpikeObject* s, int nChannels, int numSamples); void printSpike(SpikeObject* s); diff --git a/Source/Processors/Visualization/SpikePlotting/BaseUIElement.cpp b/Source/Processors/Visualization/SpikePlotting/BaseUIElement.cpp deleted file mode 100755 index 29cd1e79fbb47a42f8bed5a0f3201ea86ffa5214..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/BaseUIElement.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include "BaseUIElement.h" - -BaseUIElement::BaseUIElement(): - xpos(0), ypos(0), yOffset(0), - height(100), width(100), enabled(true), padding(0) -{ -} - -BaseUIElement::BaseUIElement(int x, int y, double w, double h): - yOffset(0), enabled(true), padding(0) -{ - xpos = x+padding; - ypos = y+padding; - width = w-padding*2; - height = h-padding*2; -} -BaseUIElement::BaseUIElement(int x, int y, double w, double h, int p): - enabled(true), padding(p) -{ - xpos = x+padding; - ypos = y+padding; - width = w-padding*2; - height = h-padding*2; -} - -void BaseUIElement::redraw() -{ - // std::cout<<"BaseUIElement::redraw(), Position:"<<xpos<<","<<ypos<<" : "<<width<<","<<height<<std::endl; - setGlViewport(); - - // if (clearNextDraw || !clearNextDraw){ - // clearNextDraw = false; - glColor3f(0.0, 0.0, 0.0); - glRecti(-1,-1,1,1); - - - // } -} -void BaseUIElement::drawElementEdges() -{ - // std::cout<<"BaseUIElement::drawBaseUIElementEdges(), Position:"<<xpos<<","<<ypos<<" : "<<width<<","<<height<<std::endl; - glColor3f(1.0, 1.0, 1.0); - setGlViewport(); - glLineWidth(2); - drawViewportEdge(); -} -void BaseUIElement::setEnabled(bool e) -{ - enabled = e; -} -bool BaseUIElement::getEnabled() -{ - return enabled; -} -void BaseUIElement::setGlViewport() -{ - - glLoadIdentity(); - glViewport(xpos, ypos, width, height); - - // std::cout<<xpos<<"x"<<ypos<<"-"<<width<<"x"<<height<<"\t"<<BaseUIElementName<<std::endl; -} -void BaseUIElement::setPosition(int x, int y, double w, double h) -{ - xpos = x+padding; - ypos = y+padding; - width = w - padding*2; - height = h - padding*2; -} - -void BaseUIElement::getPosition(int* x, int* y, double* w, double* h) -{ - *x = xpos; - *y = ypos; - *w = width; - *h = height; -} -// void BaseUIElement::clearOnNextDraw(bool c){ -// clearNextDraw = c; -// } - -bool BaseUIElement::hitTest(int x, int y) -{ - return (x > xpos && x < xpos+width) && (y > ypos && y < ypos+height); -} - -double BaseUIElement::getHeight() -{ - return height; -} -double BaseUIElement::getWidth() -{ - return width; -} -int BaseUIElement::getX() -{ - return xpos; -} -int BaseUIElement::getY() -{ - return ypos; -} diff --git a/Source/Processors/Visualization/SpikePlotting/BaseUIElement.h b/Source/Processors/Visualization/SpikePlotting/BaseUIElement.h deleted file mode 100755 index 7c5afed103f03b686573aedef307bb4a48db7a06..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/BaseUIElement.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef BASEUIELEMENT_H_ -#define BASEUIELEMENT_H_ - -#include "PlotUtils.h" -#include "../SpikeObject.h" - -class SpikeObject; - -/** - - Base class for drawing spike plots in OpenGL. - - @see SpikeDisplayCanvas - -*/ - -class BaseUIElement -{ - -protected: - int xpos, ypos, yOffset; - double height, width; - bool enabled; - double padding; - - void setGlViewport(); - -public: - BaseUIElement(); - BaseUIElement(int x, int y, double w, double h); - BaseUIElement(int x, int y, double w, double h, int p); - - virtual void redraw(); - void drawElementEdges(); - virtual void setEnabled(bool e); - virtual bool getEnabled(); - virtual void setPosition(int x, int y, double w, double h); - virtual void setPosition(int, int) {} - virtual void getPosition(int*, int*, double*, double*); - double getHeight(); - double getWidth(); - int getX(); - int getY(); - - // needed for spike display object subclasses: - virtual void processSpikeObject(SpikeObject s) {} - virtual void pan(int, bool) {} - virtual void zoom(int, bool) {} - virtual void clear() {} - - // void clearOnNextDraw(bool); - // bool clearNextDraw; - bool hitTest(int x, int y); - -}; - - - -#endif // BaseUIElement_H_ diff --git a/Source/Processors/Visualization/SpikePlotting/GenericAxes.cpp b/Source/Processors/Visualization/SpikePlotting/GenericAxes.cpp deleted file mode 100755 index b87870d5b238007a31babdbac9602dc44a449d37..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/GenericAxes.cpp +++ /dev/null @@ -1,80 +0,0 @@ -#include "GenericAxes.h" - -GenericAxes::GenericAxes() - : BaseUIElement(), gotFirstSpike(false), type(0) -{ - ylims[0] = 0; - ylims[1] = 1; - loadFont(); -} - -GenericAxes::GenericAxes(int x, int y, double w, double h, int t): - BaseUIElement(x,y,w,h), - gotFirstSpike(false) -{ - type = t; - loadFont(); -} -GenericAxes::~GenericAxes() -{ - //delete font; -} -void GenericAxes::updateSpikeData(SpikeObject newSpike) -{ - if (!gotFirstSpike) - { - gotFirstSpike = true; - } - - s = newSpike; -} - -void GenericAxes::loadFont() -{ - const unsigned char* buffer = reinterpret_cast<const unsigned char*>(BinaryData::cpmono_plain_otf); - size_t bufferSize = BinaryData::cpmono_plain_otfSize; - font = new FTPixmapFont(buffer, bufferSize); -} - -void GenericAxes::setYLims(double ymin, double ymax) -{ - - std::cout << "setting y limits to " << ymin << " " << ymax << std::endl; - ylims[0] = ymin; - ylims[1] = ymax; -} -void GenericAxes::getYLims(double* min, double* max) -{ - *min = ylims[0]; - *max = ylims[1]; -} -void GenericAxes::setXLims(double xmin, double xmax) -{ - xlims[0] = xmin; - xlims[1] = xmax; -} -void GenericAxes::getXLims(double* min, double* max) -{ - *min = xlims[0]; - *max = xlims[1]; -} - -void GenericAxes::setType(int t) -{ - if (t < WAVE1 || t > PROJ3x4) - { - std::cout<<"Invalid Axes type specified"; - return; - } - type = t; -} - -int GenericAxes::getType() -{ - return type; -} - -void GenericAxes::setPosition(int x, int y, double w, double h) -{ - BaseUIElement::setPosition(x,y,w,h); -} diff --git a/Source/Processors/Visualization/SpikePlotting/GenericAxes.h b/Source/Processors/Visualization/SpikePlotting/GenericAxes.h deleted file mode 100755 index 43be58dad7a05c26e812ac45c63306e28787c958..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/GenericAxes.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef GENERIC_AXES_H_ -#define GENERIC_AXES_H_ - - -#if defined(__linux__) -#include <GL/glut.h> -#else -#include <GLUT/glut.h> -#endif -#include <stdlib.h> -#include <FTGL/ftgl.h> -#include "../../../../JuceLibraryCode/JuceHeader.h" - -#include "../SpikeObject.h" - -#include "BaseUIElement.h" -#include "PlotUtils.h" - -/** - - Base class for drawing axes with OpenGL. - - @see BaseUIElement, ProjectionAxes, WaveAxes - -*/ - -class GenericAxes: public BaseUIElement -{ - -protected: - double xlims[2]; - double ylims[2]; - SpikeObject s; - - bool gotFirstSpike; - - int type; - virtual void plot() {} - - FTPixmapFont* font; - void loadFont(); - - -public: - GenericAxes(); - GenericAxes(int x, int y, double w, double h, int t); - virtual ~GenericAxes(); - - void updateSpikeData(SpikeObject s); - - virtual void redraw() {} - - void setXLims(double xmin, double xmax); - void getXLims(double* xmin, double* xmax); - void setYLims(double ymin, double ymax); - void getYLims(double* ymin, double* ymax); - - void setType(int type); - int getType(); - - - void setPosition(int,int,double,double); - -}; - - - -#endif diff --git a/Source/Processors/Visualization/SpikePlotting/PlotUtils.cpp b/Source/Processors/Visualization/SpikePlotting/PlotUtils.cpp deleted file mode 100755 index 3f2e25d2f843b53f542e094313fc5d6e18845ed2..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/PlotUtils.cpp +++ /dev/null @@ -1,251 +0,0 @@ -#include "PlotUtils.h" - -void checkGlError() -{ - GLenum errCode; - const GLubyte* errString; - if ((errCode = glGetError()) != GL_NO_ERROR) - { - errString = gluErrorString(errCode); - fprintf(stderr, "OpenGL Error: %s\n", errString); - exit(1); - } - else - std::cout<<"OpenGL Okay!"<<std::endl; -} - -void drawString(float x, float y, void* f, const char* string) -{ - glRasterPos2f(x, y); - int len = strlen(string); - // glColor3f(1.0, 1.0, 1.0); - for (int i = 0; i < len; i++) - { - //glutBitmapCharacter(f, string[i]); - } -} - -void drawString(float x, float y, int size, String s, FTPixmapFont* f) -{ - - glRasterPos2f(x, y); - - //f->FaceSize(size); - //f->Render(s); -} - -void drawViewportEdge() -{ - - glPushMatrix(); - glLoadIdentity(); - - glBegin(GL_LINE_LOOP); - glVertex2f(-.995, -.995); - glVertex2f(.995, -.995); - glVertex2f(.995, .995); - glVertex2f(-.995, .995); - glEnd(); - - glPopMatrix(); -} - -void drawViewportCross() -{ - - glColor3f(0.0,1.0,1.0); - - glPushMatrix(); - glLoadIdentity(); - - glBegin(GL_LINE_LOOP); - glVertex2f(-.995, -.995); - glVertex2f(.995, .995); - glVertex2f(.995, -.995); - glVertex2f(-.995, .995); - glEnd(); - - glPopMatrix(); -} - -void setViewportRange(int xMin,int yMin,int xMax,int yMax) -{ - - float dx = xMax-xMin; - float dy = yMax-yMin; - - // printf("Setting viewport to:%d,%d %d,%d with dims%d,%d %d,%d\n", x,y,w,h, xMin, xMin, xMax,yMax); - // printf("Dx:%f Dy:%f, Scaling viewport by:%f,%f \n", dx,dy,2.0/dx, 2.0/dy); - glLoadIdentity(); - glTranslatef(-1.0,-1.0,0.0); - glScalef(2.0f/dx, 2.0f/dy, 1.0); - glTranslatef(0-xMin, 0-yMin, 0); - -} -int roundUp(int numToRound, int multiple) -{ - if (multiple == 0) - { - return numToRound; - } - - int remainder = numToRound % multiple; - if (remainder == 0) - return numToRound; - return numToRound + multiple - remainder; -} - -double ad16ToUv(int x, int gain) -{ - int result = (double)(x * 20e6) / (double)(gain * pow(2.0,16)); - return result; -} - -void makeLabel(int val, int gain, bool convert, char* s) -{ - if (convert) - { - double volt = ad16ToUv(val, gain)/1000.; - if (abs(val)>1e6) - { - //val = val/(1e6); - sprintf(s, "%.2fV", volt); - } - else if (abs(val)>1e3) - { - //val = val/(1e3); - sprintf(s, "%.2fmV", volt); - } - else - sprintf(s, "%.2fuV", volt); - } - else - sprintf(s,"%d", (int)val); -} - -void n2ProjIdx(int proj, int* p1, int* p2) -{ - int d1, d2; - if (proj==PROJ1x2) - { - d1 = 0; - d2 = 1; - } - else if (proj==PROJ1x3) - { - d1 = 0; - d2 = 2; - } - else if (proj==PROJ1x4) - { - d1 = 0; - d2 = 3; - } - else if (proj==PROJ2x3) - { - d1 = 1; - d2 = 2; - } - else if (proj==PROJ2x4) - { - d1 = 1; - d2 = 3; - } - else if (proj==PROJ3x4) - { - d1 = 2; - d2 = 3; - } - else - { - std::cout<<"Invalid projection:"<<proj<<"! Cannot determine d1 and d2"<<std::endl; - *p1 = -1; - *p2 = -1; - return; - } - *p1 = d1; - *p2 = d2; -} - - -bool isFrameBufferExtensionSupported() -{ - - std::cout<<"Checking to see if the OpenGL Frame Buffer Extension is Supported"<<std::endl; - - char* str = 0; - char* tok = 0; - - std::string fboExt = "GL_EXT_framebuffer_object"; - - str = (char*)glGetString(GL_EXTENSIONS); - - if (str) - { - std::vector <std::string> extensions; - tok = strtok((char*)str, " "); - while (tok) - { - - std::string ext = tok; - - if (ext == fboExt) - return true; - - tok = strtok(0, " "); - } - return false; - } - else - return false; -} - -bool checkFramebufferStatus() -{ - // check FBO status - GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - return status == GL_FRAMEBUFFER_COMPLETE_EXT; - - switch (status) - { - case GL_FRAMEBUFFER_COMPLETE_EXT: - std::cout << "Framebuffer complete." << std::endl; - return true; - - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: - std::cout << "[ERROR] Framebuffer incomplete: Attachment is NOT complete." << std::endl; - return false; - - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT: - std::cout << "[ERROR] Framebuffer incomplete: No image is attached to FBO." << std::endl; - return false; - - case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: - std::cout << "[ERROR] Framebuffer incomplete: Attached images have different dimensions." << std::endl; - return false; - - case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: - std::cout << "[ERROR] Framebuffer incomplete: Color attached images have different internal formats." << std::endl; - return false; - - case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: - std::cout << "[ERROR] Framebuffer incomplete: Draw buffer." << std::endl; - return false; - - case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: - std::cout << "[ERROR] Framebuffer incomplete: Read buffer." << std::endl; - return false; - - case GL_FRAMEBUFFER_UNSUPPORTED_EXT: - std::cout << "[ERROR] Unsupported by FBO implementation." << std::endl; - return false; - - default: - std::cout << "[ERROR] Unknown error." << std::endl; - return false; - } -} - -// std::addressof was introduced in C++11, an equivalent function is defined below -// definition from http://en.cppreference.com/w/cpp/memory/addressof - diff --git a/Source/Processors/Visualization/SpikePlotting/PlotUtils.h b/Source/Processors/Visualization/SpikePlotting/PlotUtils.h deleted file mode 100755 index f3ba34836ba65558ccb673c8a21da1248c02cb8a..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/PlotUtils.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef PLOT_UTILS_H_ -#define PLOT_UTILS_H_ - -#define GL_GLEXT_PROTOTYPES - -#if defined(__linux__) -#include <GL/glut.h> -#elif defined(WIN32) -#undef GL_GLEXT_PROTOTYPES -#include <GLUT/glut.h> -#include <gl/GLU.h> -#include "..\..\..\glWinInit.h" -#else // assume OS X -#include <GLUT/glut.h> -#include <OpenGL/glu.h> -#include <OpenGL/glext.h> -#endif - -#include <stdio.h> -#include <math.h> -#include <cstring> -#include <string> -#include <iostream> -#include <vector> -#include <FTGL/ftgl.h> - -#include "../../../../JuceLibraryCode/JuceHeader.h" - -#define WAVE1 0 -#define WAVE2 1 -#define WAVE3 2 -#define WAVE4 3 -#define PROJ1x2 4 -#define PROJ1x3 5 -#define PROJ1x4 6 -#define PROJ2x3 7 -#define PROJ2x4 8 -#define PROJ3x4 9 - -void checkGlError(); -void setViewportRange(int xMin,int xMax,int yMin,int yMax); - -void drawString(float x, float y, void* f, const char* string); -void drawString(float x, float y, int size, String s, FTPixmapFont* f); - -void drawViewportEdge(); - -void drawViewportCross(); - -int roundUp(int, int); - -double ad16ToUv(int ad, int gain); - -void makeLabel(int val, int gain, bool convert, char* s); - -void n2ProjIdx(int i, int* p1, int* p2); - -template< class T > -T* addressof(T& arg) -{ - return (T*)&(char&)arg; -} - -bool isFrameBufferExtensionSupported(); -bool checkFramebufferStatus(); -#endif \ No newline at end of file diff --git a/Source/Processors/Visualization/SpikePlotting/ProjectionAxes.cpp b/Source/Processors/Visualization/SpikePlotting/ProjectionAxes.cpp deleted file mode 100755 index 90567594a87feb3e40fa3ab72e18dd174e4227d1..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/ProjectionAxes.cpp +++ /dev/null @@ -1,364 +0,0 @@ -#include "ProjectionAxes.h" - -ProjectionAxes::ProjectionAxes() - : GenericAxes(), - buffIdx(-1), totalSpikes(0), newSpike(false), isTextureValid(false), - fboCreated(false), allSpikesNextRender(false), overlay(false), - drawGrid(false), convertLabelUnits(true) -{ - GenericAxes::type = PROJ1x2; - GenericAxes::gotFirstSpike = false; - - ylims[0] = 0; - ylims[1] = 1; - setPointColor(1.0,1.0,1.0); - n2ProjIdx(type, &Dim1, &Dim2); - - clearOnNextDraw = false; - -} - -ProjectionAxes::ProjectionAxes(int x, int y, double w, double h, int t) - : GenericAxes(x,y,w,h,t), - buffIdx(-1), totalSpikes(0), newSpike(false), isTextureValid(false), - fboCreated(false), allSpikesNextRender(false), overlay(false), - drawGrid(true), convertLabelUnits(true) -{ - GenericAxes::gotFirstSpike = false; - - setPointColor(1.0,1.0,1.0); - - n2ProjIdx(type, &Dim1, &Dim2); - - clearOnNextDraw = false; -} - -void ProjectionAxes::updateSpikeData(SpikeObject s) -{ - //std::cout<<"ProjectionAxes::updateSpikeData()"<<std::endl; - GenericAxes::updateSpikeData(s); - - buffIdx++; - if (buffIdx >= AMP_BUFF_MAX_SIZE) - buffIdx %= AMP_BUFF_MAX_SIZE; - - int idx1, idx2; - calcWaveformPeakIdx(ampDim1,ampDim2,&idx1, &idx2); - - ampBuffer[0][buffIdx] = (s.data[idx1] - 32768); - ampBuffer[1][buffIdx] = (s.data[idx2] - 32768); - newSpike = true; -} - -void ProjectionAxes::redraw() -{ - - BaseUIElement::redraw(); - - plot(); - - BaseUIElement::drawElementEdges(); -} - - -void ProjectionAxes::plot() -{ - //setViewportRange(xlims[0], ylims[0], xlims[1], ylims[1]); - - GLenum errCode; - const GLubyte* errString; - - // Should we plot all spikes to the texture or just the newest one - bool allSpikes = false; - - if (!isTextureValid) - { - std::cout<<"ProjectionAxes::plot() --> Texture is invalid regenerating it!"<<std::endl; - createTexture(); - allSpikes = true; - } - - if (clearOnNextDraw) - { - clearTexture(); - clearOnNextDraw = false; - } - - drawSpikesToTexture(allSpikes); - drawTexturedQuad(); - plotNewestSpike(); - - // if there has been an openGL error we need to rerender the texture and replot everything - // errors occur when the openGL context has been destroyed and recreated. I'm not sure how to - // explicitly catch that event so instead we check for a drawing error. - if ((errCode = glGetError()) != GL_NO_ERROR) - { - errString = gluErrorString(errCode); - std::cout<<"OpenGL Error:"<< errString << "! Invalidating and rerendering the texture!" << std::endl; - - invalidateTexture(); - plot(); - return; - } - // else - // std::cout<<"All is good no errors detected"<<std::endl; -} - -void ProjectionAxes::plotOldSpikes(bool allSpikes) -{ - //std::cout<<"ProjectionAxes::plotOldSpikes() allSpikes:"<<allSpikes<<std::endl; - - //set the viewport to the size of the texture - glViewport(0,0,texWidth, texHeight); - - //set the plotting range for the viewport to the limits of the plot - setViewportRange(xlims[0], ylims[0], xlims[1], ylims[1]); - - // if allSpikes plot start with 1 else start with buffIdx - int startIdx = (allSpikes) ? 1 : buffIdx; - // either plot to totalSpikes or the end of the buffer if total spikes has wrapped - int stopIdx = (totalSpikes > AMP_BUFF_MAX_SIZE) ? AMP_BUFF_MAX_SIZE : buffIdx; - - // if (allSpikes) - // std::cout<<"\tUpdating texture with all spikes: "<< stopIdx - startIdx + 1 <<std::endl; - - glColor3f(1.0, 1.0, 1.0); - glPointSize(1); - glBegin(GL_POINTS); - for (int i=startIdx; i<=stopIdx; i++) - glVertex2i(ampBuffer[0][i], ampBuffer[1][i]); - glEnd(); - -} - - -void ProjectionAxes::plotNewestSpike() -{ - - BaseUIElement::setGlViewport(); - setViewportRange(xlims[0], ylims[0], xlims[1], ylims[1]); - - // draw the newest spike as a big red point so it stands out against the old spikes - glColor3f(1.0, 0.0, 0.0); - glPointSize(4); - - if (gotFirstSpike) - { - - glBegin(GL_POINTS); - glVertex2i(ampBuffer[0][buffIdx], ampBuffer[1][buffIdx]); - glEnd(); - } - - newSpike = false; -} - -void ProjectionAxes::calcWaveformPeakIdx(int d1, int d2, int* idx1, int* idx2) -{ - - int max1 = -1*pow(2.0,15); - int max2 = max1; - - for (int i=0; i<s.nSamples ; i++) - { - if (s.data[d1*s.nSamples + i] > max1) - { - *idx1 = d1*s.nSamples+i; - max1 = s.data[*idx1]; - } - if (s.data[d2*s.nSamples+i] > max2) - { - *idx2 = d2*s.nSamples+i; - max2 = s.data[*idx2]; - } - } -} - -void ProjectionAxes::setPosition(int x, int y, int w, int h) -{ - // std::cout<<"ProjectionAxes::setPosition()"<<std::endl; - - // only invalidate the texture if its size has actually changed - if (w!=GenericAxes::width || h!=GenericAxes::height) - invalidateTexture(); - - GenericAxes::setPosition(x,y,w,h); -} - -void ProjectionAxes::setPointColor(GLfloat r, GLfloat g, GLfloat b) -{ - pointColor[0] = r; - pointColor[1] = g; - pointColor[2] = b; -} -void ProjectionAxes::setGridColor(GLfloat r, GLfloat g, GLfloat b) -{ - gridColor[0] = r; - gridColor[1] = g; - gridColor[2] = b; -} - - -void ProjectionAxes::createTexture() -{ - - texWidth = BaseUIElement::width; - texHeight = BaseUIElement::height; - - std::cout<<"Creating a new texture of size:"<<texWidth<<"x"<<texHeight;//<<std::endl; - // Delete the old texture - glDeleteTextures(1, &textureId); - // Generate a new texture - glGenTextures(1, &textureId); - std::cout<<" textureId:"<<textureId<<std::endl; - // Bind the texture, and set the appropriate parameters - glBindTexture(GL_TEXTURE_2D, textureId); - glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, texWidth, texHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); - glGenerateMipmap(GL_TEXTURE_2D); - // generate a new FrameBufferObject - createFBO(); - - // the texture should now be valid, set the flag appropriately - isTextureValid = true; - -} - -void ProjectionAxes::createFBO() -{ - std::cout<<"Creating a new FBO, is already created?:"<<fboCreated<<" ";//<<std::endl; - - // if (!isTextureValid) - // createTexture(); - // Delete the old frame buffer, render buffer - if (fboCreated) - { - glDeleteFramebuffers(1, &fboId); - glDeleteRenderbuffers(1, &rboId); - } - - // Generate and Bind the frame buffer - glGenFramebuffersEXT(1, &fboId); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId); - - // Generate and bind the new Render Buffer - glGenRenderbuffersEXT(1, &rboId); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, rboId); - std::cout << " fboID:" << fboId << " rboID:" << rboId << std::endl; - - - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, texWidth, texHeight); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0); - - // Attach the texture to the framebuffer - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, textureId, 0); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, rboId); - - // If the FrameBuffer wasn't created then we have a bigger problem. Abort the program. - if (!checkFramebufferStatus()) - { - std::cout<<"FrameBufferObject not created! Are you running the newest version of OpenGL?"<<std::endl; - std::cout<<"FrameBufferObjects are REQUIRED! Quitting!"<<std::endl; - exit(1); - } - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - fboCreated = true; -} - - -void ProjectionAxes::drawSpikesToTexture(bool allSpikes) -{ - - //std::cout<<"ProjectionAxes::drawSpikesToTexture() plotting all spikes:"<<allSpikes<<std::endl; - - - // For some reason if we want to plot ALL the spikes to a texture we must plot two draw cycles - // in a row, perhaps this has to do with double buffering, I'm not sure why... investigate this! - - // if the allSpikes flag is set we set the allSpikesNextRender as true so we plot next - // all spikes next render cycle too, if only the allSpikesNextRender is true we set all spikes - // to true and allSpikes next render to false. - - //Basically this logic ensures that if allSpikes is ever set to true it will be set to true - //on the next call to drawSpikesToTexture() regardless of what value it is actually set to - if (allSpikes) - allSpikesNextRender = true; - else if (!allSpikes && allSpikesNextRender) - { - allSpikes = true; - allSpikesNextRender = false; - } - // set the rendering destination to FBO - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId); - - // plot to the texture - if (gotFirstSpike) - plotOldSpikes(allSpikes); - - // bind the original FrameBuffer - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); -} - -void ProjectionAxes::invalidateTexture() -{ - isTextureValid = false; -} - - -void ProjectionAxes::drawTexturedQuad() -{ - BaseUIElement::setGlViewport(); - // We need to scale the viewport in this case because we want to fill it with a quad. - // if we load identity then we can use a quad bound by (-1, 1); - glLoadIdentity(); - - // Bind the texture to render - glBindTexture(GL_TEXTURE_2D, textureId); - - // Build the quad - int size = 1; - int texS = 1; - glBegin(GL_QUADS); - glColor4f(1, 1, 1, 1); - glTexCoord2f(texS, texS); - glVertex3f(size, size,0); - glTexCoord2f(0, texS); - glVertex3f(-1 * size , size,0); - glTexCoord2f(0, 0); - glVertex3f(-1 * size, -1 * size,0); - glTexCoord2f(texS, 0); - glVertex3f(size, -1 * size,0); - glEnd(); - - // Unbind the texture - glBindTexture(GL_TEXTURE_2D, 0); -} - -void ProjectionAxes::clear() -{ - - //reset buffIDx and totalSpikes - buffIdx = 0; - totalSpikes = 0; - - // set flag to clear on next draw - clearOnNextDraw = true; -} - -void ProjectionAxes::clearTexture() -{ - std::cout<<"ProjectinAxes::clearTexture() --> Clearing the Texture!"<<std::endl; - - glViewport(0,0,texWidth, texHeight); - setViewportRange(xlims[0], ylims[0], xlims[1], ylims[1]); - - // set the rendering destination to FBO - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId); - // Clear the framebufferObject - glClearColor(0, 0, 0, 1); - glClear(GL_COLOR_BUFFER_BIT); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); -} diff --git a/Source/Processors/Visualization/SpikePlotting/ProjectionAxes.h b/Source/Processors/Visualization/SpikePlotting/ProjectionAxes.h deleted file mode 100755 index 7c2fd142b4bba4a8325e873a1c452dff7c348ccb..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/ProjectionAxes.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef PROJECTION_AXES_H_ -#define PROJECTION_AXES_H_ - -#define GL_GLEXT_PROTOTYPES - -#if defined(__linux__) -#include <GL/glut.h> -#else -#include <GLUT/glut.h> -#endif -#include <stdlib.h> -#include "BaseUIElement.h" -#include "../SpikeObject.h" -#include "PlotUtils.h" -#include "GenericAxes.h" -#include <stdint.h> - -#define AMP_BUFF_MAX_SIZE 50000 - -/** - - Class for drawing the peak projections of spike waveforms. - -*/ - -class ProjectionAxes: public GenericAxes -{ - - GLfloat pointColor[3]; - GLfloat gridColor[3]; - - int ampBuffer[2][AMP_BUFF_MAX_SIZE]; - uint16_t buffIdx; // points to the most recent spike - uint64_t totalSpikes; - - - int ampDim1, ampDim2; - - - void drawProjectionGrid(int thold, int gain); - void calcWaveformPeakIdx(int, int, int*, int*); - - void createTexture(); - void createFBO(); - - void drawSpikesToTexture(bool allSpikes); - void drawTexturedQuad(); - void plotOldSpikes(bool allSpikes); - void plotNewestSpike(); - - bool newSpike; - - - GLuint fboId; // Frame Buffer Object - GLuint textureId; // Texture - GLuint rboId; // Render Buffer - - int texWidth; - int texHeight; - - bool clearOnNextDraw; - bool isTextureValid; - bool fboCreated; - void clearTexture(); - - void validateTexture(); - - bool allSpikesNextRender; - -protected: - void plot(); - - -public: - ProjectionAxes(); - ProjectionAxes(int x, int y, double w, double h, int t); - virtual ~ProjectionAxes() {} - - void setPosition(int, int, int, int); - void updateSpikeData(SpikeObject s); - - void setPointColor(GLfloat r, GLfloat g, GLfloat b); - void setGridColor(GLfloat, GLfloat, GLfloat); - - void clear(); - void invalidateTexture(); - - void redraw(); - - bool overlay; - bool drawGrid; - bool convertLabelUnits; - - -}; - -#endif // PROJECTION_AXES_H_ - - - - -// #endif diff --git a/Source/Processors/Visualization/SpikePlotting/SimpleKeyEvent.h b/Source/Processors/Visualization/SpikePlotting/SimpleKeyEvent.h deleted file mode 100755 index 4f7d34e3a278b01186f036c7e6f0e2729f0d481c..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/SimpleKeyEvent.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef SIMPLE_KEY_EVENT_H -#define SIMPLE_KEY_EVENT_H - -/** - - Struct containing keypress information not handled by JUCE. - -*/ - -struct SimpleKeyEvent -{ - - int key; - bool shift; - bool ctrl; - bool alt; - -}; - -#endif \ No newline at end of file diff --git a/Source/Processors/Visualization/SpikePlotting/SpikePlot.cpp b/Source/Processors/Visualization/SpikePlotting/SpikePlot.cpp deleted file mode 100755 index aa36bff72c8089a68118da1562dac8cd3c56314a..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/SpikePlot.cpp +++ /dev/null @@ -1,269 +0,0 @@ -#include "SpikePlot.h" -#include "../SpikeObject.h" -#include "PlotUtils.h" - -SpikePlot::SpikePlot(): - BaseUIElement(), limitsChanged(true), nChannels(0), plotType(0), nWaveAx(1), nProjAx(0) -{ - -} - -SpikePlot::SpikePlot(int x, int y, int w, int h, int p): - BaseUIElement(x,y,w,h,0), limitsChanged(true), plotType(p) -{ - - switch (p) - { - case SINGLE_PLOT: - std::cout<<"SpikePlot as SINGLE_PLOT"<<std::endl; - nWaveAx = 1; - nProjAx = 0; - nChannels = 1; - break; - case STEREO_PLOT: - std::cout<<"SpikePlot as STEREO_PLOT"<<std::endl; - nWaveAx = 2; - nProjAx = 1; - nChannels = 2; - break; - case TETRODE_PLOT: - std::cout<<"SpikePlot as TETRODE_PLOT"<<std::endl; - nWaveAx = 4; - nProjAx = 6; - nChannels = 4; - break; - // case HIST_PLOT: - // nWaveAx = 1; - // nProjAx = 0; - // nHistAx = 1; - // break; - default: // unsupported number of axes provided - std::cout<<"SpikePlot as UNKNOWN, defaulting to SINGLE_PLOT"<<std::endl; - nWaveAx = 1; - nProjAx = 0; - plotType = SINGLE_PLOT; - nChannels = 1; - } - - - - initAxes(); -} - -SpikePlot::~SpikePlot() -{ -} - -// As a plot is a collection of axes simply have each axes can draw itself -void SpikePlot::redraw() -{ - for (int i=0; i<nWaveAx; i++) - wAxes[i].redraw(); - // wAxes[1].redraw(); - for (int i=0; i<nProjAx; i++) - pAxes[i].redraw(); -} - -// Have each axes process the spike event -void SpikePlot::processSpikeObject(SpikeObject s) -{ - //std::cout<<"ElectrdePlot::processSpikeObject()"<<std::endl; - for (int i=0; i<nWaveAx; i++) - wAxes[i].updateSpikeData(s); - // wAxes[1].updateSpikeData(s); - for (int i=0; i<nProjAx; i++) - pAxes[i].updateSpikeData(s); -} - - -void SpikePlot::setEnabled(bool e) -{ - BaseUIElement::enabled = e; - - for (int i=0; i<nWaveAx; i++) - wAxes[i].setEnabled(e); - // wAxes[1].setEnabled(e); - for (int i=0; i<nProjAx; i++) - pAxes[i].setEnabled(e); -} - -bool SpikePlot::getEnabled() -{ - return BaseUIElement::enabled; -} - - -void SpikePlot::initAxes() -{ - initLimits(); - - for (int i=0; i<nWaveAx; i++) - { - wAxes[i] = WaveAxes(0, 0, 1, 1, WAVE1 + i); // add i to increment the wave channel - wAxes[i].setWaveformColor(1.0, 1.0, 1.0); - } - - for (int i=0; i<nProjAx; i++) - { - pAxes[i] = ProjectionAxes(0, 0, 1, 1, PROJ1x2 + i); - pAxes[i].setPointColor(1.0, 1.0, 1.0); - } - - updateAxesPositions(); // Set the position of the individual axes within the plot - setLimitsOnAxes(); // initialize thel limits on the axes -} -void SpikePlot::updateAxesPositions() -{ - int minX = BaseUIElement::xpos; - int minY = BaseUIElement::ypos; - - double axesWidth;// = BaseUIElement::width/2; - double axesHeight;// = BaseUIElement::height; - - - // to compute the axes positions we need to know how many columns of proj and wave axes should exist - // using these two values we can calculate the positions of all of the sub axes - int nProjCols, nWaveCols; - switch (plotType) - { - case SINGLE_PLOT: - nProjCols = 0; - nWaveCols = 1; - axesWidth = width; - axesHeight = height; - break; - - case STEREO_PLOT: - nProjCols = 1; - nWaveCols = 2; - axesWidth = width/2; - axesHeight = height; - break; - case TETRODE_PLOT: - nProjCols = 3; - nWaveCols = 2; - axesWidth = width/4; - axesHeight = height/2; - break; - } - - for (int i=0; i<nWaveAx; i++) - wAxes[i].setPosition(minX + (i % nWaveCols) * axesWidth/nWaveCols, minY + (i/nWaveCols) * axesHeight, axesWidth/nWaveCols, axesHeight); - - for (int i=0; i<nProjAx; i++) - pAxes[i].setPosition(minX + (1 + i%nProjCols) * axesWidth, minY + (i/nProjCols) * axesHeight, axesWidth, axesHeight); -} - -void SpikePlot::setLimitsOnAxes() -{ - std::cout<<"SpikePlot::setLimitsOnAxes()"<<std::endl; - - for (int i=0; i<nWaveAx; i++) - wAxes[i].setYLims(limits[i][0], limits[i][1]); - - // Each Projection sets its limits using the limits of the two waveform dims it represents. - // Convert projection number to indecies, and then set the limits using those indices - int j1, j2; - for (int i=0; i<nProjAx; i++) - { - n2ProjIdx(pAxes[i].getType(), &j1, &j2); - pAxes[i].setYLims(limits[j1][0], limits[j1][1]); - pAxes[i].setXLims(limits[j2][0], limits[j2][1]); - } -} -void SpikePlot::setPosition(int x, int y, double w, double h) -{ - - // std::cout<<"SpikePlot::setPosition()"<<std::endl; - BaseUIElement::setPosition(x,y,w,h); - updateAxesPositions(); - -} - - -void SpikePlot::initLimits() -{ - for (int i=0; i<nChannels; i++) - { - limits[i][0] = 1209;//-1*pow(2,11); - limits[i][1] = 11059;//pow(2,14)*1.6; - } - -} - -void SpikePlot::getBestDimensions(int* w, int* h) -{ - switch (plotType) - { - case TETRODE_PLOT: - *w = 4; - *h = 2; - break; - case STEREO_PLOT: - *w = 2; - *h = 1; - break; - case SINGLE_PLOT: - *w = 1; - *h = 1; - break; - default: - *w = 1; - *h = 1; - break; - } -} - -void SpikePlot::clear() -{ - std::cout<<"SpikePlot::clear()"<<std::endl; - for (int i=0; i<nWaveAx; i++) - wAxes[i].clear(); - for (int i=0; i<nProjAx; i++) - pAxes[i].clear(); -} - - -bool SpikePlot::processKeyEvent(SimpleKeyEvent k) -{ - - return true; -} - -void SpikePlot::pan(int dim, bool up) -{ - - std::cout<<"SpikePlot::pan() dim:"<<dim<<std::endl; - - int mean = (limits[dim][0] + limits[dim][1])/2; - int dLim = limits[dim][1] - mean; - - if (up) - mean = mean + dLim/20; - else - mean = mean - dLim/20; - - limits[dim][0] = mean-dLim; - limits[dim][1] = mean+dLim; - - setLimitsOnAxes(); -} -void SpikePlot::zoom(int dim, bool in) -{ - std::cout<<"SpikePlot::zoom()"<<std::endl; - - int mean = (limits[dim][0] + limits[dim][1])/2; - int dLim = limits[dim][1] - mean; - - if (in) - dLim = dLim * .90; - else - dLim = dLim / .90; - - limits[dim][0] = mean-dLim; - limits[dim][1] = mean+dLim; - - setLimitsOnAxes(); -} - - diff --git a/Source/Processors/Visualization/SpikePlotting/SpikePlot.h b/Source/Processors/Visualization/SpikePlotting/SpikePlot.h deleted file mode 100755 index de78863de40218f8f8b71106d0683cd82f6b3c30..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/SpikePlot.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef SPIKE_PLOT_H_ -#define SPIKE_PLOT_H_ - -#if defined(__linux__) -#include <GL/glut.h> -#else -#include <GLUT/glut.h> -#endif -#include <list> -#include <math.h> - -#include "WaveAxes.h" -#include "ProjectionAxes.h" -#include "BaseUIElement.h" -#include "PlotUtils.h" -#include "SimpleKeyEvent.h" - -#define TETRODE_PLOT 1004 -#define STEREO_PLOT 1002 -#define SINGLE_PLOT 1001 -//#define HIST_PLOT 1000 // perhaps we'll use hist plots at a later date but not for now - - -/** - - Class for drawing the waveforms and projections of incoming spikes. - -*/ - -class SpikePlot : public BaseUIElement -{ - - bool enabled; - - bool limitsChanged; - - static const int MAX_N_CHAN = 4; - static const int MAX_N_PROJ = 6; - - int nChannels; - int plotType; - int nWaveAx; - int nProjAx; - - double limits[MAX_N_CHAN][2]; - - WaveAxes wAxes[MAX_N_CHAN]; - ProjectionAxes pAxes[MAX_N_PROJ]; - - - - // void zoomAxes(int n, bool xdim, int zoomval); - // void zoomProjection (int n, bool xdim, int zoomval); - // void zoomWaveform (int n, bool xdim, int zoomval); - - // void panAxes(int n, bool xdim, int panval); - // void panProjection (int n, bool xdim, int panval); - // void panWaveform(int n, bool xdim, int panval); - - void initLimits(); - void setLimitsOnAxes(); - void updateAxesPositions(); - - -public: - SpikePlot(); - SpikePlot(int x, int y,int w,int h, int pType); - virtual ~SpikePlot(); - - void initAxes(); - void redraw(); - - void setEnabled(bool enabled); - bool getEnabled(); - void setPosition(int,int,double,double); - - void getBestDimensions(int*, int*); - - void mouseDown(int x, int y); - - void mouseDragX(int dx, bool shift, bool ctr); - void mouseDragY(int dy, bool shift, bool ctr); - - bool processKeyEvent(SimpleKeyEvent k); - - void processSpikeObject(SpikeObject s); - - void clear(); - void zoom(int, bool); - void pan(int, bool); -}; - - - -#endif diff --git a/Source/Processors/Visualization/SpikePlotting/WaveAxes.cpp b/Source/Processors/Visualization/SpikePlotting/WaveAxes.cpp deleted file mode 100755 index df776299ecf6cc29918c73d4ebc2ac3c4b7506d6..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/WaveAxes.cpp +++ /dev/null @@ -1,225 +0,0 @@ -#include "WaveAxes.h" - -WaveAxes::WaveAxes() - : GenericAxes(), - drawWaveformLine(true), - drawWaveformPoints(false), - overlay(false), - drawGrid(true), - convertLabelUnits(true) -{ - GenericAxes::gotFirstSpike = false; - - ylims[0] = 0; - ylims[1] = 1; - setWaveformColor(1.0,1.0,0.6); - setThresholdColor(1.0, 0.1, 0.1); - setGridColor(0.4, 0.2, 0.2); -} - -WaveAxes::WaveAxes(int x, int y, double w, double h, int t) - : GenericAxes(x,y,w,h,t), - drawWaveformLine(true), - drawWaveformPoints(false), - overlay(false), - drawGrid(true), - convertLabelUnits(true) -{ - GenericAxes::gotFirstSpike = false; - - setWaveformColor(1.0,1.0,0.6); - setThresholdColor(1.0, 0.1, 0.1); - setGridColor(0.2, 0.2, 0.2); - -} - -void WaveAxes::updateSpikeData(SpikeObject newSpike) -{ - //std::cout<<"WaveAxes::updateSpikeData()"<<std::endl; - GenericAxes::updateSpikeData(newSpike); - -} - -void WaveAxes::redraw() -{ - - BaseUIElement::redraw(); - - plot(); - - BaseUIElement::drawElementEdges(); -} - - -void WaveAxes::plot() -{ - - int chan = 0; - - // If no spikes have been received then don't plot anything - if (!gotFirstSpike) - { - //std::cout<<"\tWaiting for the first spike"<<std::endl; - return; - } - - //setYLims(-20000,20000); - - // Set the plotting range for the current axes the xlims member is ignored as the xdims are 0->number of samples per waveform minus one - // so the line goes all the way to the edges ydims are specified by the ylims vector - setViewportRange(0, ylims[0], s.nSamples-1, ylims[1]); - //setViewportRange(0, -2000, s.nSamples-1, 20000); - - //std::cout << "ylims set to " << ylims[0] << " " << ylims[1] << std::endl; - - // draw the grid lines for the waveforms? - if (drawGrid) - drawWaveformGrid(s.threshold[chan], s.gain[chan]); - - - //std::cout << "ylims set to " << ylims[0] << " " << ylims[1] << std::endl; - - //compute the spatial width for each waveform sample - float dx = 1; - float x = 0; - - // type corresponds to channel so we need to calculate the starting - // sample based upon which channel is getting plotted - // type values are defined in PlotUtils.h - int sampIdx = s.nSamples * type; // - //std::cout<<"Starting with idx:"<<sampIdx<<std::endl; - - - //Draw the individual waveform points connected with a line - glColor3fv(waveColor); - glLineWidth(2); - glBegin(GL_LINE_STRIP); - - int dSamples = 1; - for (int i = 0; i < s.nSamples; i++) - { - //std::cout<<"\t"<<s.data[sampIdx]; - glVertex2f(x, s.data[sampIdx] - 32768); - sampIdx += dSamples; - x +=dx; - } - - glEnd(); - - - //Draw the threshold line and label - glColor3fv(thresholdColor); - glLineWidth(1); - glLineStipple(4, 0xAAAA); // make a dashed line - glEnable(GL_LINE_STIPPLE); - - glBegin(GL_LINE_STRIP); - glVertex2f(0, s.threshold[chan]); - glVertex2f(s.nSamples, s.threshold[chan]); - glEnd(); - - glDisable(GL_LINE_STIPPLE); - - char cstr[100] = {0}; - - makeLabel(s.threshold[chan], s.gain[chan], convertLabelUnits, cstr); - String str = String(cstr); - - float yOffset = (ylims[1] - ylims[0])/BaseUIElement::height * 2; - drawString(1 ,s.threshold[chan] + yOffset, 15, str, font); -} - -void WaveAxes::drawWaveformGrid(int thold, int gain) -{ - - //setYLims(-20000,20000); - - double voltRange = ylims[1] - ylims[0]; - double pixelRange = BaseUIElement::height; - //This is a totally arbitrary value that seemed to lok the best for me - int minPixelsPerTick = 25; - int MAX_N_TICKS = 10; - - int nTicks = pixelRange / minPixelsPerTick; - while (nTicks > MAX_N_TICKS) - { - minPixelsPerTick += 5; - nTicks = pixelRange / minPixelsPerTick; - } - - int voltPerTick = (voltRange / nTicks); - - glColor3fv(gridColor); - - glLineWidth(1); - char cstr[200] = {0}; - String str; - - double tickVoltage = thold; - - // If the limits are bad we don't want to hang the program trying to draw too many ticks - // so count the number of ticks drawn and kill the routine after 100 draws - int tickCount=0; - while (tickVoltage < ylims[1] - voltPerTick*1.5) // Draw the ticks above the thold line - { - tickVoltage = roundUp(tickVoltage + voltPerTick, 100); - - glBegin(GL_LINE_STRIP); - glVertex2i(0, tickVoltage); - glVertex2i(s.nSamples, tickVoltage); - glEnd(); - - makeLabel(tickVoltage, gain, convertLabelUnits, cstr); - str = String(cstr); - drawString(1, tickVoltage+voltPerTick/10, 15, str, font); - - if (tickCount++>100) - return; - } - - tickVoltage = thold; - tickCount = 0; - - while (tickVoltage > ylims[0] + voltPerTick) // draw the ticks below the thold line - { - tickVoltage = roundUp(tickVoltage - voltPerTick, 100); - - glBegin(GL_LINE_STRIP); - glVertex2i(0, tickVoltage); - glVertex2i(s.nSamples, tickVoltage); - glEnd(); - - makeLabel(tickVoltage, gain, convertLabelUnits, cstr); - str = String(cstr); - drawString(1, tickVoltage+voltPerTick/10, 15, str, font); - - if (tickCount++>100) - return; - } - - -} - -void WaveAxes::setWaveformColor(GLfloat r, GLfloat g, GLfloat b) -{ - waveColor[0] = r; - waveColor[1] = g; - waveColor[2] = b; -} -void WaveAxes::setThresholdColor(GLfloat r, GLfloat g, GLfloat b) -{ - thresholdColor[0] = r; - thresholdColor[1] = g; - thresholdColor[2] = b; -} -// void WaveAxes::setPointColor(GLfloat r, GLfloat g, GLfloat b){ -// pointColor[0] = r; -// pointColor[1] = g; -// pointColor[2] = b; -// } -void WaveAxes::setGridColor(GLfloat r, GLfloat g, GLfloat b) -{ - gridColor[0] = r; - gridColor[1] = g; - gridColor[2] = b; -} diff --git a/Source/Processors/Visualization/SpikePlotting/WaveAxes.h b/Source/Processors/Visualization/SpikePlotting/WaveAxes.h deleted file mode 100755 index 2d45d68738b211ebd3e1a2851e5d91ad7369d7b7..0000000000000000000000000000000000000000 --- a/Source/Processors/Visualization/SpikePlotting/WaveAxes.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef WAVE_AXES_H -#define WAVE_AXES_H - -#if defined(__linux__) -#include <GL/glut.h> -#else -#include <GLUT/glut.h> -#endif -#include <stdlib.h> -#include "BaseUIElement.h" -#include "../SpikeObject.h" -#include "PlotUtils.h" -#include "GenericAxes.h" - -/** - - Class for drawing spike waveforms. - -*/ - -class WaveAxes: public GenericAxes -{ - - GLfloat waveColor[3]; - GLfloat thresholdColor[3]; - GLfloat gridColor[3]; - - - void drawWaveformGrid(int thold, int gain); - -protected: - void plot(); - - -public: - WaveAxes(); - WaveAxes(int x, int y, double w, double h, int t); - virtual ~WaveAxes() {} - - void updateSpikeData(SpikeObject s); - - void setWaveformColor(GLfloat r, GLfloat g, GLfloat b); - void setThresholdColor(GLfloat r, GLfloat g, GLfloat b); - void setGridColor(GLfloat, GLfloat, GLfloat); - - void redraw(); - - bool drawWaveformLine; - bool drawWaveformPoints; - bool overlay; - bool drawGrid; - bool convertLabelUnits; - -}; - - - -#endif diff --git a/Source/Processors/Visualization/Visualizer.h b/Source/Processors/Visualization/Visualizer.h index 0e23f3d2cfcb3af037fc5a808728ac1f2b5018b7..144dd73f0e8e78f8cf77b2da1ef9589a7ac1f285 100755 --- a/Source/Processors/Visualization/Visualizer.h +++ b/Source/Processors/Visualization/Visualizer.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/WiFiOutput.cpp b/Source/Processors/WiFiOutput/WiFiOutput.cpp similarity index 94% rename from Source/Processors/WiFiOutput.cpp rename to Source/Processors/WiFiOutput/WiFiOutput.cpp index a3c5c9e0d32d4f6803b53e5456e39175933bb223..cf52d9091b5601fa19203942704b571b474ff1d0 100755 --- a/Source/Processors/WiFiOutput.cpp +++ b/Source/Processors/WiFiOutput/WiFiOutput.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/WiFiOutput.h b/Source/Processors/WiFiOutput/WiFiOutput.h similarity index 84% rename from Source/Processors/WiFiOutput.h rename to Source/Processors/WiFiOutput/WiFiOutput.h index 1400de5aa08a2c9ef1b883743a3457ff2b282656..b2d35d436249bd967b18406c9c58341c6cf52cfe 100755 --- a/Source/Processors/WiFiOutput.h +++ b/Source/Processors/WiFiOutput/WiFiOutput.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,11 +25,11 @@ #define __WIFIOUTPUT_H_94D625CE__ -#include "../../JuceLibraryCode/JuceHeader.h" -#include "GenericProcessor.h" -#include "Editors/WiFiOutputEditor.h" +#include "../../../JuceLibraryCode/JuceHeader.h" +#include "../GenericProcessor/GenericProcessor.h" +#include "WiFiOutputEditor.h" -#include "../Network/PracticalSocket.h" // For UDPSocket and SocketException +#include "../../Network/PracticalSocket.h" // For UDPSocket and SocketException /** diff --git a/Source/Processors/Editors/WiFiOutputEditor.cpp b/Source/Processors/WiFiOutput/WiFiOutputEditor.cpp similarity index 94% rename from Source/Processors/Editors/WiFiOutputEditor.cpp rename to Source/Processors/WiFiOutput/WiFiOutputEditor.cpp index 5b8b679736f3dd4c3893431ba191d316c039ef45..65bc32d3d7fa0b8c79f0bc44e9d061a0524ef5d4 100755 --- a/Source/Processors/Editors/WiFiOutputEditor.cpp +++ b/Source/Processors/WiFiOutput/WiFiOutputEditor.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/Processors/Editors/WiFiOutputEditor.h b/Source/Processors/WiFiOutput/WiFiOutputEditor.h similarity index 89% rename from Source/Processors/Editors/WiFiOutputEditor.h rename to Source/Processors/WiFiOutput/WiFiOutputEditor.h index d31e613ac29ece80352a3cb747acb74ca9dfb171..c004aa543c994a21aadf1c475d1054d2645b2133 100755 --- a/Source/Processors/Editors/WiFiOutputEditor.h +++ b/Source/Processors/WiFiOutput/WiFiOutputEditor.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,8 +25,8 @@ #define __WIFIOUTPUTEDITOR_H_7161DB44__ #include "../../../JuceLibraryCode/JuceHeader.h" -#include "GenericEditor.h" -#include "ImageIcon.h" +#include "../Editors/GenericEditor.h" +#include "../Editors/ImageIcon.h" class ImageIcon; diff --git a/Source/UI/ControlPanel.cpp b/Source/UI/ControlPanel.cpp index 5034b7d898d4ce13e6aa1bb32ba98e905cb78881..466bdc799d3bf4305b0b8406b82fcf72ce20da86 100755 --- a/Source/UI/ControlPanel.cpp +++ b/Source/UI/ControlPanel.cpp @@ -1,23 +1,23 @@ /* - ------------------------------------------------------------------ +------------------------------------------------------------------ - This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys +This file is part of the Open Ephys GUI +Copyright (C) 2014 Open Ephys - ------------------------------------------------------------------ +------------------------------------------------------------------ - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. */ @@ -25,6 +25,7 @@ #include "UIComponent.h" #include <stdio.h> #include <math.h> +#include "../Processors/RecordNode/RecordEngine.h" PlayButton::PlayButton() : DrawableButton("PlayButton", DrawableButton::ImageFitted) @@ -363,7 +364,7 @@ void ControlPanelButton::setState(bool b) ControlPanel::ControlPanel(ProcessorGraph* graph_, AudioComponent* audio_) - : graph(graph_), audio(audio_), initialize(true), open(false) + : graph(graph_), audio(audio_), initialize(true), open(false), lastEngineIndex(-1) { if (1) @@ -400,6 +401,22 @@ ControlPanel::ControlPanel(ProcessorGraph* graph_, AudioComponent* audio_) cpb = new ControlPanelButton(this); addAndMakeVisible(cpb); + recordSelector = new ComboBox(); + recordSelector->addListener(this); + for (int i =0; i < RecordEngineManager::getNumOfBuiltInEngines(); i++) + { + RecordEngineManager* rem = RecordEngineManager::createBuiltInEngineManager(i); + recordSelector->addItem(rem->getName(),i+1); + recordEngines.add(rem); + } + addChildComponent(recordSelector); + + recordOptionsButton = new UtilityButton("R",Font("Small Text", 15, Font::plain)); + recordOptionsButton->setEnabledState(true); + recordOptionsButton->addListener(this); + recordOptionsButton->setTooltip("Configure options for selected record engine"); + addChildComponent(recordOptionsButton); + newDirectoryButton = new UtilityButton("+", Font("Small Text", 15, Font::plain)); newDirectoryButton->setEnabledState(false); newDirectoryButton->addListener(this); @@ -476,14 +493,19 @@ void ControlPanel::updateChildComponents() filenameComponent->addListener(getProcessorGraph()->getRecordNode()); getProcessorGraph()->getRecordNode()->filenameComponentChanged(filenameComponent); + recordSelector->setSelectedId(1,sendNotificationSync); } void ControlPanel::createPaths() { - int w = getWidth() - 325; + /* int w = getWidth() - 325; if (w > 150) - w = 150; + w = 150;*/ + + int w = getWidth() - 435; + if (w > 22) + w = 22; int h1 = getHeight()-32; int h2 = getHeight(); @@ -607,6 +629,12 @@ void ControlPanel::resized() { int topBound = getHeight()-h+10-5; + recordSelector->setBounds((w - 435) > 40 ? 35 : w-450, topBound, 100, h-10); + recordSelector->setVisible(true); + + recordOptionsButton->setBounds((w - 435) > 40 ? 140 : w-350,topBound, h-10, h-10); + recordOptionsButton->setVisible(true); + filenameComponent->setBounds(165, topBound, w-500, h-10); filenameComponent->setVisible(true); @@ -630,6 +658,8 @@ void ControlPanel::resized() prependText->setVisible(false); dateText->setVisible(false); appendText->setVisible(false); + recordSelector->setVisible(false); + recordOptionsButton->setVisible(false); } repaint(); @@ -708,6 +738,9 @@ void ControlPanel::buttonClicked(Button* button) if (graph->enableProcessors()) // start the processor graph { + if (recordEngines[recordSelector->getSelectedId()-1]->isWindowOpen()) + recordEngines[recordSelector->getSelectedId()-1]->toggleConfigWindow(); + audio->beginCallbacks(); masterClock->start(); audioEditor->disable(); @@ -716,6 +749,8 @@ void ControlPanel::buttonClicked(Button* button) startTimer(250); // refresh every 250 ms } + recordSelector->setEnabled(false); + recordOptionsButton->setEnabled(false); } else { @@ -732,6 +767,8 @@ void ControlPanel::buttonClicked(Button* button) stopTimer(); startTimer(60000); // back to refresh every minute audioEditor->enable(); + recordSelector->setEnabled(true); + recordOptionsButton->setEnabled(true); } @@ -750,6 +787,9 @@ void ControlPanel::buttonClicked(Button* button) { if (graph->enableProcessors()) // start the processor graph { + if (recordEngines[recordSelector->getSelectedId()-1]->isWindowOpen()) + recordEngines[recordSelector->getSelectedId()-1]->toggleConfigWindow(); + audio->beginCallbacks(); masterClock->start(); audioEditor->disable(); @@ -760,6 +800,8 @@ void ControlPanel::buttonClicked(Button* button) startRecording(); playButton->setToggleState(true, dontSendNotification); + recordSelector->setEnabled(false); + recordOptionsButton->setEnabled(false); } } @@ -770,6 +812,45 @@ void ControlPanel::buttonClicked(Button* button) } } + if (button == recordOptionsButton) + { + int id = recordSelector->getSelectedId()-1; + if (id < 0) return; + + recordEngines[id]->toggleConfigWindow(); + } + +} + +void ControlPanel::comboBoxChanged(ComboBox* combo) +{ + if (lastEngineIndex >= 0) + { + if (recordEngines[lastEngineIndex]->isWindowOpen()) + recordEngines[lastEngineIndex]->toggleConfigWindow(); + } + RecordEngine* re; + getProcessorGraph()->getRecordNode()->clearRecordEngines(); + if (combo->getSelectedId() > 0) + { + re = recordEngines[combo->getSelectedId()-1]->instantiateEngine(); + } + else + { + std::cout << "Engine ComboBox: Bad ID" << std::endl; + combo->setSelectedId(1,dontSendNotification); + re = recordEngines[0]->instantiateEngine(); + } + re->setUIComponent(getUIComponent()); + re->registerManager(recordEngines[combo->getSelectedId()-1]); + getProcessorGraph()->getRecordNode()->registerRecordEngine(re); + + graph->getRecordNode()->newDirectoryNeeded = true; + newDirectoryButton->setEnabledState(false); + masterClock->resetRecordTime(); + + dateText->setColour(Label::textColourId, Colours::grey); + lastEngineIndex=combo->getSelectedId()-1; } void ControlPanel::disableCallbacks() @@ -792,10 +873,10 @@ void ControlPanel::disableCallbacks() playButton->setToggleState(false, dontSendNotification); recordButton->setToggleState(false, dontSendNotification); + recordSelector->setEnabled(true); masterClock->stopRecording(); masterClock->stop(); - } // void ControlPanel::actionListenerCallback(const String & msg) @@ -903,9 +984,19 @@ void ControlPanel::saveStateToXml(XmlElement* xml) controlPanelState->setAttribute("isOpen",open); controlPanelState->setAttribute("prependText",prependText->getText()); controlPanelState->setAttribute("appendText",appendText->getText()); + controlPanelState->setAttribute("recordEngine",recordSelector->getSelectedId()); audioEditor->saveStateToXml(xml); + XmlElement* recordEnginesState = xml->createNewChildElement("RECORDENGINES"); + for (int i=0; i < recordEngines.size(); i++) + { + XmlElement* reState = recordEnginesState->createNewChildElement("ENGINE"); + reState->setAttribute("id",recordEngines[i]->getID()); + reState->setAttribute("name",recordEngines[i]->getName()); + recordEngines[i]->saveParametersToXml(reState); + } + } void ControlPanel::loadStateFromXml(XmlElement* xml) @@ -918,11 +1009,23 @@ void ControlPanel::loadStateFromXml(XmlElement* xml) appendText->setText(xmlNode->getStringAttribute("appendText", ""), dontSendNotification); prependText->setText(xmlNode->getStringAttribute("prependText", ""), dontSendNotification); + recordSelector->setSelectedId(xmlNode->getIntAttribute("recordEngine",1), sendNotificationSync); bool isOpen = xmlNode->getBoolAttribute("isOpen"); openState(isOpen); } + else if (xmlNode->hasTagName("RECORDENGINES")) + { + for (int i = 0; i < recordEngines.size(); i++) + { + forEachXmlChildElementWithTagName(*xmlNode,xmlEngine,"ENGINE") + { + if (xmlEngine->getStringAttribute("id") == recordEngines[i]->getID()) + recordEngines[i]->loadParametersFromXml(xmlEngine); + } + } + } } audioEditor->loadStateFromXml(xml); diff --git a/Source/UI/ControlPanel.h b/Source/UI/ControlPanel.h index 2e623282d7742f1a6255c25fedc2f4fa58c3ec5f..9ac30aef6580471fc41922b4d2ff472971547959 100755 --- a/Source/UI/ControlPanel.h +++ b/Source/UI/ControlPanel.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -26,9 +26,9 @@ #include "../../JuceLibraryCode/JuceHeader.h" #include "../Audio/AudioComponent.h" -#include "../Processors/Editors/AudioEditor.h" -#include "../Processors/ProcessorGraph.h" -#include "../Processors/RecordNode.h" +#include "../Processors/AudioNode/AudioEditor.h" +#include "../Processors/ProcessorGraph/ProcessorGraph.h" +#include "../Processors/RecordNode/RecordNode.h" #include "CustomLookAndFeel.h" #include "../AccessClass.h" #include "../Processors/Editors/GenericEditor.h" // for UtilityButton @@ -163,8 +163,6 @@ private: The Clock uses built-in JUCE functions for getting the system time. It does not currently interact with timestamps from ProcessorGraph sources. - The Clock draws the time using OpenGL (and the FTGL font library). - @see ControlPanel */ @@ -277,7 +275,8 @@ class ControlPanel : public Component, public Button::Listener, public Timer, public AccessClass, - public Label::Listener + public Label::Listener, + public ComboBox::Listener { public: @@ -352,6 +351,8 @@ private: ScopedPointer<UtilityButton> newDirectoryButton; ScopedPointer<ControlPanelButton> cpb; + ScopedPointer<ComboBox> recordSelector; + ScopedPointer<Label> prependText; ScopedPointer<Label> dateText; ScopedPointer<Label> appendText; @@ -366,6 +367,8 @@ private: void buttonClicked(Button* button); + void comboBoxChanged(ComboBox* combo); + bool initialize; /** Adds the RecordNode as a listener of the FilenameComponent @@ -391,6 +394,10 @@ private: Colour backgroundColour; + OwnedArray<RecordEngineManager> recordEngines; + ScopedPointer<UtilityButton> recordOptionsButton; + int lastEngineIndex; + }; diff --git a/Source/UI/CustomLookAndFeel.cpp b/Source/UI/CustomLookAndFeel.cpp index d193f87a9d1dcf2840093fd8411aa3236c8352ff..77c02117b46d85a58e170e270672c4fbc75c5c90 100755 --- a/Source/UI/CustomLookAndFeel.cpp +++ b/Source/UI/CustomLookAndFeel.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/UI/CustomLookAndFeel.h b/Source/UI/CustomLookAndFeel.h index e6107fe01982f0d6f5a1a74e8f753f272d445cd5..35b708ceb051db233848f05c9718573a0e2b1754 100755 --- a/Source/UI/CustomLookAndFeel.h +++ b/Source/UI/CustomLookAndFeel.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/UI/DataViewport.cpp b/Source/UI/DataViewport.cpp index d0b0331af8a8d690dfe8f3c74b64c63e1a693d02..f97a3849aec6c44c5734680248d45d36af8d21a1 100755 --- a/Source/UI/DataViewport.cpp +++ b/Source/UI/DataViewport.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -27,7 +27,7 @@ DataViewport::DataViewport() : TabbedComponent(TabbedButtonBar::TabsAtRight), - tabDepth(32), shutdown(false), tabIndex(0) + tabDepth(32), tabIndex(0), shutdown(false) { tabArray.clear(); @@ -74,7 +74,7 @@ int DataViewport::addTabToDataViewport(String name, Component* component, Generi editorArray.add(editor); - // std::cout << "Adding tab with index " << tabIndex << std::endl; + std::cout << "Adding tab with index " << tabIndex << std::endl; setCurrentTabIndex(tabArray.size()-1); @@ -97,8 +97,8 @@ void DataViewport::destroyTab(int index) int newIndex = tabArray.indexOf(index); tabArray.remove(newIndex); - editorArray.remove(newIndex); - + editorArray.remove(newIndex); // do this after the editor has been refreshed + removeTab(newIndex); if (tabArray.size() == 0) @@ -116,18 +116,12 @@ void DataViewport::disableConnectionToEditorViewport() void DataViewport::currentTabChanged(int newIndex, const String& newTabName) { - // OpenGLCanvas* canvas = (OpenGLCanvas*) getTabContentComponent(newIndex); - - // if (canvas != 0) { - // canvas->refreshState(); - // } - // std::cout << "CURRENT TAB CHANGED" << std::endl; //std::cout << "number of editors remaining: " << editorArray.size() << std::endl; if (!shutdown) { - getEditorViewport()->makeEditorVisible(editorArray[newIndex]); + //getEditorViewport()->makeEditorVisible(editorArray[newIndex]); getTopLevelComponent()->repaint(); } } diff --git a/Source/UI/DataViewport.h b/Source/UI/DataViewport.h index dfb5e44171dc1091cdafe07e8d1159e52996a0c6..8e73a2523c35ec41e46239417dfe02c8f36af4e9 100755 --- a/Source/UI/DataViewport.h +++ b/Source/UI/DataViewport.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/UI/EcubeDialogComponent.cpp b/Source/UI/EcubeDialogComponent.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8db0f41bcd338314cd6a8cfea3b2e4c2e9884d84 --- /dev/null +++ b/Source/UI/EcubeDialogComponent.cpp @@ -0,0 +1,419 @@ +/* + ============================================================================== + + This is an automatically generated GUI class created by the Introjucer! + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Created with Introjucer version: 3.1.0 + + ------------------------------------------------------------------------------ + + The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-13 by Raw Material Software Ltd. + + ============================================================================== +*/ + +//[Headers] You can add your own extra header files here... +//[/Headers] + +#include "EcubeDialogComponent.h" + + +//[MiscUserDefs] You can add your own user definitions and misc code here... +//[/MiscUserDefs] + +//============================================================================== +EcubeDialogComponent::EcubeDialogComponent () +{ + addAndMakeVisible (laAddressLabel = new Label ("Address Label", + TRANS("Network Address:"))); + laAddressLabel->setFont (Font (15.00f, Font::plain)); + laAddressLabel->setJustificationType (Justification::centredLeft); + laAddressLabel->setEditable (false, false, false); + laAddressLabel->setColour (TextEditor::textColourId, Colours::black); + laAddressLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + + addAndMakeVisible (bnOK = new TextButton ("OK button")); + bnOK->setButtonText (TRANS("Connect")); + bnOK->addListener (this); + + addAndMakeVisible (bnCancel = new TextButton ("Cancel Button")); + bnCancel->setButtonText (TRANS("Cancel")); + bnCancel->addListener (this); + + addAndMakeVisible (comboModule = new ComboBox ("Module selection combobox")); + comboModule->setTooltip (TRANS("Choose eCube module")); + comboModule->setEditableText (false); + comboModule->setJustificationType (Justification::centredLeft); + comboModule->setTextWhenNothingSelected (String::empty); + comboModule->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + comboModule->addItem (TRANS("Headstage(s)"), 1); + comboModule->addItem (TRANS("Panel Analog Input"), 2); + comboModule->addItem (TRANS("Panel Digital Input"), 3); + comboModule->addListener (this); + + addAndMakeVisible (labelModule = new Label ("Module selection label", + TRANS("Module"))); + labelModule->setFont (Font (15.00f, Font::plain)); + labelModule->setJustificationType (Justification::centredLeft); + labelModule->setEditable (false, false, false); + labelModule->setColour (TextEditor::textColourId, Colours::black); + labelModule->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + + addAndMakeVisible (cbNetworkAddress = new ComboBox ("Network Address ComboBox")); + cbNetworkAddress->setEditableText (true); + cbNetworkAddress->setJustificationType (Justification::centredLeft); + cbNetworkAddress->setTextWhenNothingSelected (String::empty); + cbNetworkAddress->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + cbNetworkAddress->addListener (this); + + addAndMakeVisible (groupComponent = new GroupComponent ("headstage group", + TRANS("Headstage selection"))); + + addAndMakeVisible (toggleHeadstage1 = new ToggleButton ("Headstage1 button")); + toggleHeadstage1->setButtonText (TRANS("Headstage 1")); + toggleHeadstage1->addListener (this); + + addAndMakeVisible (toggleHeadstage2 = new ToggleButton ("Headstage2 button")); + toggleHeadstage2->setButtonText (TRANS("Headstage 2")); + toggleHeadstage2->addListener (this); + + addAndMakeVisible (toggleHeadstage3 = new ToggleButton ("Headstage3 button")); + toggleHeadstage3->setButtonText (TRANS("Headstage 3")); + toggleHeadstage3->addListener (this); + + addAndMakeVisible (toggleHeadstage4 = new ToggleButton ("Headstage4 button")); + toggleHeadstage4->setButtonText (TRANS("Headstage 4")); + toggleHeadstage4->addListener (this); + + addAndMakeVisible (toggleHeadstage5 = new ToggleButton ("Headstage5 button")); + toggleHeadstage5->setButtonText (TRANS("Headstage 5")); + toggleHeadstage5->addListener (this); + + addAndMakeVisible (toggleHeadstage6 = new ToggleButton ("Headstage6 button")); + toggleHeadstage6->setButtonText (TRANS("Headstage 6")); + toggleHeadstage6->addListener (this); + + addAndMakeVisible (toggleHeadstage7 = new ToggleButton ("Headstage7 button")); + toggleHeadstage7->setButtonText (TRANS("Headstage 7")); + toggleHeadstage7->addListener (this); + + addAndMakeVisible (toggleHeadstage8 = new ToggleButton ("Headstage8 button")); + toggleHeadstage8->setButtonText (TRANS("Headstage 8")); + toggleHeadstage8->addListener (this); + + addAndMakeVisible (toggleHeadstage9 = new ToggleButton ("Headstage9 button")); + toggleHeadstage9->setButtonText (TRANS("Headstage 9")); + toggleHeadstage9->addListener (this); + + addAndMakeVisible (toggleHeadstage10 = new ToggleButton ("Headstage10 button")); + toggleHeadstage10->setButtonText (TRANS("Headstage 10")); + toggleHeadstage10->addListener (this); + toggleHeadstage10->setToggleState (true, dontSendNotification); + + + //[UserPreSize] + //[/UserPreSize] + + setSize (310, 320); + + + //[Constructor] You can add your own custom stuff here.. + //[/Constructor] +} + +EcubeDialogComponent::~EcubeDialogComponent() +{ + //[Destructor_pre]. You can add your own custom destruction code here.. + //[/Destructor_pre] + + laAddressLabel = nullptr; + bnOK = nullptr; + bnCancel = nullptr; + comboModule = nullptr; + labelModule = nullptr; + cbNetworkAddress = nullptr; + groupComponent = nullptr; + toggleHeadstage1 = nullptr; + toggleHeadstage2 = nullptr; + toggleHeadstage3 = nullptr; + toggleHeadstage4 = nullptr; + toggleHeadstage5 = nullptr; + toggleHeadstage6 = nullptr; + toggleHeadstage7 = nullptr; + toggleHeadstage8 = nullptr; + toggleHeadstage9 = nullptr; + toggleHeadstage10 = nullptr; + + + //[Destructor]. You can add your own custom destruction code here.. + //[/Destructor] +} + +//============================================================================== +void EcubeDialogComponent::paint (Graphics& g) +{ + //[UserPrePaint] Add your own custom painting code here.. + //[/UserPrePaint] + + g.fillAll (Colours::white); + + //[UserPaint] Add your own custom painting code here.. + //[/UserPaint] +} + +void EcubeDialogComponent::resized() +{ + laAddressLabel->setBounds (16, 8, 150, 24); + bnOK->setBounds (24, 280, 112, 24); + bnCancel->setBounds (160, 280, 87, 24); + comboModule->setBounds (80, 72, 192, 24); + labelModule->setBounds (16, 72, 72, 24); + cbNetworkAddress->setBounds (24, 40, 248, 24); + groupComponent->setBounds (8, 104, 288, 160); + toggleHeadstage1->setBounds (24, 128, 112, 24); + toggleHeadstage2->setBounds (24, 152, 112, 24); + toggleHeadstage3->setBounds (24, 176, 112, 24); + toggleHeadstage4->setBounds (24, 200, 112, 24); + toggleHeadstage5->setBounds (24, 224, 112, 24); + toggleHeadstage6->setBounds (160, 128, 112, 24); + toggleHeadstage7->setBounds (160, 152, 112, 24); + toggleHeadstage8->setBounds (160, 176, 112, 24); + toggleHeadstage9->setBounds (160, 200, 112, 24); + toggleHeadstage10->setBounds (160, 224, 112, 24); + //[UserResized] Add your own custom resize handling here.. + //[/UserResized] +} + +void EcubeDialogComponent::buttonClicked (Button* buttonThatWasClicked) +{ + //[UserbuttonClicked_Pre] + //[/UserbuttonClicked_Pre] + + if (buttonThatWasClicked == bnOK) + { + //[UserButtonCode_bnOK] -- add your button handler code here.. + DialogWindow* dw = findParentComponentOfClass<DialogWindow>(); + if (dw != nullptr) + { + dw->exitModalState(1); + } + //[/UserButtonCode_bnOK] + } + else if (buttonThatWasClicked == bnCancel) + { + //[UserButtonCode_bnCancel] -- add your button handler code here.. + DialogWindow* dw = findParentComponentOfClass<DialogWindow>(); + if (dw != nullptr) + { + dw->exitModalState(0); + } + //[/UserButtonCode_bnCancel] + } + else if (buttonThatWasClicked == toggleHeadstage1) + { + //[UserButtonCode_toggleHeadstage1] -- add your button handler code here.. + //[/UserButtonCode_toggleHeadstage1] + } + else if (buttonThatWasClicked == toggleHeadstage2) + { + //[UserButtonCode_toggleHeadstage2] -- add your button handler code here.. + //[/UserButtonCode_toggleHeadstage2] + } + else if (buttonThatWasClicked == toggleHeadstage3) + { + //[UserButtonCode_toggleHeadstage3] -- add your button handler code here.. + //[/UserButtonCode_toggleHeadstage3] + } + else if (buttonThatWasClicked == toggleHeadstage4) + { + //[UserButtonCode_toggleHeadstage4] -- add your button handler code here.. + //[/UserButtonCode_toggleHeadstage4] + } + else if (buttonThatWasClicked == toggleHeadstage5) + { + //[UserButtonCode_toggleHeadstage5] -- add your button handler code here.. + //[/UserButtonCode_toggleHeadstage5] + } + else if (buttonThatWasClicked == toggleHeadstage6) + { + //[UserButtonCode_toggleHeadstage6] -- add your button handler code here.. + //[/UserButtonCode_toggleHeadstage6] + } + else if (buttonThatWasClicked == toggleHeadstage7) + { + //[UserButtonCode_toggleHeadstage7] -- add your button handler code here.. + //[/UserButtonCode_toggleHeadstage7] + } + else if (buttonThatWasClicked == toggleHeadstage8) + { + //[UserButtonCode_toggleHeadstage8] -- add your button handler code here.. + //[/UserButtonCode_toggleHeadstage8] + } + else if (buttonThatWasClicked == toggleHeadstage9) + { + //[UserButtonCode_toggleHeadstage9] -- add your button handler code here.. + //[/UserButtonCode_toggleHeadstage9] + } + else if (buttonThatWasClicked == toggleHeadstage10) + { + //[UserButtonCode_toggleHeadstage10] -- add your button handler code here.. + //[/UserButtonCode_toggleHeadstage10] + } + + //[UserbuttonClicked_Post] + //[/UserbuttonClicked_Post] +} + +void EcubeDialogComponent::comboBoxChanged (ComboBox* comboBoxThatHasChanged) +{ + //[UsercomboBoxChanged_Pre] + //[/UsercomboBoxChanged_Pre] + + if (comboBoxThatHasChanged == comboModule) + { + //[UserComboBoxCode_comboModule] -- add your combo box handling code here.. + //[/UserComboBoxCode_comboModule] + } + else if (comboBoxThatHasChanged == cbNetworkAddress) + { + //[UserComboBoxCode_cbNetworkAddress] -- add your combo box handling code here.. + //[/UserComboBoxCode_cbNetworkAddress] + } + + //[UsercomboBoxChanged_Post] + //[/UsercomboBoxChanged_Post] +} + + + +//[MiscUserCode] You can add your own definitions of your custom methods or any other code here... +String EcubeDialogComponent::GetAddressValue() +{ + return cbNetworkAddress->getText(); +} + +String EcubeDialogComponent::GetModuleName() +{ + return comboModule->getText(); +} + +void EcubeDialogComponent::SetDeviceNames(const StringArray& names) +{ + for (int i = 0; i < names.size(); i++) + { + cbNetworkAddress->addItem(names[i], i+1); + } +} + +void EcubeDialogComponent::GetHeadstageSelection(bool hs[10]) +{ + for (int i = 0; i < 10; i++) + hs[i] = false; + if (toggleHeadstage1->getToggleState()) + hs[0] = true; + if (toggleHeadstage2->getToggleState()) + hs[1] = true; + if (toggleHeadstage3->getToggleState()) + hs[2] = true; + if (toggleHeadstage4->getToggleState()) + hs[3] = true; + if (toggleHeadstage5->getToggleState()) + hs[4] = true; + if (toggleHeadstage6->getToggleState()) + hs[5] = true; + if (toggleHeadstage7->getToggleState()) + hs[6] = true; + if (toggleHeadstage8->getToggleState()) + hs[7] = true; + if (toggleHeadstage9->getToggleState()) + hs[8] = true; + if (toggleHeadstage10->getToggleState()) + hs[9] = true; +} + +//[/MiscUserCode] + + +//============================================================================== +#if 0 +/* -- Introjucer information section -- + + This is where the Introjucer stores the metadata that describe this GUI layout, so + make changes in here at your peril! + +BEGIN_JUCER_METADATA + +<JUCER_COMPONENT documentType="Component" className="EcubeDialogComponent" componentName="" + parentClasses="public Component" constructorParams="" variableInitialisers="" + snapPixels="8" snapActive="1" snapShown="1" overlayOpacity="0.330" + fixedSize="0" initialWidth="310" initialHeight="320"> + <BACKGROUND backgroundColour="ffffffff"/> + <LABEL name="Address Label" id="598e4f972ee19e11" memberName="laAddressLabel" + virtualName="" explicitFocusOrder="0" pos="16 8 150 24" edTextCol="ff000000" + edBkgCol="0" labelText="Network Address:" editableSingleClick="0" + editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font" + fontsize="15" bold="0" italic="0" justification="33"/> + <TEXTBUTTON name="OK button" id="d46371ace0e2731f" memberName="bnOK" virtualName="" + explicitFocusOrder="0" pos="24 280 112 24" buttonText="Connect" + connectedEdges="0" needsCallback="1" radioGroupId="0"/> + <TEXTBUTTON name="Cancel Button" id="e57f56c355a79a42" memberName="bnCancel" + virtualName="" explicitFocusOrder="0" pos="160 280 87 24" buttonText="Cancel" + connectedEdges="0" needsCallback="1" radioGroupId="0"/> + <COMBOBOX name="Module selection combobox" id="937bd3c2684c1901" memberName="comboModule" + virtualName="" explicitFocusOrder="0" pos="80 72 192 24" tooltip="Choose eCube module" + editable="0" layout="33" items="Headstage(s) Panel Analog Input Panel Digital Input" + textWhenNonSelected="" textWhenNoItems="(no choices)"/> + <LABEL name="Module selection label" id="8db8f9471da84061" memberName="labelModule" + virtualName="" explicitFocusOrder="0" pos="16 72 72 24" edTextCol="ff000000" + edBkgCol="0" labelText="Module" editableSingleClick="0" editableDoubleClick="0" + focusDiscardsChanges="0" fontname="Default font" fontsize="15" + bold="0" italic="0" justification="33"/> + <COMBOBOX name="Network Address ComboBox" id="40e24a76fea3653c" memberName="cbNetworkAddress" + virtualName="" explicitFocusOrder="0" pos="24 40 248 24" editable="1" + layout="33" items="" textWhenNonSelected="" textWhenNoItems="(no choices)"/> + <GROUPCOMPONENT name="headstage group" id="8dee2bbe073f0f63" memberName="groupComponent" + virtualName="" explicitFocusOrder="0" pos="8 104 288 160" title="Headstage selection"/> + <TOGGLEBUTTON name="Headstage1 button" id="c735dad1514586" memberName="toggleHeadstage1" + virtualName="" explicitFocusOrder="0" pos="24 128 112 24" buttonText="Headstage 1" + connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/> + <TOGGLEBUTTON name="Headstage2 button" id="24f215ce96874781" memberName="toggleHeadstage2" + virtualName="" explicitFocusOrder="0" pos="24 152 112 24" buttonText="Headstage 2" + connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/> + <TOGGLEBUTTON name="Headstage3 button" id="f035e57b5cc87d27" memberName="toggleHeadstage3" + virtualName="" explicitFocusOrder="0" pos="24 176 112 24" buttonText="Headstage 3" + connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/> + <TOGGLEBUTTON name="Headstage4 button" id="6abc75f398861c5f" memberName="toggleHeadstage4" + virtualName="" explicitFocusOrder="0" pos="24 200 112 24" buttonText="Headstage 4" + connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/> + <TOGGLEBUTTON name="Headstage5 button" id="3c5bb9c9db62f1bb" memberName="toggleHeadstage5" + virtualName="" explicitFocusOrder="0" pos="24 224 112 24" buttonText="Headstage 5" + connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/> + <TOGGLEBUTTON name="Headstage6 button" id="306515c3b3ea7522" memberName="toggleHeadstage6" + virtualName="" explicitFocusOrder="0" pos="160 128 112 24" buttonText="Headstage 6" + connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/> + <TOGGLEBUTTON name="Headstage7 button" id="704c88cd419204b0" memberName="toggleHeadstage7" + virtualName="" explicitFocusOrder="0" pos="160 152 112 24" buttonText="Headstage 7" + connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/> + <TOGGLEBUTTON name="Headstage8 button" id="ba85df2f98d869d9" memberName="toggleHeadstage8" + virtualName="" explicitFocusOrder="0" pos="160 176 112 24" buttonText="Headstage 8" + connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/> + <TOGGLEBUTTON name="Headstage9 button" id="16256502b9f60cd4" memberName="toggleHeadstage9" + virtualName="" explicitFocusOrder="0" pos="160 200 112 24" buttonText="Headstage 9" + connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/> + <TOGGLEBUTTON name="Headstage10 button" id="fab4cbe0a6d27a36" memberName="toggleHeadstage10" + virtualName="" explicitFocusOrder="0" pos="160 224 112 24" buttonText="Headstage 10" + connectedEdges="0" needsCallback="1" radioGroupId="0" state="1"/> +</JUCER_COMPONENT> + +END_JUCER_METADATA +*/ +#endif + + +//[EndFile] You can add extra defines here... +//[/EndFile] diff --git a/Source/UI/EcubeDialogComponent.h b/Source/UI/EcubeDialogComponent.h new file mode 100644 index 0000000000000000000000000000000000000000..2f2da1addbd43d822d87bebfcc8a4201d7cdb40f --- /dev/null +++ b/Source/UI/EcubeDialogComponent.h @@ -0,0 +1,92 @@ +/* + ============================================================================== + + This is an automatically generated GUI class created by the Introjucer! + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Created with Introjucer version: 3.1.0 + + ------------------------------------------------------------------------------ + + The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-13 by Raw Material Software Ltd. + + ============================================================================== +*/ + +#ifndef __JUCE_HEADER_CDBC0626D3EB7016__ +#define __JUCE_HEADER_CDBC0626D3EB7016__ + +//[Headers] -- You can add your own extra header files here -- +#include "JuceHeader.h" +//[/Headers] + + + +//============================================================================== +/** + //[Comments] + An auto-generated component, created by the Introjucer. + + Describe your class and how it works here! + //[/Comments] +*/ +class EcubeDialogComponent : public Component, + public ButtonListener, + public ComboBoxListener +{ +public: + //============================================================================== + EcubeDialogComponent (); + ~EcubeDialogComponent(); + + //============================================================================== + //[UserMethods] -- You can add your own custom methods in this section. + String GetAddressValue(); + String GetModuleName(); + void SetDeviceNames(const StringArray& names); + void GetHeadstageSelection(bool hs[10]); + //[/UserMethods] + + void paint (Graphics& g); + void resized(); + void buttonClicked (Button* buttonThatWasClicked); + void comboBoxChanged (ComboBox* comboBoxThatHasChanged); + + + +private: + //[UserVariables] -- You can add your own custom variables in this section. + //[/UserVariables] + + //============================================================================== + ScopedPointer<Label> laAddressLabel; + ScopedPointer<TextButton> bnOK; + ScopedPointer<TextButton> bnCancel; + ScopedPointer<ComboBox> comboModule; + ScopedPointer<Label> labelModule; + ScopedPointer<ComboBox> cbNetworkAddress; + ScopedPointer<GroupComponent> groupComponent; + ScopedPointer<ToggleButton> toggleHeadstage1; + ScopedPointer<ToggleButton> toggleHeadstage2; + ScopedPointer<ToggleButton> toggleHeadstage3; + ScopedPointer<ToggleButton> toggleHeadstage4; + ScopedPointer<ToggleButton> toggleHeadstage5; + ScopedPointer<ToggleButton> toggleHeadstage6; + ScopedPointer<ToggleButton> toggleHeadstage7; + ScopedPointer<ToggleButton> toggleHeadstage8; + ScopedPointer<ToggleButton> toggleHeadstage9; + ScopedPointer<ToggleButton> toggleHeadstage10; + + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (EcubeDialogComponent) +}; + +//[EndFile] You can add extra defines here... +//[/EndFile] + +#endif // __JUCE_HEADER_CDBC0626D3EB7016__ diff --git a/Source/UI/EditorViewport.cpp b/Source/UI/EditorViewport.cpp index e7d0ecfba23f6deac4a5285d0dabe7e00255998d..f941881d0e3601371224ccf06e70fcbec2fc418c 100755 --- a/Source/UI/EditorViewport.cpp +++ b/Source/UI/EditorViewport.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -265,19 +265,21 @@ void EditorViewport::itemDropped(const SourceDetails& dragSourceDetails) editorArray[i]->deselect(); } - } + // Instructions below were enclosed into the if block by Michael Borisov + // To allow for errors during creation of editors, in which case activeEditor will be ==0 - insertionPoint = -1; // make sure all editors are left-justified - indexOfMovingComponent = -1; - refreshEditors(); + insertionPoint = -1; // make sure all editors are left-justified + indexOfMovingComponent = -1; + refreshEditors(); - somethingIsBeingDraggedOver = false; + somethingIsBeingDraggedOver = false; - getGraphViewer()->addNode(activeEditor); + getGraphViewer()->addNode(activeEditor); - repaint(); + repaint(); - currentId++; + currentId++; + } } } @@ -349,6 +351,7 @@ void EditorViewport::deleteNode(GenericEditor* editor) editor->setVisible(false); signalChainManager->updateVisibleEditors(editor, indexOfMovingComponent, insertionPoint, REMOVE); + getGraphViewer()->removeNode(editor); refreshEditors(); @@ -360,8 +363,6 @@ void EditorViewport::deleteNode(GenericEditor* editor) somethingIsBeingDraggedOver = false; - - repaint(); } diff --git a/Source/UI/EditorViewport.h b/Source/UI/EditorViewport.h index f79e08ea705dfc85f52cd969203a58cf7e9cb05d..1af46025a108b82219ba5ab17ae4e81385d0b8ce 100755 --- a/Source/UI/EditorViewport.h +++ b/Source/UI/EditorViewport.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -25,10 +25,10 @@ #define __EDITORVIEWPORT_H_80260F3F__ #include "../../JuceLibraryCode/JuceHeader.h" -#include "../Processors/ProcessorGraph.h" +#include "../Processors/ProcessorGraph/ProcessorGraph.h" #include "../Processors/Editors/GenericEditor.h" -#include "../Processors/Editors/SplitterEditor.h" -#include "../Processors/Editors/MergerEditor.h" +#include "../Processors/Splitter/SplitterEditor.h" +#include "../Processors/Merger/MergerEditor.h" #include "../AccessClass.h" #include "ControlPanel.h" diff --git a/Source/UI/EditorViewportButtons.cpp b/Source/UI/EditorViewportButtons.cpp index 41941caba1f6f58847bb508cdb8d2d5a9706a67f..7f990f49f38150c7e1cc348ad2c431dad7417421 100755 --- a/Source/UI/EditorViewportButtons.cpp +++ b/Source/UI/EditorViewportButtons.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/UI/EditorViewportButtons.h b/Source/UI/EditorViewportButtons.h index a2c0a5fd45a4f195af3c08dfeaab0dda006eece5..783f159fdd3725902171047a5616ffa0322c9293 100755 --- a/Source/UI/EditorViewportButtons.h +++ b/Source/UI/EditorViewportButtons.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/UI/InfoLabel.cpp b/Source/UI/InfoLabel.cpp index 2f31a165ae5539613e50caacda53cbb2fb5d2875..85811f96844cac40f31c11eeb8ac2679cf3080e7 100755 --- a/Source/UI/InfoLabel.cpp +++ b/Source/UI/InfoLabel.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/UI/InfoLabel.h b/Source/UI/InfoLabel.h index 2a7ae6d448ed8834cf6593b7a7b3dfd331c99b1f..63cc6275686f00d1b1d2704af3014996c819836a 100755 --- a/Source/UI/InfoLabel.h +++ b/Source/UI/InfoLabel.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/UI/MessageCenter.cpp b/Source/UI/MessageCenter.cpp deleted file mode 100755 index 5954d7375d525691cb3d426a5c6e2dd022cac01e..0000000000000000000000000000000000000000 --- a/Source/UI/MessageCenter.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - ------------------------------------------------------------------ - - This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys - - ------------------------------------------------------------------ - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - -*/ - -#include "MessageCenter.h" - -//--------------------------------------------------------------------- - -MessageCenter::MessageCenter() : - messageBackground(Colours::grey.withAlpha(0.5f)) -{ - - messageDisplayArea = new Label("Message Display Area","No new messages."); - - addAndMakeVisible(messageDisplayArea); - -} - -MessageCenter::~MessageCenter() -{ - -} - -void MessageCenter::paint(Graphics& g) -{ - - g.setColour(Colour(58,58,58)); - - g.fillRect(0, 0, getWidth(), getHeight()); - - g.setColour(messageBackground); - - g.fillRect(5, 5, getWidth()-10, getHeight()-10); - -} - -void MessageCenter::resized() -{ - if (messageDisplayArea != 0) - messageDisplayArea->setBounds(5,0,getWidth(),getHeight()); - -} - -void MessageCenter::actionListenerCallback(const String& message) -{ - - messageDisplayArea->setText(message, dontSendNotification); - - messageBackground = Colours::orange; - - repaint(); - -} \ No newline at end of file diff --git a/Source/UI/ProcessorList.cpp b/Source/UI/ProcessorList.cpp index 7b72f4285b1f4bcea6e345918504cb7201b9f391..8413b86988a020d1618d5575b387902901172918 100755 --- a/Source/UI/ProcessorList.cpp +++ b/Source/UI/ProcessorList.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -55,6 +55,11 @@ ProcessorList::ProcessorList() //sources->addSubItem(new ProcessorListItem("Signal Generator")); //sources->addSubItem(new ProcessorListItem("Custom FPGA")); sources->addSubItem(new ProcessorListItem("Rhythm FPGA")); +#if JUCE_WINDOWS // eCube module currently only available for Windows +#ifdef ECUBE_COMPILE + sources->addSubItem(new ProcessorListItem("eCube")); // Added by Michael Borisov +#endif +#endif sources->addSubItem(new ProcessorListItem("File Reader")); //sources->addSubItem(new ProcessorListItem("Network Events")); sources->addSubItem(new ProcessorListItem("Serial Port")); @@ -63,6 +68,7 @@ ProcessorList::ProcessorList() ProcessorListItem* filters = new ProcessorListItem("Filters"); filters->addSubItem(new ProcessorListItem("Bandpass Filter")); filters->addSubItem(new ProcessorListItem("Spike Detector")); + filters->addSubItem(new ProcessorListItem("Spike Sorter")); //filters->addSubItem(new ProcessorListItem("Resampler")); filters->addSubItem(new ProcessorListItem("Phase Detector")); //filters->addSubItem(new ProcessorListItem("Digital Ref")); diff --git a/Source/UI/ProcessorList.h b/Source/UI/ProcessorList.h index f78785a59e2666fd91d31162068e6900faf62e9d..4eac5ba805687a4f076d61968faa10e1d051b372 100755 --- a/Source/UI/ProcessorList.h +++ b/Source/UI/ProcessorList.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -41,8 +41,6 @@ class UIComponent; The ProcessorList be manually updated every time a new processor is created, and the names must match those recognized by the ProcessorGraph. - The ProcessorList is rendered using OpenGL and the FTGL font library. - @see EditorViewport, ProcessorGraph */ diff --git a/Source/UI/SignalChainManager.cpp b/Source/UI/SignalChainManager.cpp index 9773e3227b32e5aff1936506df51b5a1fa79f36c..9b4bc305670fc1a8f5373f7e73ddbc7b2760aa2b 100755 --- a/Source/UI/SignalChainManager.cpp +++ b/Source/UI/SignalChainManager.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/UI/SignalChainManager.h b/Source/UI/SignalChainManager.h index 672a6b69399b830ab92102415d875fda19f49b5b..84fac877fe1e388486500e276c4ce4c52ef14b9c 100755 --- a/Source/UI/SignalChainManager.h +++ b/Source/UI/SignalChainManager.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ diff --git a/Source/UI/UIComponent.cpp b/Source/UI/UIComponent.cpp index 5a8e90380c79b703f0db92a97ccd1a258813c947..ea50b16dd46551c5c5ba2dc18c93c4a3f4ec1df0 100755 --- a/Source/UI/UIComponent.cpp +++ b/Source/UI/UIComponent.cpp @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -29,7 +29,11 @@ UIComponent::UIComponent(MainWindow* mainWindow_, ProcessorGraph* pgraph, AudioC { - processorGraph->setUIComponent(this); + processorGraph->createDefaultNodes(); + + messageCenterEditor = (MessageCenterEditor*) processorGraph->getMessageCenter()->createEditor(); + addActionListener(messageCenterEditor); + addAndMakeVisible(messageCenterEditor); infoLabel = new InfoLabel(); std::cout << "Created info label." << std::endl; @@ -66,16 +70,12 @@ UIComponent::UIComponent(MainWindow* mainWindow_, ProcessorGraph* pgraph, AudioC processorList->setBounds(0,0,195,processorList->getTotalHeight()); std::cout << "Created filter list." << std::endl; - messageCenter = new MessageCenter(); - addActionListener(messageCenter); - addAndMakeVisible(messageCenter); - std::cout << "Created message center." << std::endl; setBounds(0,0,500,400); - processorGraph->setUIComponent(this); + processorGraph->setUIComponent(this); // update pointers processorList->setUIComponent(this); editorViewport->setUIComponent(this); dataViewport->setUIComponent(this); @@ -227,11 +227,11 @@ void UIComponent::resized() - if (messageCenter != 0) + if (messageCenterEditor != 0) { - messageCenter->setBounds(6,h-35,w-241,30); + messageCenterEditor->setBounds(6,h-35,w-241,30); if (h < 200) - messageCenter->setBounds(6,h-35+200-h,w-241,30); + messageCenterEditor->setBounds(6,h-35+200-h,w-241,30); // else // messageCenter->setVisible(true); } @@ -242,7 +242,7 @@ void UIComponent::resized() dataViewport->setVisible(false); editorViewport->setVisible(false); processorList->setVisible(false); - messageCenter->setVisible(false); + messageCenterEditor->setVisible(false); controlPanel->setVisible(false); editorViewportButton->setVisible(false); } diff --git a/Source/UI/UIComponent.h b/Source/UI/UIComponent.h index 66caa4d1e4322374ba0ba0d20350203ab18ed7ee..3445800e53047a6c917e100215de077ff2117419 100755 --- a/Source/UI/UIComponent.h +++ b/Source/UI/UIComponent.h @@ -2,7 +2,7 @@ ------------------------------------------------------------------ This file is part of the Open Ephys GUI - Copyright (C) 2013 Open Ephys + Copyright (C) 2014 Open Ephys ------------------------------------------------------------------ @@ -30,9 +30,9 @@ #include "ProcessorList.h" #include "EditorViewport.h" #include "DataViewport.h" -#include "MessageCenter.h" +#include "../Processors/MessageCenter/MessageCenterEditor.h" #include "GraphViewer.h" -#include "../Processors/ProcessorGraph.h" +#include "../Processors/ProcessorGraph/ProcessorGraph.h" #include "../Audio/AudioComponent.h" #include "../MainWindow.h" @@ -104,10 +104,10 @@ public: return controlPanel; } - /** Returns a pointer to the MessageCenter. */ - MessageCenter* getMessageCenter() + /** Returns a pointer to the MessageCenterEditor. */ + MessageCenterEditor* getMessageCenter() { - return messageCenter; + return messageCenterEditor; } /** Returns a pointer to the UIComponent. */ @@ -171,7 +171,7 @@ private: ScopedPointer<EditorViewportButton> editorViewportButton; ScopedPointer<ProcessorList> processorList; ScopedPointer<ControlPanel> controlPanel; - ScopedPointer<MessageCenter> messageCenter; + MessageCenterEditor* messageCenterEditor; // owned by ProcessorGraph ScopedPointer<InfoLabel> infoLabel; ScopedPointer<GraphViewer> graphViewer; diff --git a/open-ephys.jucer b/open-ephys.jucer index 7c8fa8f5b539758b940de887cbe86f417de8c4bc..26bc0c1769d2df23e0792448b91eea172293a83c 100644 --- a/open-ephys.jucer +++ b/open-ephys.jucer @@ -1,18 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> -<JUCERPROJECT id="ynSYIrr" name="open-ephys" projectType="guiapp" version="0.3.1" +<JUCERPROJECT id="ynSYIrr" name="open-ephys" projectType="guiapp" version="0.3.2" juceLinkage="amalg_multi" buildVST="1" buildRTAS="0" buildAU="1" pluginName="Juce Project" pluginDesc="Juce Project" pluginManufacturer="yourcompany" pluginManufacturerCode="Manu" pluginCode="Plug" pluginChannelConfigs="{1, 1}, {2, 2}" pluginIsSynth="0" pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="0" pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="JuceProjectAU" pluginAUViewClass="JuceProjectAU_V1" - pluginRTASCategory="" bundleIdentifier="org.open-ephys.gui" jucerVersion="3.0.0" + pluginRTASCategory="" bundleIdentifier="org.open-ephys.gui" jucerVersion="3.1.0" companyName="Open Ephys" userNotes="The Open Ephys GUI was designed to provide a fast and flexible interface for acquiring, processing, and visualizing data from extracellular electrodes. See open-ephys.org for more information." includeBinaryInAppConfig="1"> <EXPORTFORMATS> <XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK" - extraLinkerFlags="" objCExtraSuffix="fea2mT" externalLibraries=""> + extraLinkerFlags="-lhdf5 -lhdf5_cpp" objCExtraSuffix="fea2mT"> <CONFIGURATIONS> <CONFIGURATION name="Debug" isDebug="1" optimisation="3" targetName="open-ephys" osxSDK="default" osxCompatibility="default" osxArchitecture="default"/> @@ -37,8 +37,8 @@ <MODULEPATH id="juce_audio_basics" path="JuceLibraryCode/modules"/> </MODULEPATHS> </XCODE_MAC> - <LINUX_MAKE targetFolder="Builds/Linux" vstFolder="~/SDKs/vstsdk2.4" juceFolder="JuceLibraryCode" - extraLinkerFlags="-pg -ldl -lXext -lGLU -lhdf5" extraCompilerFlags="-export-dynamic -g -pg -std=c++0x"> + <LINUX_MAKE targetFolder="Builds/Linux" vstFolder="~/SDKs/vstsdk2.4" extraLinkerFlags="-pg -ldl -lXext -lGLU -lhdf5 -lhdf5_cpp" + extraCompilerFlags="-export-dynamic -g -pg -std=c++0x"> <CONFIGURATIONS> <CONFIGURATION name="Debug" isDebug="1" optimisation="3" targetName="open-ephys" libraryPath="/usr/X11R6/lib/ /usr/local/include " headerPath=""/> @@ -64,24 +64,24 @@ </MODULEPATHS> </LINUX_MAKE> <VS2012 targetFolder="Builds/VisualStudio2012" libraryType="1" extraDefs="NOMINMAX" - externalLibraries="setupapi.lib opengl32.lib glu32.lib"> + externalLibraries="setupapi.lib opengl32.lib glu32.lib hdf5.lib hdf5_cpp.lib"> <CONFIGURATIONS> <CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" isDebug="1" optimisation="1" targetName="open-ephys" binaryPath="Builds\VisualStudio2012\Debug\bin" - headerPath="../../Resources/Google Protocols/src" libraryPath="../../Resources/ZeroMQ/lib_x86 ../../Resources/Google Protocols/vsprojects/Debug" - postbuildCommand="copy ..\..\Resources\DLLs\okFrontPanel.dll .\Debug\bin"/> + headerPath="../../Resources/windows-libs/HDF5/include" libraryPath="../../Resources/windows-libs/HDF5/lib/x86" + postbuildCommand="copy "..\..\Resources\DLLs\*.dll" "$(OutDir)""/> <CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" isDebug="0" optimisation="3" targetName="open-ephys" binaryPath="Builds\VisualStudio2012\Release\bin" - headerPath="../../Resources/Google Protocols/src" libraryPath="../../Resources/ZeroMQ/lib_x86 ../../Resources/Google Protocols/vsprojects/Release" - postbuildCommand="copy ..\..\Resources\DLLs\okFrontPanel.dll .\Release\bin"/> + headerPath="../../Resources/windows-libs/HDF5/include" libraryPath="../../Resources/windows-libs/HDF5/lib/x86" + postbuildCommand="copy "..\..\Resources\DLLs\*.dll" "$(OutDir)""/> <CONFIGURATION name="Debug64" winWarningLevel="2" generateManifest="1" winArchitecture="x64" isDebug="1" optimisation="1" targetName="open-ephys" binaryPath="Builds\VisualStudio2012\Debug64\bin" - headerPath="../../Resources/Google Protocols/src" libraryPath="../../Resources/ZeroMQ/lib_x64 ../../Resources/Google Protocols/vsprojects/x64/Debug" - postbuildCommand="copy ..\..\Resources\DLLs\Win64\okFrontPanel.dll .\Debug64\bin"/> + headerPath="../../Resources/windows-libs/HDF5/include" libraryPath="../../Resources/windows-libs/HDF5/lib/x64" + postbuildCommand="copy "..\..\Resources\DLLs\Win64\*.dll" "$(OutDir)""/> <CONFIGURATION name="Release64" winWarningLevel="2" generateManifest="1" winArchitecture="x64" isDebug="0" optimisation="3" targetName="open-ephys" binaryPath="Builds\VisualStudio2012\Release64\bin" - headerPath="../../Resources/Google Protocols/src" libraryPath="../../Resources/ZeroMQ/lib_x64 ../../Resources/Google Protocols/vsprojects/x64/Release" - postbuildCommand="copy ..\..\Resources\DLLs\Win64\okFrontPanel.dll .\Release64\bin"/> + headerPath="../../Resources/windows-libs/HDF5/include" libraryPath="../../Resources/windows-libs/HDF5/lib/x64" + postbuildCommand="copy "..\..\Resources\DLLs\Win64\*.dll" "$(OutDir)""/> </CONFIGURATIONS> <MODULEPATHS> <MODULEPATH id="juce_video" path="JuceLibraryCode/modules"/> @@ -101,6 +101,40 @@ <MODULEPATH id="juce_audio_basics" path="JuceLibraryCode/modules"/> </MODULEPATHS> </VS2012> + <VS2013 targetFolder="Builds/VisualStudio2013" externalLibraries="setupapi.lib opengl32.lib glu32.lib hdf5.lib hdf5_cpp.lib" + extraDefs="NOMINMAX"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" + isDebug="1" optimisation="1" targetName="open-ephys" binaryPath="Builds\VisualStudio2013\Debug\bin" + headerPath="$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\include ../../Resources/Google Protocols/src " + libraryPath="../../Resources/ZeroMQ/lib_x86 ../../Resources/Google Protocols/vsprojects/Debug $(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\lib" + wholeProgramOptimisation="1" postbuildCommand="call "$(SolutionDir)\copydlls.cmd" "$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\bin" "$(SolutionDir)\..\..\Resources\DLLs" "$(OutDir)"" + fastMath="1"/> + <CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" + isDebug="0" optimisation="3" targetName="open-ephys" binaryPath="Builds\VisualStudio2013\Release\bin" + headerPath="$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\include ../../Resources/Google Protocols/src" + libraryPath="$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\lib ../../Resources/ZeroMQ/lib_x86 ../../Resources/Google Protocols/vsprojects/Release" + postbuildCommand="call "$(SolutionDir)\copydlls.cmd" "$(MSBuildExtensionsPath32)\..\HDF_Group\HDF5\1.8.13\bin" "$(SolutionDir)\..\..\Resources\DLLs" "$(OutDir)"" + fastMath="1"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_video" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_opengl" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_gui_extra" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_gui_basics" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_gui_audio" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_graphics" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_events" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_data_structures" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_cryptography" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_core" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_audio_utils" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_audio_processors" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_audio_formats" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_audio_devices" path="JuceLibraryCode/modules"/> + <MODULEPATH id="juce_audio_basics" path="JuceLibraryCode/modules"/> + </MODULEPATHS> + </VS2013> </EXPORTFORMATS> <MAINGROUP id="h3HbSTV" name="open-ephys"> <GROUP id="0wpTCpt" name="Resources"> @@ -227,52 +261,6 @@ <FILE id="5XGl6EX" name="PracticalSocket.h" compile="0" resource="0" file="Source/Network/PracticalSocket.h"/> </GROUP> - <GROUP id="ZFZoGrT" name="Dsp"> - <FILE id="mUwiufK" name="Bessel.cpp" compile="1" resource="0" file="Source/Dsp/Bessel.cpp"/> - <FILE id="vZ6Kudo" name="Bessel.h" compile="0" resource="0" file="Source/Dsp/Bessel.h"/> - <FILE id="vwycpbo" name="Biquad.cpp" compile="1" resource="0" file="Source/Dsp/Biquad.cpp"/> - <FILE id="a732gXS" name="Biquad.h" compile="0" resource="0" file="Source/Dsp/Biquad.h"/> - <FILE id="0W6qAwa" name="Butterworth.cpp" compile="1" resource="0" - file="Source/Dsp/Butterworth.cpp"/> - <FILE id="UV5QzX8" name="Butterworth.h" compile="0" resource="0" file="Source/Dsp/Butterworth.h"/> - <FILE id="KClKE8" name="Cascade.cpp" compile="1" resource="0" file="Source/Dsp/Cascade.cpp"/> - <FILE id="ylsuRNY" name="Cascade.h" compile="0" resource="0" file="Source/Dsp/Cascade.h"/> - <FILE id="o3iAh3a" name="ChebyshevI.cpp" compile="1" resource="0" file="Source/Dsp/ChebyshevI.cpp"/> - <FILE id="WyXprJ9" name="ChebyshevI.h" compile="0" resource="0" file="Source/Dsp/ChebyshevI.h"/> - <FILE id="b4qha7" name="ChebyshevII.cpp" compile="1" resource="0" file="Source/Dsp/ChebyshevII.cpp"/> - <FILE id="LcWDNOk" name="ChebyshevII.h" compile="0" resource="0" file="Source/Dsp/ChebyshevII.h"/> - <FILE id="XDyWZQQ" name="Common.h" compile="0" resource="0" file="Source/Dsp/Common.h"/> - <FILE id="49hU2ny" name="Custom.cpp" compile="1" resource="0" file="Source/Dsp/Custom.cpp"/> - <FILE id="xPXCA6M" name="Custom.h" compile="0" resource="0" file="Source/Dsp/Custom.h"/> - <FILE id="2EpjlI" name="Design.cpp" compile="1" resource="0" file="Source/Dsp/Design.cpp"/> - <FILE id="ptQmM0r" name="Design.h" compile="0" resource="0" file="Source/Dsp/Design.h"/> - <FILE id="fAPODFz" name="Documentation.cpp" compile="1" resource="0" - file="Source/Dsp/Documentation.cpp"/> - <FILE id="JAPeScN" name="Dsp.h" compile="0" resource="0" file="Source/Dsp/Dsp.h"/> - <FILE id="tr30OGq" name="Elliptic.cpp" compile="1" resource="0" file="Source/Dsp/Elliptic.cpp"/> - <FILE id="qkR4YNx" name="Elliptic.h" compile="0" resource="0" file="Source/Dsp/Elliptic.h"/> - <FILE id="XXTYoH9" name="Filter.cpp" compile="1" resource="0" file="Source/Dsp/Filter.cpp"/> - <FILE id="ZYh8Cn" name="Filter.h" compile="0" resource="0" file="Source/Dsp/Filter.h"/> - <FILE id="fzaQLV" name="Layout.h" compile="0" resource="0" file="Source/Dsp/Layout.h"/> - <FILE id="1rzxhtw" name="Legendre.cpp" compile="1" resource="0" file="Source/Dsp/Legendre.cpp"/> - <FILE id="vMzVy3f" name="Legendre.h" compile="0" resource="0" file="Source/Dsp/Legendre.h"/> - <FILE id="Xgckbu9" name="MathSupplement.h" compile="0" resource="0" - file="Source/Dsp/MathSupplement.h"/> - <FILE id="1skPBI3" name="Param.cpp" compile="1" resource="0" file="Source/Dsp/Param.cpp"/> - <FILE id="AJKO8Gc" name="Params.h" compile="0" resource="0" file="Source/Dsp/Params.h"/> - <FILE id="m5Ywyi7" name="PoleFilter.cpp" compile="1" resource="0" file="Source/Dsp/PoleFilter.cpp"/> - <FILE id="yghcXOB" name="PoleFilter.h" compile="0" resource="0" file="Source/Dsp/PoleFilter.h"/> - <FILE id="HxU4He0" name="RBJ.cpp" compile="1" resource="0" file="Source/Dsp/RBJ.cpp"/> - <FILE id="LzKYXte" name="RBJ.h" compile="0" resource="0" file="Source/Dsp/RBJ.h"/> - <FILE id="KNsCh3Q" name="RootFinder.cpp" compile="1" resource="0" file="Source/Dsp/RootFinder.cpp"/> - <FILE id="5FY4DiP" name="RootFinder.h" compile="0" resource="0" file="Source/Dsp/RootFinder.h"/> - <FILE id="CZlsp9w" name="SmoothedFilter.h" compile="0" resource="0" - file="Source/Dsp/SmoothedFilter.h"/> - <FILE id="rj1CVK" name="State.cpp" compile="1" resource="0" file="Source/Dsp/State.cpp"/> - <FILE id="floABAJ" name="State.h" compile="0" resource="0" file="Source/Dsp/State.h"/> - <FILE id="Tnibh38" name="Types.h" compile="0" resource="0" file="Source/Dsp/Types.h"/> - <FILE id="74WHAi" name="Utilities.h" compile="0" resource="0" file="Source/Dsp/Utilities.h"/> - </GROUP> <GROUP id="gRFzu0" name="Audio"> <FILE id="2vKx2R" name="AudioComponent.cpp" compile="1" resource="0" file="Source/Audio/AudioComponent.cpp"/> @@ -280,209 +268,49 @@ file="Source/Audio/AudioComponent.h"/> </GROUP> <GROUP id="yQmqZWk" name="Processors"> - <FILE id="Yj1umv" name="SerialInput.cpp" compile="1" resource="0" file="Source/Processors/SerialInput.cpp"/> - <FILE id="TSsuVv" name="SerialInput.h" compile="0" resource="0" file="Source/Processors/SerialInput.h"/> - <FILE id="M6nCIs" name="FileReader.cpp" compile="1" resource="0" file="Source/Processors/FileReader.cpp"/> - <FILE id="VU1bQ0" name="FileReader.h" compile="0" resource="0" file="Source/Processors/FileReader.h"/> - <FILE id="e7QoyI" name="ChannelMappingNode.cpp" compile="1" resource="0" - file="Source/Processors/ChannelMappingNode.cpp"/> - <FILE id="RzEj1s" name="ChannelMappingNode.h" compile="0" resource="0" - file="Source/Processors/ChannelMappingNode.h"/> - <FILE id="iCR52Z" name="PulsePalOutput.cpp" compile="1" resource="0" - file="Source/Processors/PulsePalOutput.cpp"/> - <FILE id="P6I3cq" name="PulsePalOutput.h" compile="0" resource="0" - file="Source/Processors/PulsePalOutput.h"/> - <FILE id="I3M3irE" name="ReferenceNode.cpp" compile="1" resource="0" - file="Source/Processors/ReferenceNode.cpp"/> - <FILE id="mkZIyij" name="ReferenceNode.h" compile="0" resource="0" - file="Source/Processors/ReferenceNode.h"/> - <FILE id="TBFDWIC" name="PhaseDetector.cpp" compile="1" resource="0" - file="Source/Processors/PhaseDetector.cpp"/> - <FILE id="M8cJMPk" name="PhaseDetector.h" compile="0" resource="0" - file="Source/Processors/PhaseDetector.h"/> - <FILE id="absuYrU" name="AudioResamplingNode.cpp" compile="1" resource="0" - file="Source/Processors/AudioResamplingNode.cpp"/> - <FILE id="V8uFwVV" name="AudioResamplingNode.h" compile="0" resource="0" - file="Source/Processors/AudioResamplingNode.h"/> - <FILE id="oYWM1J" name="Channel.cpp" compile="1" resource="0" file="Source/Processors/Channel.cpp"/> - <FILE id="oBVEMRc" name="Channel.h" compile="0" resource="0" file="Source/Processors/Channel.h"/> - <GROUP id="gFSbZKw" name="Serial"> - <FILE id="PHwlqi" name="PulsePal.cpp" compile="1" resource="0" file="Source/Processors/Serial/PulsePal.cpp"/> - <FILE id="R4XRyB" name="PulsePal.h" compile="0" resource="0" file="Source/Processors/Serial/PulsePal.h"/> - <FILE id="3t2ez3c" name="ofArduino.cpp" compile="1" resource="0" file="Source/Processors/Serial/ofArduino.cpp"/> - <FILE id="bXASAoT" name="ofArduino.h" compile="0" resource="0" file="Source/Processors/Serial/ofArduino.h"/> - <FILE id="hNTT1i1" name="ofConstants.h" compile="0" resource="0" file="Source/Processors/Serial/ofConstants.h"/> - <FILE id="F97Ylmz" name="ofSerial.cpp" compile="1" resource="0" file="Source/Processors/Serial/ofSerial.cpp"/> - <FILE id="wV1xn3Z" name="ofSerial.h" compile="0" resource="0" file="Source/Processors/Serial/ofSerial.h"/> + <GROUP id="{447899E6-3974-53D0-5588-79643E8F5CA3}" name="ArduinoOutput"> + <FILE id="Ucs5gf" name="ArduinoOutput.cpp" compile="1" resource="0" + file="Source/Processors/ArduinoOutput/ArduinoOutput.cpp"/> + <FILE id="NnPKUY" name="ArduinoOutput.h" compile="0" resource="0" file="Source/Processors/ArduinoOutput/ArduinoOutput.h"/> + <FILE id="V4rkxc" name="ArduinoOutputEditor.cpp" compile="1" resource="0" + file="Source/Processors/ArduinoOutput/ArduinoOutputEditor.cpp"/> + <FILE id="WWnk0U" name="ArduinoOutputEditor.h" compile="0" resource="0" + file="Source/Processors/ArduinoOutput/ArduinoOutputEditor.h"/> </GROUP> - <FILE id="rlxg06" name="EventDetector.cpp" compile="1" resource="0" - file="Source/Processors/EventDetector.cpp"/> - <FILE id="LWuAoXl" name="EventDetector.h" compile="0" resource="0" - file="Source/Processors/EventDetector.h"/> - <FILE id="caGBzB" name="FPGAOutput.cpp" compile="1" resource="0" file="Source/Processors/FPGAOutput.cpp"/> - <FILE id="IUvIxV7" name="FPGAOutput.h" compile="0" resource="0" file="Source/Processors/FPGAOutput.h"/> - <FILE id="wBm4y2" name="ArduinoOutput.cpp" compile="1" resource="0" - file="Source/Processors/ArduinoOutput.cpp"/> - <FILE id="1sbSwS7" name="ArduinoOutput.h" compile="0" resource="0" - file="Source/Processors/ArduinoOutput.h"/> - <FILE id="pQaYQiE" name="Parameter.cpp" compile="1" resource="0" file="Source/Processors/Parameter.cpp"/> - <FILE id="0jxvc4H" name="Parameter.h" compile="0" resource="0" file="Source/Processors/Parameter.h"/> - <FILE id="arRy5R" name="SpikeDisplayNode.cpp" compile="1" resource="0" - file="Source/Processors/SpikeDisplayNode.cpp"/> - <FILE id="VwDxj" name="SpikeDisplayNode.h" compile="0" resource="0" - file="Source/Processors/SpikeDisplayNode.h"/> - <FILE id="Poqus0b" name="WiFiOutput.cpp" compile="1" resource="0" file="Source/Processors/WiFiOutput.cpp"/> - <FILE id="IklsJpw" name="WiFiOutput.h" compile="0" resource="0" file="Source/Processors/WiFiOutput.h"/> - <FILE id="ZuMpSio" name="LfpDisplayNode.cpp" compile="1" resource="0" - file="Source/Processors/LfpDisplayNode.cpp"/> - <FILE id="VynGpEg" name="LfpDisplayNode.h" compile="0" resource="0" - file="Source/Processors/LfpDisplayNode.h"/> - <GROUP id="Enz7QFy" name="Utilities"> - <FILE id="llkb8mQ" name="RecordControl.cpp" compile="1" resource="0" - file="Source/Processors/Utilities/RecordControl.cpp"/> - <FILE id="jRqpt5T" name="RecordControl.h" compile="0" resource="0" - file="Source/Processors/Utilities/RecordControl.h"/> - <FILE id="qt6uLka" name="Merger.cpp" compile="1" resource="0" file="Source/Processors/Utilities/Merger.cpp"/> - <FILE id="XNRlWg8" name="Merger.h" compile="0" resource="0" file="Source/Processors/Utilities/Merger.h"/> - <FILE id="YMFH4P2" name="Splitter.cpp" compile="1" resource="0" file="Source/Processors/Utilities/Splitter.cpp"/> - <FILE id="DXYynnz" name="Splitter.h" compile="0" resource="0" file="Source/Processors/Utilities/Splitter.h"/> + <GROUP id="{1932782D-9D00-9B76-92DC-94E7D42BF0D2}" name="AudioNode"> + <FILE id="TV4cOO" name="AudioEditor.cpp" compile="1" resource="0" file="Source/Processors/AudioNode/AudioEditor.cpp"/> + <FILE id="erBMrA" name="AudioEditor.h" compile="0" resource="0" file="Source/Processors/AudioNode/AudioEditor.h"/> + <FILE id="jClaJf" name="AudioNode.cpp" compile="1" resource="0" file="Source/Processors/AudioNode/AudioNode.cpp"/> + <FILE id="LHkdoG" name="AudioNode.h" compile="0" resource="0" file="Source/Processors/AudioNode/AudioNode.h"/> </GROUP> - <GROUP id="W4eqkOy" name="Visualization"> - <FILE id="ajAJi" name="SpikeObject.cpp" compile="1" resource="0" file="Source/Processors/Visualization/SpikeObject.cpp"/> - <FILE id="xqF5zL" name="SpikeObject.h" compile="0" resource="0" file="Source/Processors/Visualization/SpikeObject.h"/> - <FILE id="jGEqDp" name="SpikeDisplayCanvas.cpp" compile="1" resource="0" - file="Source/Processors/Visualization/SpikeDisplayCanvas.cpp"/> - <FILE id="LVHMu2" name="SpikeDisplayCanvas.h" compile="0" resource="0" - file="Source/Processors/Visualization/SpikeDisplayCanvas.h"/> - <FILE id="yDPZGpt" name="Visualizer.h" compile="0" resource="0" file="Source/Processors/Visualization/Visualizer.h"/> - <FILE id="BX1Vj3V" name="DataWindow.cpp" compile="1" resource="0" file="Source/Processors/Visualization/DataWindow.cpp"/> - <FILE id="l2VKLuP" name="DataWindow.h" compile="0" resource="0" file="Source/Processors/Visualization/DataWindow.h"/> - <FILE id="2rXPco7" name="LfpDisplayCanvas.cpp" compile="1" resource="0" - file="Source/Processors/Visualization/LfpDisplayCanvas.cpp"/> - <FILE id="18BC8qM" name="LfpDisplayCanvas.h" compile="0" resource="0" - file="Source/Processors/Visualization/LfpDisplayCanvas.h"/> - </GROUP> - <FILE id="533rUXO" name="SpikeDetector.cpp" compile="1" resource="0" - file="Source/Processors/SpikeDetector.cpp"/> - <FILE id="jIX00WN" name="SpikeDetector.h" compile="0" resource="0" - file="Source/Processors/SpikeDetector.h"/> - <FILE id="gZRZq2O" name="AudioNode.cpp" compile="1" resource="0" file="Source/Processors/AudioNode.cpp"/> - <FILE id="ZPSmLKn" name="AudioNode.h" compile="0" resource="0" file="Source/Processors/AudioNode.h"/> - <FILE id="hGnGAjh" name="EventNode.cpp" compile="1" resource="0" file="Source/Processors/EventNode.cpp"/> - <FILE id="dUtRN6" name="EventNode.h" compile="0" resource="0" file="Source/Processors/EventNode.h"/> - <GROUP id="AqvwO6w" name="Editors"> - <FILE id="jQo6Ff" name="LfpTriggeredAverageEditor.cpp" compile="1" - resource="0" file="Source/Processors/Editors/LfpTriggeredAverageEditor.cpp"/> - <FILE id="RaQC38" name="LfpTriggeredAverageEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/LfpTriggeredAverageEditor.h"/> - <FILE id="D3eN0G" name="SerialInputEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/SerialInputEditor.cpp"/> - <FILE id="iG39Gh" name="SerialInputEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/SerialInputEditor.h"/> - <FILE id="E2PXvz" name="ElectrodeButtons.cpp" compile="1" resource="0" - file="Source/Processors/Editors/ElectrodeButtons.cpp"/> - <FILE id="yriJOG" name="ElectrodeButtons.h" compile="0" resource="0" - file="Source/Processors/Editors/ElectrodeButtons.h"/> - <FILE id="g1ki17" name="ChannelMappingEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/ChannelMappingEditor.cpp"/> - <FILE id="KLhI0Q" name="ChannelMappingEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/ChannelMappingEditor.h"/> - <FILE id="PobvRC" name="FileReaderEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/FileReaderEditor.cpp"/> - <FILE id="hIDHaX" name="FileReaderEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/FileReaderEditor.h"/> - <FILE id="Vy98eh" name="PhaseDetectorEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/PhaseDetectorEditor.cpp"/> - <FILE id="vuvcfO" name="PhaseDetectorEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/PhaseDetectorEditor.h"/> - <FILE id="NHDoDu" name="PulsePalOutputEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/PulsePalOutputEditor.cpp"/> - <FILE id="dVyt6h" name="PulsePalOutputEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/PulsePalOutputEditor.h"/> - <FILE id="Xy7AJu" name="RHD2000Editor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/RHD2000Editor.cpp"/> - <FILE id="TKVa9h" name="RHD2000Editor.h" compile="0" resource="0" file="Source/Processors/Editors/RHD2000Editor.h"/> - <FILE id="3P8oDf3" name="RecordControlEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/RecordControlEditor.cpp"/> - <FILE id="hFb27ev" name="RecordControlEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/RecordControlEditor.h"/> - <FILE id="tz64eOn" name="ReferenceNodeEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/ReferenceNodeEditor.cpp"/> - <FILE id="sxR3wcq" name="ReferenceNodeEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/ReferenceNodeEditor.h"/> - <FILE id="vcZeT2R" name="ResamplingNodeEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/ResamplingNodeEditor.cpp"/> - <FILE id="pMjiz6m" name="ResamplingNodeEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/ResamplingNodeEditor.h"/> - <FILE id="mvixd58" name="FPGAOutputEditor.cpp" compile="1" resource="1" - file="Source/Processors/Editors/FPGAOutputEditor.cpp"/> - <FILE id="phTDDOR" name="FPGAOutputEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/FPGAOutputEditor.h"/> - <FILE id="oYeB8Hh" name="ArduinoOutputEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/ArduinoOutputEditor.cpp"/> - <FILE id="xfwOAJs" name="ArduinoOutputEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/ArduinoOutputEditor.h"/> - <FILE id="rZGNxjv" name="ChannelSelector.cpp" compile="1" resource="0" - file="Source/Processors/Editors/ChannelSelector.cpp"/> - <FILE id="Yga4B3Z" name="ChannelSelector.h" compile="0" resource="0" - file="Source/Processors/Editors/ChannelSelector.h"/> - <FILE id="qWhyk9h" name="ParameterEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/ParameterEditor.cpp"/> - <FILE id="3PkZxza" name="ParameterEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/ParameterEditor.h"/> - <FILE id="s5YUmi" name="SpikeDisplayEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/SpikeDisplayEditor.cpp"/> - <FILE id="EE43GV" name="SpikeDisplayEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/SpikeDisplayEditor.h"/> - <FILE id="2XqqPOS" name="VisualizerEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/VisualizerEditor.cpp"/> - <FILE id="CUHGPJF" name="VisualizerEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/VisualizerEditor.h"/> - <FILE id="bsIZbuu" name="MergerEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/MergerEditor.cpp"/> - <FILE id="vfmEY5L" name="MergerEditor.h" compile="0" resource="0" file="Source/Processors/Editors/MergerEditor.h"/> - <FILE id="i2MR4pC" name="ImageIcon.cpp" compile="1" resource="0" file="Source/Processors/Editors/ImageIcon.cpp"/> - <FILE id="N8r8D18" name="ImageIcon.h" compile="0" resource="0" file="Source/Processors/Editors/ImageIcon.h"/> - <FILE id="mLd64ww" name="WiFiOutputEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/WiFiOutputEditor.cpp"/> - <FILE id="qunHBGe" name="WiFiOutputEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/WiFiOutputEditor.h"/> - <FILE id="5DPzIoS" name="EventNodeEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/EventNodeEditor.cpp"/> - <FILE id="gva5me" name="EventNodeEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/EventNodeEditor.h"/> - <FILE id="OJKuulJ" name="SignalGeneratorEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/SignalGeneratorEditor.cpp"/> - <FILE id="JhVBo3n" name="SignalGeneratorEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/SignalGeneratorEditor.h"/> - <FILE id="cTebrMp" name="LfpDisplayEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/LfpDisplayEditor.cpp"/> - <FILE id="ru5zWWN" name="LfpDisplayEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/LfpDisplayEditor.h"/> - <FILE id="ErsHzHU" name="SourceNodeEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/SourceNodeEditor.cpp"/> - <FILE id="wMP6rcZ" name="SourceNodeEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/SourceNodeEditor.h"/> - <FILE id="HZXZN8Z" name="SplitterEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/SplitterEditor.cpp"/> - <FILE id="LWp4vf" name="SplitterEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/SplitterEditor.h"/> - <FILE id="UCf00eh" name="SpikeDetectorEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/SpikeDetectorEditor.cpp"/> - <FILE id="Q8ftPSA" name="SpikeDetectorEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/SpikeDetectorEditor.h"/> - <FILE id="Nw6Lpmq" name="AudioEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/AudioEditor.cpp"/> - <FILE id="atkKPmM" name="AudioEditor.h" compile="0" resource="0" file="Source/Processors/Editors/AudioEditor.h"/> - <FILE id="4sHjKNc" name="FilterEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/FilterEditor.cpp"/> - <FILE id="A2OQdsN" name="FilterEditor.h" compile="0" resource="0" file="Source/Processors/Editors/FilterEditor.h"/> - <FILE id="9sKH5cL" name="GenericEditor.cpp" compile="1" resource="0" - file="Source/Processors/Editors/GenericEditor.cpp"/> - <FILE id="gETPJeW" name="GenericEditor.h" compile="0" resource="0" - file="Source/Processors/Editors/GenericEditor.h"/> + <GROUP id="{ED1C2AFE-2ED9-D835-532A-4D6C558C73E7}" name="AudioResamplingNode"> + <FILE id="YStaN1" name="AudioResamplingNode.cpp" compile="1" resource="0" + file="Source/Processors/AudioResamplingNode/AudioResamplingNode.cpp"/> + <FILE id="pnFZDY" name="AudioResamplingNode.h" compile="0" resource="0" + file="Source/Processors/AudioResamplingNode/AudioResamplingNode.h"/> + </GROUP> + <GROUP id="{46016F19-8F25-F540-AA1C-D6E87E8D7D31}" name="Channel"> + <FILE id="X3I3e9" name="Channel.cpp" compile="1" resource="0" file="Source/Processors/Channel/Channel.cpp"/> + <FILE id="IEZGF3" name="Channel.h" compile="0" resource="0" file="Source/Processors/Channel/Channel.h"/> + </GROUP> + <GROUP id="{CC57D5E1-9093-9454-4B03-5908715DFBD8}" name="ChannelMappingNode"> + <FILE id="UhpW2V" name="ChannelMappingEditor.cpp" compile="1" resource="0" + file="Source/Processors/ChannelMappingNode/ChannelMappingEditor.cpp"/> + <FILE id="kq8tJl" name="ChannelMappingEditor.h" compile="0" resource="0" + file="Source/Processors/ChannelMappingNode/ChannelMappingEditor.h"/> + <FILE id="gRCztM" name="ChannelMappingNode.cpp" compile="1" resource="0" + file="Source/Processors/ChannelMappingNode/ChannelMappingNode.cpp"/> + <FILE id="blwGma" name="ChannelMappingNode.h" compile="0" resource="0" + file="Source/Processors/ChannelMappingNode/ChannelMappingNode.h"/> </GROUP> <GROUP id="ZgsuWxi" name="DataThreads"> + <FILE id="gHzlwP" name="EcubeEditor.cpp" compile="1" resource="0" file="Source/Processors/DataThreads/EcubeEditor.cpp"/> + <FILE id="Bi0une" name="EcubeEditor.h" compile="0" resource="0" file="Source/Processors/DataThreads/EcubeEditor.h"/> + <FILE id="ZBPSXE" name="RHD2000Editor.cpp" compile="1" resource="0" + file="Source/Processors/DataThreads/RHD2000Editor.cpp"/> + <FILE id="TnZlGU" name="RHD2000Editor.h" compile="0" resource="0" file="Source/Processors/DataThreads/RHD2000Editor.h"/> + <FILE id="mbMbly" name="EcubeThread.cpp" compile="1" resource="0" file="Source/Processors/DataThreads/EcubeThread.cpp"/> + <FILE id="lKsc0T" name="EcubeThread.h" compile="0" resource="0" file="Source/Processors/DataThreads/EcubeThread.h"/> <GROUP id="LcWQtrg" name="rhythm-api"> <FILE id="hyM1EYD" name="okFrontPanelDLL.cpp" compile="1" resource="0" file="Source/Processors/DataThreads/rhythm-api/okFrontPanelDLL.cpp"/> @@ -516,30 +344,342 @@ <FILE id="9JbVKlA" name="DataThread.cpp" compile="1" resource="0" file="Source/Processors/DataThreads/DataThread.cpp"/> <FILE id="McgNvuR" name="DataThread.h" compile="0" resource="0" file="Source/Processors/DataThreads/DataThread.h"/> </GROUP> - <FILE id="f34QY5Q" name="RecordNode.cpp" compile="1" resource="0" file="Source/Processors/RecordNode.cpp"/> - <FILE id="ne3WPH4" name="RecordNode.h" compile="0" resource="0" file="Source/Processors/RecordNode.h"/> - <FILE id="JXxx5p" name="SignalGenerator.cpp" compile="1" resource="0" - file="Source/Processors/SignalGenerator.cpp"/> - <FILE id="6xlnGdF" name="SignalGenerator.h" compile="0" resource="0" - file="Source/Processors/SignalGenerator.h"/> - <FILE id="5xMSqrr" name="ResamplingNode.cpp" compile="1" resource="0" - file="Source/Processors/ResamplingNode.cpp"/> - <FILE id="G3kmYa" name="ResamplingNode.h" compile="0" resource="0" - file="Source/Processors/ResamplingNode.h"/> - <FILE id="8KOCQ0m" name="FilterNode.cpp" compile="1" resource="0" file="Source/Processors/FilterNode.cpp"/> - <FILE id="BLwO4vF" name="FilterNode.h" compile="0" resource="0" file="Source/Processors/FilterNode.h"/> - <FILE id="OakAxjJ" name="SourceNode.cpp" compile="1" resource="0" file="Source/Processors/SourceNode.cpp"/> - <FILE id="T6xYPnw" name="SourceNode.h" compile="0" resource="0" file="Source/Processors/SourceNode.h"/> - <FILE id="s8On6e" name="GenericProcessor.cpp" compile="1" resource="0" - file="Source/Processors/GenericProcessor.cpp"/> - <FILE id="tjR32I" name="GenericProcessor.h" compile="0" resource="0" - file="Source/Processors/GenericProcessor.h"/> - <FILE id="z3gsHSY" name="ProcessorGraph.cpp" compile="1" resource="0" - file="Source/Processors/ProcessorGraph.cpp"/> - <FILE id="WbqC0CB" name="ProcessorGraph.h" compile="0" resource="0" - file="Source/Processors/ProcessorGraph.h"/> + <GROUP id="{BCF99568-D3A2-7CA2-E809-815D22183EA4}" name="Dsp"> + <FILE id="PHlcin" name="Bessel.cpp" compile="1" resource="0" file="Source/Processors/Dsp/Bessel.cpp"/> + <FILE id="YXAcyZ" name="Bessel.h" compile="0" resource="0" file="Source/Processors/Dsp/Bessel.h"/> + <FILE id="nOEja0" name="Biquad.cpp" compile="1" resource="0" file="Source/Processors/Dsp/Biquad.cpp"/> + <FILE id="DxX7XS" name="Biquad.h" compile="0" resource="0" file="Source/Processors/Dsp/Biquad.h"/> + <FILE id="VQ44sd" name="Butterworth.cpp" compile="1" resource="0" file="Source/Processors/Dsp/Butterworth.cpp"/> + <FILE id="NVAymk" name="Butterworth.h" compile="0" resource="0" file="Source/Processors/Dsp/Butterworth.h"/> + <FILE id="FkrTqV" name="Cascade.cpp" compile="1" resource="0" file="Source/Processors/Dsp/Cascade.cpp"/> + <FILE id="pj0T3e" name="Cascade.h" compile="0" resource="0" file="Source/Processors/Dsp/Cascade.h"/> + <FILE id="ggju8m" name="ChebyshevI.cpp" compile="1" resource="0" file="Source/Processors/Dsp/ChebyshevI.cpp"/> + <FILE id="EGxTwj" name="ChebyshevI.h" compile="0" resource="0" file="Source/Processors/Dsp/ChebyshevI.h"/> + <FILE id="nWSeZF" name="ChebyshevII.cpp" compile="1" resource="0" file="Source/Processors/Dsp/ChebyshevII.cpp"/> + <FILE id="HS65B6" name="ChebyshevII.h" compile="0" resource="0" file="Source/Processors/Dsp/ChebyshevII.h"/> + <FILE id="jumO5X" name="Common.h" compile="0" resource="0" file="Source/Processors/Dsp/Common.h"/> + <FILE id="E1ZdBg" name="Custom.cpp" compile="1" resource="0" file="Source/Processors/Dsp/Custom.cpp"/> + <FILE id="JAxvZH" name="Custom.h" compile="0" resource="0" file="Source/Processors/Dsp/Custom.h"/> + <FILE id="BynrL2" name="Design.cpp" compile="1" resource="0" file="Source/Processors/Dsp/Design.cpp"/> + <FILE id="tINM97" name="Design.h" compile="0" resource="0" file="Source/Processors/Dsp/Design.h"/> + <FILE id="gikZHr" name="Documentation.cpp" compile="1" resource="0" + file="Source/Processors/Dsp/Documentation.cpp"/> + <FILE id="nwwW9u" name="Dsp.h" compile="0" resource="0" file="Source/Processors/Dsp/Dsp.h"/> + <FILE id="VMtjos" name="Elliptic.cpp" compile="1" resource="0" file="Source/Processors/Dsp/Elliptic.cpp"/> + <FILE id="xlw76X" name="Elliptic.h" compile="0" resource="0" file="Source/Processors/Dsp/Elliptic.h"/> + <FILE id="SSUdH3" name="Filter.cpp" compile="1" resource="0" file="Source/Processors/Dsp/Filter.cpp"/> + <FILE id="jMEqrr" name="Filter.h" compile="0" resource="0" file="Source/Processors/Dsp/Filter.h"/> + <FILE id="gORopa" name="Layout.h" compile="0" resource="0" file="Source/Processors/Dsp/Layout.h"/> + <FILE id="KFWbTw" name="Legendre.cpp" compile="1" resource="0" file="Source/Processors/Dsp/Legendre.cpp"/> + <FILE id="QukTBD" name="Legendre.h" compile="0" resource="0" file="Source/Processors/Dsp/Legendre.h"/> + <FILE id="yjHeg0" name="MathSupplement.h" compile="0" resource="0" + file="Source/Processors/Dsp/MathSupplement.h"/> + <FILE id="lSjPpg" name="Param.cpp" compile="1" resource="0" file="Source/Processors/Dsp/Param.cpp"/> + <FILE id="GbSbST" name="Params.h" compile="0" resource="0" file="Source/Processors/Dsp/Params.h"/> + <FILE id="iTSDrw" name="PoleFilter.cpp" compile="1" resource="0" file="Source/Processors/Dsp/PoleFilter.cpp"/> + <FILE id="c45usH" name="PoleFilter.h" compile="0" resource="0" file="Source/Processors/Dsp/PoleFilter.h"/> + <FILE id="UEmTDD" name="RBJ.cpp" compile="1" resource="0" file="Source/Processors/Dsp/RBJ.cpp"/> + <FILE id="PjXcyh" name="RBJ.h" compile="0" resource="0" file="Source/Processors/Dsp/RBJ.h"/> + <FILE id="n1FzuK" name="RootFinder.cpp" compile="1" resource="0" file="Source/Processors/Dsp/RootFinder.cpp"/> + <FILE id="aDg7vK" name="RootFinder.h" compile="0" resource="0" file="Source/Processors/Dsp/RootFinder.h"/> + <FILE id="DE0lE3" name="SmoothedFilter.h" compile="0" resource="0" + file="Source/Processors/Dsp/SmoothedFilter.h"/> + <FILE id="SPcR5B" name="State.cpp" compile="1" resource="0" file="Source/Processors/Dsp/State.cpp"/> + <FILE id="D1k4f9" name="State.h" compile="0" resource="0" file="Source/Processors/Dsp/State.h"/> + <FILE id="BBxUBy" name="Types.h" compile="0" resource="0" file="Source/Processors/Dsp/Types.h"/> + <FILE id="qXPdAz" name="Utilities.h" compile="0" resource="0" file="Source/Processors/Dsp/Utilities.h"/> + </GROUP> + <GROUP id="AqvwO6w" name="Editors"> + <FILE id="F68NQ3" name="ChannelSelector.cpp" compile="1" resource="0" + file="Source/Processors/Editors/ChannelSelector.cpp"/> + <FILE id="cOToxV" name="ChannelSelector.h" compile="0" resource="0" + file="Source/Processors/Editors/ChannelSelector.h"/> + <FILE id="EXjl1X" name="ElectrodeButtons.cpp" compile="1" resource="0" + file="Source/Processors/Editors/ElectrodeButtons.cpp"/> + <FILE id="aOEJ7T" name="ElectrodeButtons.h" compile="0" resource="0" + file="Source/Processors/Editors/ElectrodeButtons.h"/> + <FILE id="dlQddi" name="GenericEditor.cpp" compile="1" resource="0" + file="Source/Processors/Editors/GenericEditor.cpp"/> + <FILE id="NZjjLm" name="GenericEditor.h" compile="0" resource="0" file="Source/Processors/Editors/GenericEditor.h"/> + <FILE id="mqcmr8" name="ImageIcon.cpp" compile="1" resource="0" file="Source/Processors/Editors/ImageIcon.cpp"/> + <FILE id="GLT84s" name="ImageIcon.h" compile="0" resource="0" file="Source/Processors/Editors/ImageIcon.h"/> + <FILE id="c8F02O" name="VisualizerEditor.cpp" compile="1" resource="0" + file="Source/Processors/Editors/VisualizerEditor.cpp"/> + <FILE id="qGudPl" name="VisualizerEditor.h" compile="0" resource="0" + file="Source/Processors/Editors/VisualizerEditor.h"/> + </GROUP> + <GROUP id="{5884418B-6740-1CC4-EC34-721D3F3038AE}" name="EventDetector"> + <FILE id="GzQXNv" name="EventDetector.cpp" compile="1" resource="0" + file="Source/Processors/EventDetector/EventDetector.cpp"/> + <FILE id="cB7MXO" name="EventDetector.h" compile="0" resource="0" file="Source/Processors/EventDetector/EventDetector.h"/> + </GROUP> + <GROUP id="{0F7938FB-ACA3-29CA-58CE-2F0C8B5B0033}" name="EventNode"> + <FILE id="FWXJPq" name="EventNode.cpp" compile="1" resource="0" file="Source/Processors/EventNode/EventNode.cpp"/> + <FILE id="muOEC8" name="EventNode.h" compile="0" resource="0" file="Source/Processors/EventNode/EventNode.h"/> + <FILE id="Kwuq6Z" name="EventNodeEditor.cpp" compile="1" resource="0" + file="Source/Processors/EventNode/EventNodeEditor.cpp"/> + <FILE id="LUVId3" name="EventNodeEditor.h" compile="0" resource="0" + file="Source/Processors/EventNode/EventNodeEditor.h"/> + </GROUP> + <GROUP id="{27CF9A8D-7C31-9AA9-6DCA-6C719E127923}" name="FileReader"> + <FILE id="Pg9JfX" name="FileReader.cpp" compile="1" resource="0" file="Source/Processors/FileReader/FileReader.cpp"/> + <FILE id="SuAWvs" name="FileReader.h" compile="0" resource="0" file="Source/Processors/FileReader/FileReader.h"/> + <FILE id="Z58rr6" name="FileReaderEditor.cpp" compile="1" resource="0" + file="Source/Processors/FileReader/FileReaderEditor.cpp"/> + <FILE id="Ocpu1k" name="FileReaderEditor.h" compile="0" resource="0" + file="Source/Processors/FileReader/FileReaderEditor.h"/> + </GROUP> + <GROUP id="{986528D4-813B-6CCB-4564-5A15140EB912}" name="FilterNode"> + <FILE id="yBlgAF" name="FilterEditor.cpp" compile="1" resource="0" + file="Source/Processors/FilterNode/FilterEditor.cpp"/> + <FILE id="sBtXDo" name="FilterEditor.h" compile="0" resource="0" file="Source/Processors/FilterNode/FilterEditor.h"/> + <FILE id="usXu7Q" name="FilterNode.cpp" compile="1" resource="0" file="Source/Processors/FilterNode/FilterNode.cpp"/> + <FILE id="qnkW8d" name="FilterNode.h" compile="0" resource="0" file="Source/Processors/FilterNode/FilterNode.h"/> + </GROUP> + <GROUP id="{C47ABFBD-BC30-F6F2-B445-67B11DC5594F}" name="FPGAOutput"> + <FILE id="DY6GL1" name="FPGAOutput.cpp" compile="1" resource="0" file="Source/Processors/FPGAOutput/FPGAOutput.cpp"/> + <FILE id="CdbTqf" name="FPGAOutput.h" compile="0" resource="0" file="Source/Processors/FPGAOutput/FPGAOutput.h"/> + <FILE id="tH5H69" name="FPGAOutputEditor.cpp" compile="1" resource="0" + file="Source/Processors/FPGAOutput/FPGAOutputEditor.cpp"/> + <FILE id="e1ivPs" name="FPGAOutputEditor.h" compile="0" resource="0" + file="Source/Processors/FPGAOutput/FPGAOutputEditor.h"/> + </GROUP> + <GROUP id="{95FA3CAF-7BFA-AFF7-4480-EADCCA5FBA66}" name="GenericProcessor"> + <FILE id="l24v5k" name="GenericProcessor.cpp" compile="1" resource="0" + file="Source/Processors/GenericProcessor/GenericProcessor.cpp"/> + <FILE id="jSfKFd" name="GenericProcessor.h" compile="0" resource="0" + file="Source/Processors/GenericProcessor/GenericProcessor.h"/> + </GROUP> + <GROUP id="{B8EDEED3-180D-9198-31A8-D1E42439462C}" name="LfpDisplayNode"> + <FILE id="jKpYbZ" name="LfpDisplayCanvas.cpp" compile="1" resource="0" + file="Source/Processors/LfpDisplayNode/LfpDisplayCanvas.cpp"/> + <FILE id="wDsfeN" name="LfpDisplayCanvas.h" compile="0" resource="0" + file="Source/Processors/LfpDisplayNode/LfpDisplayCanvas.h"/> + <FILE id="tWxSDp" name="LfpDisplayEditor.cpp" compile="1" resource="0" + file="Source/Processors/LfpDisplayNode/LfpDisplayEditor.cpp"/> + <FILE id="Nkg6ww" name="LfpDisplayEditor.h" compile="0" resource="0" + file="Source/Processors/LfpDisplayNode/LfpDisplayEditor.h"/> + <FILE id="x9mO0H" name="LfpDisplayNode.cpp" compile="1" resource="0" + file="Source/Processors/LfpDisplayNode/LfpDisplayNode.cpp"/> + <FILE id="rKu45v" name="LfpDisplayNode.h" compile="0" resource="0" + file="Source/Processors/LfpDisplayNode/LfpDisplayNode.h"/> + </GROUP> + <GROUP id="{D20DFFFD-08E8-5CC6-479A-07CECDE9BC86}" name="LfpTriggeredAverageNode"> + <FILE id="dxKyFx" name="LfpTriggeredAverageCanvas.cpp" compile="1" + resource="0" file="Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageCanvas.cpp"/> + <FILE id="CMxAvm" name="LfpTriggeredAverageCanvas.h" compile="0" resource="0" + file="Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageCanvas.h"/> + <FILE id="VhsonN" name="LfpTriggeredAverageEditor.cpp" compile="1" + resource="0" file="Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.cpp"/> + <FILE id="jVc0dD" name="LfpTriggeredAverageEditor.h" compile="0" resource="0" + file="Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.h"/> + <FILE id="ADrDsi" name="LfpTriggeredAverageNode.cpp" compile="1" resource="0" + file="Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageNode.cpp"/> + <FILE id="wEt96B" name="LfpTriggeredAverageNode.h" compile="0" resource="0" + file="Source/Processors/LfpTriggeredAverageNode/LfpTriggeredAverageNode.h"/> + </GROUP> + <GROUP id="{4B40CAAE-49C7-509A-B7E7-0C7EF011FBA1}" name="Merger"> + <FILE id="gZxAmt" name="Merger.cpp" compile="1" resource="0" file="Source/Processors/Merger/Merger.cpp"/> + <FILE id="w8qwHK" name="Merger.h" compile="0" resource="0" file="Source/Processors/Merger/Merger.h"/> + <FILE id="YIzAwj" name="MergerEditor.cpp" compile="1" resource="0" + file="Source/Processors/Merger/MergerEditor.cpp"/> + <FILE id="yquxy4" name="MergerEditor.h" compile="0" resource="0" file="Source/Processors/Merger/MergerEditor.h"/> + </GROUP> + <GROUP id="{6E21A406-000C-7894-28D6-2B45D07A304B}" name="MessageCenter"> + <FILE id="gnNHUQ" name="MessageCenter.cpp" compile="1" resource="0" + file="Source/Processors/MessageCenter/MessageCenter.cpp"/> + <FILE id="vn2uwZ" name="MessageCenter.h" compile="0" resource="0" file="Source/Processors/MessageCenter/MessageCenter.h"/> + <FILE id="xGnJo5" name="MessageCenterEditor.cpp" compile="1" resource="0" + file="Source/Processors/MessageCenter/MessageCenterEditor.cpp"/> + <FILE id="r1V0KZ" name="MessageCenterEditor.h" compile="0" resource="0" + file="Source/Processors/MessageCenter/MessageCenterEditor.h"/> + </GROUP> + <GROUP id="{86B5AC2A-0A78-6D0E-C5FE-6758DDD096DB}" name="Parameter"> + <FILE id="yyyDtp" name="ParameterEditor.cpp" compile="1" resource="0" + file="Source/Processors/Parameter/ParameterEditor.cpp"/> + <FILE id="t3vpkl" name="ParameterEditor.h" compile="0" resource="0" + file="Source/Processors/Parameter/ParameterEditor.h"/> + <FILE id="P4fc98" name="Parameter.cpp" compile="1" resource="0" file="Source/Processors/Parameter/Parameter.cpp"/> + <FILE id="QdTalD" name="Parameter.h" compile="0" resource="0" file="Source/Processors/Parameter/Parameter.h"/> + </GROUP> + <GROUP id="{0FB1D636-E24B-00AB-3123-3C8B78796B4A}" name="PhaseDetector"> + <FILE id="l7SGiM" name="PhaseDetector.cpp" compile="1" resource="0" + file="Source/Processors/PhaseDetector/PhaseDetector.cpp"/> + <FILE id="eKMXut" name="PhaseDetector.h" compile="0" resource="0" file="Source/Processors/PhaseDetector/PhaseDetector.h"/> + <FILE id="T9hV0k" name="PhaseDetectorEditor.cpp" compile="1" resource="0" + file="Source/Processors/PhaseDetector/PhaseDetectorEditor.cpp"/> + <FILE id="d4b1Wv" name="PhaseDetectorEditor.h" compile="0" resource="0" + file="Source/Processors/PhaseDetector/PhaseDetectorEditor.h"/> + </GROUP> + <GROUP id="{FDEB8810-D49F-8E7C-17A7-685370EF966F}" name="ProcessorGraph"> + <FILE id="qil3t5" name="ProcessorGraph.cpp" compile="1" resource="0" + file="Source/Processors/ProcessorGraph/ProcessorGraph.cpp"/> + <FILE id="cwGSmb" name="ProcessorGraph.h" compile="0" resource="0" + file="Source/Processors/ProcessorGraph/ProcessorGraph.h"/> + </GROUP> + <GROUP id="{B89E3035-1523-BBAA-12A9-AA81313B7E8F}" name="PulsePalOutput"> + <FILE id="LEaT0R" name="PulsePalOutput.cpp" compile="1" resource="0" + file="Source/Processors/PulsePalOutput/PulsePalOutput.cpp"/> + <FILE id="BwbX8M" name="PulsePalOutput.h" compile="0" resource="0" + file="Source/Processors/PulsePalOutput/PulsePalOutput.h"/> + <FILE id="U4ISc3" name="PulsePalOutputEditor.cpp" compile="1" resource="0" + file="Source/Processors/PulsePalOutput/PulsePalOutputEditor.cpp"/> + <FILE id="ugyMou" name="PulsePalOutputEditor.h" compile="0" resource="0" + file="Source/Processors/PulsePalOutput/PulsePalOutputEditor.h"/> + </GROUP> + <GROUP id="{75D455A6-2354-C8A4-0F0F-EE14C166944C}" name="RecordControl"> + <FILE id="NfBdVb" name="RecordControl.cpp" compile="1" resource="0" + file="Source/Processors/RecordControl/RecordControl.cpp"/> + <FILE id="URvuJK" name="RecordControl.h" compile="0" resource="0" file="Source/Processors/RecordControl/RecordControl.h"/> + <FILE id="sovXVI" name="RecordControlEditor.cpp" compile="1" resource="0" + file="Source/Processors/RecordControl/RecordControlEditor.cpp"/> + <FILE id="CKRdQf" name="RecordControlEditor.h" compile="0" resource="0" + file="Source/Processors/RecordControl/RecordControlEditor.h"/> + </GROUP> + <GROUP id="{72D807AC-44A0-1F7A-8699-22225876FE9A}" name="RecordNode"> + <FILE id="deQ9TU" name="EngineConfigWindow.cpp" compile="1" resource="0" + file="Source/Processors/RecordNode/EngineConfigWindow.cpp"/> + <FILE id="iSAT0P" name="EngineConfigWindow.h" compile="0" resource="0" + file="Source/Processors/RecordNode/EngineConfigWindow.h"/> + <FILE id="gZdszH" name="HDF5FileFormat.cpp" compile="1" resource="0" + file="Source/Processors/RecordNode/HDF5FileFormat.cpp"/> + <FILE id="EF7IbH" name="HDF5FileFormat.h" compile="0" resource="0" + file="Source/Processors/RecordNode/HDF5FileFormat.h"/> + <FILE id="dpOVsD" name="HDF5Recording.cpp" compile="1" resource="0" + file="Source/Processors/RecordNode/HDF5Recording.cpp"/> + <FILE id="DJgCzN" name="HDF5Recording.h" compile="0" resource="0" file="Source/Processors/RecordNode/HDF5Recording.h"/> + <FILE id="dpsAhU" name="OriginalRecording.cpp" compile="1" resource="0" + file="Source/Processors/RecordNode/OriginalRecording.cpp"/> + <FILE id="okexpc" name="OriginalRecording.h" compile="0" resource="0" + file="Source/Processors/RecordNode/OriginalRecording.h"/> + <FILE id="UU77gU" name="RecordEngine.cpp" compile="1" resource="0" + file="Source/Processors/RecordNode/RecordEngine.cpp"/> + <FILE id="NSKXGp" name="RecordEngine.h" compile="0" resource="0" file="Source/Processors/RecordNode/RecordEngine.h"/> + <FILE id="ccpPpJ" name="RecordNode.cpp" compile="1" resource="0" file="Source/Processors/RecordNode/RecordNode.cpp"/> + <FILE id="R9n30e" name="RecordNode.h" compile="0" resource="0" file="Source/Processors/RecordNode/RecordNode.h"/> + </GROUP> + <GROUP id="{B0C14DBE-8CC1-F242-3534-1DFBEAC5E43B}" name="ReferenceNode"> + <FILE id="F7WTBV" name="ReferenceNode.cpp" compile="1" resource="0" + file="Source/Processors/ReferenceNode/ReferenceNode.cpp"/> + <FILE id="XyYPUn" name="ReferenceNode.h" compile="0" resource="0" file="Source/Processors/ReferenceNode/ReferenceNode.h"/> + <FILE id="tsfK4e" name="ReferenceNodeEditor.cpp" compile="1" resource="0" + file="Source/Processors/ReferenceNode/ReferenceNodeEditor.cpp"/> + <FILE id="virGvM" name="ReferenceNodeEditor.h" compile="0" resource="0" + file="Source/Processors/ReferenceNode/ReferenceNodeEditor.h"/> + </GROUP> + <GROUP id="{C6F1F354-C97E-128E-9C4E-2376E039F233}" name="ResamplingNode"> + <FILE id="yIwQ4b" name="ResamplingNode.cpp" compile="1" resource="0" + file="Source/Processors/ResamplingNode/ResamplingNode.cpp"/> + <FILE id="h1zDlH" name="ResamplingNode.h" compile="0" resource="0" + file="Source/Processors/ResamplingNode/ResamplingNode.h"/> + <FILE id="LByZh0" name="ResamplingNodeEditor.cpp" compile="1" resource="0" + file="Source/Processors/ResamplingNode/ResamplingNodeEditor.cpp"/> + <FILE id="UFlCtp" name="ResamplingNodeEditor.h" compile="0" resource="0" + file="Source/Processors/ResamplingNode/ResamplingNodeEditor.h"/> + </GROUP> + <GROUP id="gFSbZKw" name="Serial"> + <FILE id="PHwlqi" name="PulsePal.cpp" compile="1" resource="0" file="Source/Processors/Serial/PulsePal.cpp"/> + <FILE id="R4XRyB" name="PulsePal.h" compile="0" resource="0" file="Source/Processors/Serial/PulsePal.h"/> + <FILE id="3t2ez3c" name="ofArduino.cpp" compile="1" resource="0" file="Source/Processors/Serial/ofArduino.cpp"/> + <FILE id="bXASAoT" name="ofArduino.h" compile="0" resource="0" file="Source/Processors/Serial/ofArduino.h"/> + <FILE id="hNTT1i1" name="ofConstants.h" compile="0" resource="0" file="Source/Processors/Serial/ofConstants.h"/> + <FILE id="F97Ylmz" name="ofSerial.cpp" compile="1" resource="0" file="Source/Processors/Serial/ofSerial.cpp"/> + <FILE id="wV1xn3Z" name="ofSerial.h" compile="0" resource="0" file="Source/Processors/Serial/ofSerial.h"/> + </GROUP> + <GROUP id="{C5E76874-E767-D4E0-D8B6-F61DBB446F13}" name="SerialInput"> + <FILE id="dWXqU4" name="SerialInput.cpp" compile="1" resource="0" file="Source/Processors/SerialInput/SerialInput.cpp"/> + <FILE id="EReMRm" name="SerialInput.h" compile="0" resource="0" file="Source/Processors/SerialInput/SerialInput.h"/> + <FILE id="Q0XOjv" name="SerialInputEditor.cpp" compile="1" resource="0" + file="Source/Processors/SerialInput/SerialInputEditor.cpp"/> + <FILE id="s0Nf1X" name="SerialInputEditor.h" compile="0" resource="0" + file="Source/Processors/SerialInput/SerialInputEditor.h"/> + </GROUP> + <GROUP id="{8E9594A3-D2B2-EAA3-9596-89923D59830A}" name="SignalGenerator"> + <FILE id="mywzvE" name="SignalGenerator.cpp" compile="1" resource="0" + file="Source/Processors/SignalGenerator/SignalGenerator.cpp"/> + <FILE id="iaP3u1" name="SignalGenerator.h" compile="0" resource="0" + file="Source/Processors/SignalGenerator/SignalGenerator.h"/> + <FILE id="xZoFAy" name="SignalGeneratorEditor.cpp" compile="1" resource="0" + file="Source/Processors/SignalGenerator/SignalGeneratorEditor.cpp"/> + <FILE id="svgwwG" name="SignalGeneratorEditor.h" compile="0" resource="0" + file="Source/Processors/SignalGenerator/SignalGeneratorEditor.h"/> + </GROUP> + <GROUP id="{58E5BDC1-3523-0E4D-2402-72726098BA07}" name="SourceNode"> + <FILE id="bcB5hN" name="SourceNode.cpp" compile="1" resource="0" file="Source/Processors/SourceNode/SourceNode.cpp"/> + <FILE id="Dyas33" name="SourceNode.h" compile="0" resource="0" file="Source/Processors/SourceNode/SourceNode.h"/> + <FILE id="KQM0Ls" name="SourceNodeEditor.cpp" compile="1" resource="0" + file="Source/Processors/SourceNode/SourceNodeEditor.cpp"/> + <FILE id="EWFh9x" name="SourceNodeEditor.h" compile="0" resource="0" + file="Source/Processors/SourceNode/SourceNodeEditor.h"/> + </GROUP> + <GROUP id="{B1C68941-4E97-FD8E-00E8-70B1225B3EBD}" name="SpikeDetector"> + <FILE id="LZxTYj" name="SpikeDetector.cpp" compile="1" resource="0" + file="Source/Processors/SpikeDetector/SpikeDetector.cpp"/> + <FILE id="A4LRql" name="SpikeDetector.h" compile="0" resource="0" file="Source/Processors/SpikeDetector/SpikeDetector.h"/> + <FILE id="dJHC68" name="SpikeDetectorEditor.cpp" compile="1" resource="0" + file="Source/Processors/SpikeDetector/SpikeDetectorEditor.cpp"/> + <FILE id="ek762r" name="SpikeDetectorEditor.h" compile="0" resource="0" + file="Source/Processors/SpikeDetector/SpikeDetectorEditor.h"/> + </GROUP> + <GROUP id="{3C98FCA3-673A-3E34-ABC6-D506EF05DDD4}" name="SpikeDisplayNode"> + <FILE id="Ak6yJU" name="SpikeDisplayCanvas.cpp" compile="1" resource="0" + file="Source/Processors/SpikeDisplayNode/SpikeDisplayCanvas.cpp"/> + <FILE id="Ivm1WE" name="SpikeDisplayCanvas.h" compile="0" resource="0" + file="Source/Processors/SpikeDisplayNode/SpikeDisplayCanvas.h"/> + <FILE id="tzcDUJ" name="SpikeDisplayEditor.cpp" compile="1" resource="0" + file="Source/Processors/SpikeDisplayNode/SpikeDisplayEditor.cpp"/> + <FILE id="qpnGQ2" name="SpikeDisplayEditor.h" compile="0" resource="0" + file="Source/Processors/SpikeDisplayNode/SpikeDisplayEditor.h"/> + <FILE id="Osx5Vs" name="SpikeDisplayNode.cpp" compile="1" resource="0" + file="Source/Processors/SpikeDisplayNode/SpikeDisplayNode.cpp"/> + <FILE id="EYFdq6" name="SpikeDisplayNode.h" compile="0" resource="0" + file="Source/Processors/SpikeDisplayNode/SpikeDisplayNode.h"/> + </GROUP> + <GROUP id="{B65E315B-E451-52BB-C46B-DFC8CFE52512}" name="SpikeSorter"> + <FILE id="IDfGJU" name="SpikeSortBoxes.cpp" compile="1" resource="0" + file="Source/Processors/SpikeSorter/SpikeSortBoxes.cpp"/> + <FILE id="oKqHU5" name="SpikeSortBoxes.h" compile="0" resource="0" + file="Source/Processors/SpikeSorter/SpikeSortBoxes.h"/> + <FILE id="ZvsSnb" name="SpikeSorter.cpp" compile="1" resource="0" file="Source/Processors/SpikeSorter/SpikeSorter.cpp"/> + <FILE id="iWFZ8N" name="SpikeSorter.h" compile="0" resource="0" file="Source/Processors/SpikeSorter/SpikeSorter.h"/> + <FILE id="AAjUyt" name="SpikeSorterCanvas.cpp" compile="1" resource="0" + file="Source/Processors/SpikeSorter/SpikeSorterCanvas.cpp"/> + <FILE id="vSwtHQ" name="SpikeSorterCanvas.h" compile="0" resource="0" + file="Source/Processors/SpikeSorter/SpikeSorterCanvas.h"/> + <FILE id="eRXHEt" name="SpikeSorterEditor.cpp" compile="1" resource="0" + file="Source/Processors/SpikeSorter/SpikeSorterEditor.cpp"/> + <FILE id="seDqmg" name="SpikeSorterEditor.h" compile="0" resource="0" + file="Source/Processors/SpikeSorter/SpikeSorterEditor.h"/> + </GROUP> + <GROUP id="{393F8FA9-FA27-4F2D-8252-9AB2CAA871DA}" name="Splitter"> + <FILE id="xbkXa2" name="Splitter.cpp" compile="1" resource="0" file="Source/Processors/Splitter/Splitter.cpp"/> + <FILE id="kFiAO3" name="Splitter.h" compile="0" resource="0" file="Source/Processors/Splitter/Splitter.h"/> + <FILE id="mY47Gn" name="SplitterEditor.cpp" compile="1" resource="0" + file="Source/Processors/Splitter/SplitterEditor.cpp"/> + <FILE id="KyMfuL" name="SplitterEditor.h" compile="0" resource="0" + file="Source/Processors/Splitter/SplitterEditor.h"/> + </GROUP> + <GROUP id="W4eqkOy" name="Visualization"> + <FILE id="ETLsfY" name="DataWindow.cpp" compile="1" resource="0" file="Source/Processors/Visualization/DataWindow.cpp"/> + <FILE id="qDfeYR" name="DataWindow.h" compile="0" resource="0" file="Source/Processors/Visualization/DataWindow.h"/> + <FILE id="tuQVXY" name="SpikeObject.cpp" compile="1" resource="0" file="Source/Processors/Visualization/SpikeObject.cpp"/> + <FILE id="KyhGmE" name="SpikeObject.h" compile="0" resource="0" file="Source/Processors/Visualization/SpikeObject.h"/> + <FILE id="MsSuwS" name="Visualizer.h" compile="0" resource="0" file="Source/Processors/Visualization/Visualizer.h"/> + </GROUP> + <GROUP id="{3FCFBFDA-848D-6B59-5F37-E3D1F43D54DF}" name="WiFiOutput"> + <FILE id="OmOeLf" name="WiFiOutput.cpp" compile="1" resource="0" file="Source/Processors/WiFiOutput/WiFiOutput.cpp"/> + <FILE id="o3arNv" name="WiFiOutput.h" compile="0" resource="0" file="Source/Processors/WiFiOutput/WiFiOutput.h"/> + <FILE id="XSiAk6" name="WiFiOutputEditor.cpp" compile="1" resource="0" + file="Source/Processors/WiFiOutput/WiFiOutputEditor.cpp"/> + <FILE id="QdKqgJ" name="WiFiOutputEditor.h" compile="0" resource="0" + file="Source/Processors/WiFiOutput/WiFiOutputEditor.h"/> + </GROUP> </GROUP> <GROUP id="RNGb1yR" name="UI"> + <FILE id="PBkkUW" name="EcubeDialogComponent.cpp" compile="1" resource="0" + file="Source/UI/EcubeDialogComponent.cpp"/> + <FILE id="MFmxar" name="EcubeDialogComponent.h" compile="0" resource="0" + file="Source/UI/EcubeDialogComponent.h"/> <FILE id="gXswXJ" name="CustomArrowButton.cpp" compile="1" resource="0" file="Source/UI/CustomArrowButton.cpp"/> <FILE id="ECOEoc" name="CustomArrowButton.h" compile="0" resource="0" @@ -571,10 +711,6 @@ <FILE id="bWElQSS" name="DataViewport.cpp" compile="1" resource="0" file="Source/UI/DataViewport.cpp"/> <FILE id="mMoQ3ls" name="DataViewport.h" compile="0" resource="0" file="Source/UI/DataViewport.h"/> - <FILE id="rRa3X6v" name="MessageCenter.cpp" compile="1" resource="0" - file="Source/UI/MessageCenter.cpp"/> - <FILE id="Gwnvgdy" name="MessageCenter.h" compile="0" resource="0" - file="Source/UI/MessageCenter.h"/> <FILE id="we1JIPz" name="ControlPanel.cpp" compile="1" resource="0" file="Source/UI/ControlPanel.cpp"/> <FILE id="rCft9Ec" name="ControlPanel.h" compile="0" resource="0" file="Source/UI/ControlPanel.h"/> @@ -599,7 +735,7 @@ <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="1"/> <MODULE id="juce_events" showAllCode="1" useLocalCopy="1"/> <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="1"/> - <MODULE id="juce_gui_audio" showAllCode="1"/> + <MODULE id="juce_gui_audio" showAllCode="1" useLocalCopy="1"/> <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="1"/> <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="1"/> <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="1"/>