| @@ -5,4 +5,4 @@ Using Juce version 4 means we can use its GPL v2+ license. | |||||
| Starting from version 5, Juce uses GPLv3. | Starting from version 5, Juce uses GPLv3. | ||||
| Do not use this library in your own code! | Do not use this library in your own code! | ||||
| There are no plans to make it generic library or any support for its use outside of Carla. | |||||
| There are no plans to make it a generic library or give any support for its use outside of Carla. | |||||
| @@ -3,7 +3,7 @@ | |||||
| This file is part of the Water library. | This file is part of the Water library. | ||||
| Copyright (c) 2016 ROLI Ltd. | Copyright (c) 2016 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the ISC license | Permission is granted to use this software under the terms of the ISC license | ||||
| http://www.isc.org/downloads/software-support-policy/isc-license/ | http://www.isc.org/downloads/software-support-policy/isc-license/ | ||||
| @@ -398,11 +398,6 @@ bool File::isAChildOf (const File& potentialParent) const | |||||
| return getParentDirectory().isAChildOf (potentialParent); | return getParentDirectory().isAChildOf (potentialParent); | ||||
| } | } | ||||
| #if 0 | |||||
| int File::hashCode() const { return fullPath.hashCode(); } | |||||
| int64 File::hashCode64() const { return fullPath.hashCode64(); } | |||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| bool File::isAbsolutePath (StringRef path) | bool File::isAbsolutePath (StringRef path) | ||||
| { | { | ||||
| @@ -3,7 +3,7 @@ | |||||
| This file is part of the Water library. | This file is part of the Water library. | ||||
| Copyright (c) 2016 ROLI Ltd. | Copyright (c) 2016 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the ISC license | Permission is granted to use this software under the terms of the ISC license | ||||
| http://www.isc.org/downloads/software-support-policy/isc-license/ | http://www.isc.org/downloads/software-support-policy/isc-license/ | ||||
| @@ -221,21 +221,6 @@ public: | |||||
| */ | */ | ||||
| String getFileNameWithoutExtension() const; | String getFileNameWithoutExtension() const; | ||||
| //============================================================================== | |||||
| /** Returns a 32-bit hash-code that identifies this file. | |||||
| This is based on the filename. Obviously it's possible, although unlikely, that | |||||
| two files will have the same hash-code. | |||||
| */ | |||||
| int hashCode() const; | |||||
| /** Returns a 64-bit hash-code that identifies this file. | |||||
| This is based on the filename. Obviously it's possible, although unlikely, that | |||||
| two files will have the same hash-code. | |||||
| */ | |||||
| int64 hashCode64() const; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Returns a file that represents a relative (or absolute) sub-path of the current one. | /** Returns a file that represents a relative (or absolute) sub-path of the current one. | ||||
| @@ -1,144 +0,0 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file is part of the Water library. | |||||
| Copyright (c) 2015 ROLI Ltd. | |||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the GNU | |||||
| General Public License as published by the Free Software Foundation; | |||||
| either version 2 of the License, or 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. | |||||
| For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
| ============================================================================== | |||||
| */ | |||||
| #ifndef WATER_AUDIOPLAYHEAD_H_INCLUDED | |||||
| #define WATER_AUDIOPLAYHEAD_H_INCLUDED | |||||
| #include "../water.h" | |||||
| namespace water { | |||||
| //============================================================================== | |||||
| /** | |||||
| A subclass of AudioPlayHead can supply information about the position and | |||||
| status of a moving play head during audio playback. | |||||
| One of these can be supplied to an AudioProcessor object so that it can find | |||||
| out about the position of the audio that it is rendering. | |||||
| @see AudioProcessor::setPlayHead, AudioProcessor::getPlayHead | |||||
| */ | |||||
| class AudioPlayHead | |||||
| { | |||||
| protected: | |||||
| //============================================================================== | |||||
| AudioPlayHead() {} | |||||
| public: | |||||
| virtual ~AudioPlayHead() {} | |||||
| //============================================================================== | |||||
| /** Frame rate types. */ | |||||
| enum FrameRateType | |||||
| { | |||||
| fps24 = 0, | |||||
| fps25 = 1, | |||||
| fps2997 = 2, | |||||
| fps30 = 3, | |||||
| fps2997drop = 4, | |||||
| fps30drop = 5, | |||||
| fpsUnknown = 99 | |||||
| }; | |||||
| //============================================================================== | |||||
| /** This structure is filled-in by the AudioPlayHead::getCurrentPosition() method. | |||||
| */ | |||||
| struct CurrentPositionInfo | |||||
| { | |||||
| /** The tempo in BPM */ | |||||
| double bpm; | |||||
| /** Time signature numerator, e.g. the 3 of a 3/4 time sig */ | |||||
| int timeSigNumerator; | |||||
| /** Time signature denominator, e.g. the 4 of a 3/4 time sig */ | |||||
| int timeSigDenominator; | |||||
| /** The current play position, in samples from the start of the edit. */ | |||||
| int64 timeInSamples; | |||||
| /** The current play position, in seconds from the start of the edit. */ | |||||
| double timeInSeconds; | |||||
| /** For timecode, the position of the start of the edit, in seconds from 00:00:00:00. */ | |||||
| double editOriginTime; | |||||
| /** The current play position, in pulses-per-quarter-note. */ | |||||
| double ppqPosition; | |||||
| /** The position of the start of the last bar, in pulses-per-quarter-note. | |||||
| This is the time from the start of the edit to the start of the current | |||||
| bar, in ppq units. | |||||
| Note - this value may be unavailable on some hosts, e.g. Pro-Tools. If | |||||
| it's not available, the value will be 0. | |||||
| */ | |||||
| double ppqPositionOfLastBarStart; | |||||
| /** The video frame rate, if applicable. */ | |||||
| FrameRateType frameRate; | |||||
| /** True if the transport is currently playing. */ | |||||
| bool isPlaying; | |||||
| /** True if the transport is currently recording. | |||||
| (When isRecording is true, then isPlaying will also be true). | |||||
| */ | |||||
| bool isRecording; | |||||
| /** The current cycle start position in pulses-per-quarter-note. | |||||
| Note that not all hosts or plugin formats may provide this value. | |||||
| @see isLooping | |||||
| */ | |||||
| double ppqLoopStart; | |||||
| /** The current cycle end position in pulses-per-quarter-note. | |||||
| Note that not all hosts or plugin formats may provide this value. | |||||
| @see isLooping | |||||
| */ | |||||
| double ppqLoopEnd; | |||||
| /** True if the transport is currently looping. */ | |||||
| bool isLooping; | |||||
| //============================================================================== | |||||
| bool operator== (const CurrentPositionInfo& other) const noexcept; | |||||
| bool operator!= (const CurrentPositionInfo& other) const noexcept; | |||||
| void resetToDefault(); | |||||
| }; | |||||
| //============================================================================== | |||||
| /** Fills-in the given structure with details about the transport's | |||||
| position at the start of the current processing block. If this method returns | |||||
| false then the current play head position is not available and the given | |||||
| structure will be undefined. | |||||
| You can ONLY call this from your processBlock() method! Calling it at other | |||||
| times will produce undefined behaviour, as the host may not have any context | |||||
| in which a time would make sense, and some hosts will almost certainly have | |||||
| multithreading issues if it's not called on the audio thread. | |||||
| */ | |||||
| virtual bool getCurrentPosition (CurrentPositionInfo& result) = 0; | |||||
| }; | |||||
| } | |||||
| #endif // WATER_AUDIOPLAYHEAD_H_INCLUDED | |||||
| @@ -3,7 +3,7 @@ | |||||
| This file is part of the Water library. | This file is part of the Water library. | ||||
| Copyright (c) 2015 ROLI Ltd. | Copyright (c) 2015 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the GNU | Permission is granted to use this software under the terms of the GNU | ||||
| General Public License as published by the Free Software Foundation; | General Public License as published by the Free Software Foundation; | ||||
| @@ -27,7 +27,6 @@ AudioProcessor::AudioProcessor() | |||||
| cachedTotalIns = 0; | cachedTotalIns = 0; | ||||
| cachedTotalOuts = 0; | cachedTotalOuts = 0; | ||||
| // playHead = nullptr; | |||||
| currentSampleRate = 0; | currentSampleRate = 0; | ||||
| blockSize = 0; | blockSize = 0; | ||||
| latencySamples = 0; | latencySamples = 0; | ||||
| @@ -41,11 +40,6 @@ AudioProcessor::~AudioProcessor() | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| // void AudioProcessor::setPlayHead (AudioPlayHead* const newPlayHead) | |||||
| // { | |||||
| // playHead = newPlayHead; | |||||
| // } | |||||
| void AudioProcessor::setPlayConfigDetails (const int newNumIns, | void AudioProcessor::setPlayConfigDetails (const int newNumIns, | ||||
| const int newNumOuts, | const int newNumOuts, | ||||
| const double newSampleRate, | const double newSampleRate, | ||||
| @@ -82,46 +76,10 @@ void AudioProcessor::suspendProcessing (const bool shouldBeSuspended) | |||||
| void AudioProcessor::reset() {} | void AudioProcessor::reset() {} | ||||
| void AudioProcessor::processBypassed (AudioSampleBuffer& buffer, MidiBuffer&) | |||||
| void AudioProcessor::processBlockBypassed (AudioSampleBuffer& buffer, MidiBuffer&) | |||||
| { | { | ||||
| for (int ch = getTotalNumInputChannels(); ch < getTotalNumOutputChannels(); ++ch) | for (int ch = getTotalNumInputChannels(); ch < getTotalNumOutputChannels(); ++ch) | ||||
| buffer.clear (ch, 0, buffer.getNumSamples()); | buffer.clear (ch, 0, buffer.getNumSamples()); | ||||
| } | } | ||||
| void AudioProcessor::processBlockBypassed (AudioSampleBuffer& buffer, MidiBuffer& midi) { processBypassed (buffer, midi); } | |||||
| #if 0 | |||||
| //============================================================================== | |||||
| bool AudioPlayHead::CurrentPositionInfo::operator== (const CurrentPositionInfo& other) const noexcept | |||||
| { | |||||
| return timeInSamples == other.timeInSamples | |||||
| && ppqPosition == other.ppqPosition | |||||
| && editOriginTime == other.editOriginTime | |||||
| && ppqPositionOfLastBarStart == other.ppqPositionOfLastBarStart | |||||
| && frameRate == other.frameRate | |||||
| && isPlaying == other.isPlaying | |||||
| && isRecording == other.isRecording | |||||
| && bpm == other.bpm | |||||
| && timeSigNumerator == other.timeSigNumerator | |||||
| && timeSigDenominator == other.timeSigDenominator | |||||
| && ppqLoopStart == other.ppqLoopStart | |||||
| && ppqLoopEnd == other.ppqLoopEnd | |||||
| && isLooping == other.isLooping; | |||||
| } | |||||
| bool AudioPlayHead::CurrentPositionInfo::operator!= (const CurrentPositionInfo& other) const noexcept | |||||
| { | |||||
| return ! operator== (other); | |||||
| } | |||||
| void AudioPlayHead::CurrentPositionInfo::resetToDefault() | |||||
| { | |||||
| zerostruct (*this); | |||||
| timeSigNumerator = 4; | |||||
| timeSigDenominator = 4; | |||||
| bpm = 120; | |||||
| } | |||||
| #endif | |||||
| } | } | ||||
| @@ -3,7 +3,7 @@ | |||||
| This file is part of the Water library. | This file is part of the Water library. | ||||
| Copyright (c) 2015 ROLI Ltd. | Copyright (c) 2015 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the GNU | Permission is granted to use this software under the terms of the GNU | ||||
| General Public License as published by the Free Software Foundation; | General Public License as published by the Free Software Foundation; | ||||
| @@ -164,26 +164,6 @@ public: | |||||
| virtual void processBlockBypassed (AudioSampleBuffer& buffer, | virtual void processBlockBypassed (AudioSampleBuffer& buffer, | ||||
| MidiBuffer& midiMessages); | MidiBuffer& midiMessages); | ||||
| #if 0 | |||||
| //============================================================================== | |||||
| /** Returns the current AudioPlayHead object that should be used to find | |||||
| out the state and position of the playhead. | |||||
| You can ONLY call this from your processBlock() method! Calling it at other | |||||
| times will produce undefined behaviour, as the host may not have any context | |||||
| in which a time would make sense, and some hosts will almost certainly have | |||||
| multithreading issues if it's not called on the audio thread. | |||||
| The AudioPlayHead object that is returned can be used to get the details about | |||||
| the time of the start of the block currently being processed. But do not | |||||
| store this pointer or use it outside of the current audio callback, because | |||||
| the host may delete or re-use it. | |||||
| If the host can't or won't provide any time info, this will return nullptr. | |||||
| */ | |||||
| AudioPlayHead* getPlayHead() const noexcept { return playHead; } | |||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Returns the total number of input channels. | /** Returns the total number of input channels. | ||||
| @@ -338,15 +318,6 @@ public: | |||||
| */ | */ | ||||
| virtual void setNonRealtime (bool isNonRealtime) noexcept; | virtual void setNonRealtime (bool isNonRealtime) noexcept; | ||||
| #if 0 | |||||
| //============================================================================== | |||||
| /** Tells the processor to use this playhead object. | |||||
| The processor will not take ownership of the object, so the caller must delete it when | |||||
| it is no longer being used. | |||||
| */ | |||||
| virtual void setPlayHead (AudioPlayHead* newPlayHead); | |||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| /** This is called by the processor to specify its details before being played. Use this | /** This is called by the processor to specify its details before being played. Use this | ||||
| version of the function if you are not interested in any sidechain and/or aux buses | version of the function if you are not interested in any sidechain and/or aux buses | ||||
| @@ -362,12 +333,6 @@ public: | |||||
| void setRateAndBufferSizeDetails (double sampleRate, int blockSize) noexcept; | void setRateAndBufferSizeDetails (double sampleRate, int blockSize) noexcept; | ||||
| private: | private: | ||||
| #if 0 | |||||
| //============================================================================== | |||||
| /** @internal */ | |||||
| AudioPlayHead* playHead; | |||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| double currentSampleRate; | double currentSampleRate; | ||||
| int blockSize, latencySamples; | int blockSize, latencySamples; | ||||
| @@ -379,8 +344,6 @@ private: | |||||
| int cachedTotalIns, cachedTotalOuts; | int cachedTotalIns, cachedTotalOuts; | ||||
| void processBypassed (AudioSampleBuffer&, MidiBuffer&); | |||||
| CARLA_DECLARE_NON_COPY_CLASS (AudioProcessor) | CARLA_DECLARE_NON_COPY_CLASS (AudioProcessor) | ||||
| }; | }; | ||||
| @@ -3,7 +3,7 @@ | |||||
| This file is part of the Water library. | This file is part of the Water library. | ||||
| Copyright (c) 2016 ROLI Ltd. | Copyright (c) 2016 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the ISC license | Permission is granted to use this software under the terms of the ISC license | ||||
| http://www.isc.org/downloads/software-support-policy/isc-license/ | http://www.isc.org/downloads/software-support-policy/isc-license/ | ||||
| @@ -24,14 +24,11 @@ | |||||
| */ | */ | ||||
| #include "FileInputSource.h" | #include "FileInputSource.h" | ||||
| #include "../files/FileInputStream.h" | |||||
| namespace water { | namespace water { | ||||
| FileInputSource::FileInputSource (const File& f, bool useFileTimeInHash) | |||||
| : file (f), useFileTimeInHashGeneration (useFileTimeInHash) | |||||
| { | |||||
| } | |||||
| FileInputSource::FileInputSource (const File& f) | |||||
| : file (f) {} | |||||
| FileInputSource::~FileInputSource() | FileInputSource::~FileInputSource() | ||||
| { | { | ||||
| @@ -47,16 +44,4 @@ InputStream* FileInputSource::createInputStreamFor (const String& relatedItemPat | |||||
| return file.getSiblingFile (relatedItemPath).createInputStream(); | return file.getSiblingFile (relatedItemPath).createInputStream(); | ||||
| } | } | ||||
| #if 0 | |||||
| int64 FileInputSource::hashCode() const | |||||
| { | |||||
| int64 h = file.hashCode(); | |||||
| if (useFileTimeInHashGeneration) | |||||
| h ^= file.getLastModificationTime().toMilliseconds(); | |||||
| return h; | |||||
| } | |||||
| #endif | |||||
| } | } | ||||
| @@ -3,7 +3,7 @@ | |||||
| This file is part of the Water library. | This file is part of the Water library. | ||||
| Copyright (c) 2016 ROLI Ltd. | Copyright (c) 2016 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the ISC license | Permission is granted to use this software under the terms of the ISC license | ||||
| http://www.isc.org/downloads/software-support-policy/isc-license/ | http://www.isc.org/downloads/software-support-policy/isc-license/ | ||||
| @@ -26,7 +26,6 @@ | |||||
| #ifndef WATER_FILEINPUTSOURCE_H_INCLUDED | #ifndef WATER_FILEINPUTSOURCE_H_INCLUDED | ||||
| #define WATER_FILEINPUTSOURCE_H_INCLUDED | #define WATER_FILEINPUTSOURCE_H_INCLUDED | ||||
| #include "InputSource.h" | |||||
| #include "../files/File.h" | #include "../files/File.h" | ||||
| namespace water { | namespace water { | ||||
| @@ -37,28 +36,22 @@ namespace water { | |||||
| @see InputSource | @see InputSource | ||||
| */ | */ | ||||
| class FileInputSource : public InputSource | |||||
| class FileInputSource | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| /** Creates a FileInputSource for a file. | |||||
| If the useFileTimeInHashGeneration parameter is true, then this object's | |||||
| hashCode() method will incorporate the file time into its hash code; if | |||||
| false, only the file name will be used for the hash. | |||||
| */ | |||||
| FileInputSource (const File& file, bool useFileTimeInHashGeneration = false); | |||||
| /** Creates a FileInputSource for a file. */ | |||||
| FileInputSource (const File& file); | |||||
| /** Destructor. */ | /** Destructor. */ | ||||
| ~FileInputSource(); | ~FileInputSource(); | ||||
| InputStream* createInputStream(); | InputStream* createInputStream(); | ||||
| InputStream* createInputStreamFor (const String& relatedItemPath); | InputStream* createInputStreamFor (const String& relatedItemPath); | ||||
| int64 hashCode() const; | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| const File file; | const File file; | ||||
| bool useFileTimeInHashGeneration; | |||||
| CARLA_DECLARE_NON_COPY_CLASS (FileInputSource) | CARLA_DECLARE_NON_COPY_CLASS (FileInputSource) | ||||
| }; | }; | ||||
| @@ -1,76 +0,0 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file is part of the Water library. | |||||
| Copyright (c) 2016 ROLI Ltd. | |||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the ISC license | |||||
| http://www.isc.org/downloads/software-support-policy/isc-license/ | |||||
| Permission to use, copy, modify, and/or distribute this software for any | |||||
| purpose with or without fee is hereby granted, provided that the above | |||||
| copyright notice and this permission notice appear in all copies. | |||||
| THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD | |||||
| TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||||
| FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, | |||||
| OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF | |||||
| USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER | |||||
| TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | |||||
| OF THIS SOFTWARE. | |||||
| ============================================================================== | |||||
| */ | |||||
| #ifndef WATER_INPUTSOURCE_H_INCLUDED | |||||
| #define WATER_INPUTSOURCE_H_INCLUDED | |||||
| #include "../water.h" | |||||
| namespace water { | |||||
| //============================================================================== | |||||
| /** | |||||
| A lightweight object that can create a stream to read some kind of resource. | |||||
| This may be used to refer to a file, or some other kind of source, allowing a | |||||
| caller to create an input stream that can read from it when required. | |||||
| @see FileInputSource | |||||
| */ | |||||
| class InputSource | |||||
| { | |||||
| public: | |||||
| //============================================================================== | |||||
| InputSource() noexcept {} | |||||
| /** Destructor. */ | |||||
| virtual ~InputSource() {} | |||||
| //============================================================================== | |||||
| /** Returns a new InputStream to read this item. | |||||
| @returns an inputstream that the caller will delete, or nullptr if | |||||
| the filename isn't found. | |||||
| */ | |||||
| virtual InputStream* createInputStream() = 0; | |||||
| /** Returns a new InputStream to read an item, relative. | |||||
| @param relatedItemPath the relative pathname of the resource that is required | |||||
| @returns an inputstream that the caller will delete, or nullptr if | |||||
| the item isn't found. | |||||
| */ | |||||
| virtual InputStream* createInputStreamFor (const String& relatedItemPath) = 0; | |||||
| #if 0 | |||||
| /** Returns a hash code that uniquely represents this item. | |||||
| */ | |||||
| virtual int64 hashCode() const = 0; | |||||
| #endif | |||||
| }; | |||||
| } | |||||
| #endif // WATER_INPUTSOURCE_H_INCLUDED | |||||
| @@ -3,7 +3,7 @@ | |||||
| This file is part of the Water library. | This file is part of the Water library. | ||||
| Copyright (c) 2016 ROLI Ltd. | Copyright (c) 2016 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the ISC license | Permission is granted to use this software under the terms of the ISC license | ||||
| http://www.isc.org/downloads/software-support-policy/isc-license/ | http://www.isc.org/downloads/software-support-policy/isc-license/ | ||||
| @@ -23,7 +23,6 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #include "InputSource.h" | |||||
| #include "InputStream.h" | #include "InputStream.h" | ||||
| #include "../memory/ByteOrder.h" | #include "../memory/ByteOrder.h" | ||||
| #include "../streams/MemoryOutputStream.h" | #include "../streams/MemoryOutputStream.h" | ||||
| @@ -3,7 +3,7 @@ | |||||
| This file is part of the Water library. | This file is part of the Water library. | ||||
| Copyright (c) 2016 ROLI Ltd. | Copyright (c) 2016 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the ISC license | Permission is granted to use this software under the terms of the ISC license | ||||
| http://www.isc.org/downloads/software-support-policy/isc-license/ | http://www.isc.org/downloads/software-support-policy/isc-license/ | ||||
| @@ -486,27 +486,6 @@ water_uchar String::operator[] (int index) const noexcept | |||||
| return text [index]; | return text [index]; | ||||
| } | } | ||||
| template <typename Type> | |||||
| struct HashGenerator | |||||
| { | |||||
| template <typename CharPointer> | |||||
| static Type calculate (CharPointer t) noexcept | |||||
| { | |||||
| Type result = Type(); | |||||
| while (! t.isEmpty()) | |||||
| result = ((Type) multiplier) * result + (Type) t.getAndAdvance(); | |||||
| return result; | |||||
| } | |||||
| enum { multiplier = sizeof (Type) > 4 ? 101 : 31 }; | |||||
| }; | |||||
| int String::hashCode() const noexcept { return HashGenerator<int> ::calculate (text); } | |||||
| int64 String::hashCode64() const noexcept { return HashGenerator<int64> ::calculate (text); } | |||||
| size_t String::hash() const noexcept { return HashGenerator<size_t> ::calculate (text); } | |||||
| //============================================================================== | //============================================================================== | ||||
| bool operator== (const String& s1, const String& s2) noexcept { return s1.compare (s2) == 0; } | bool operator== (const String& s1, const String& s2) noexcept { return s1.compare (s2) == 0; } | ||||
| bool operator!= (const String& s1, const String& s2) noexcept { return s1.compare (s2) != 0; } | bool operator!= (const String& s1, const String& s2) noexcept { return s1.compare (s2) != 0; } | ||||
| @@ -3,7 +3,7 @@ | |||||
| This file is part of the Water library. | This file is part of the Water library. | ||||
| Copyright (c) 2016 ROLI Ltd. | Copyright (c) 2016 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the ISC license | Permission is granted to use this software under the terms of the ISC license | ||||
| http://www.isc.org/downloads/software-support-policy/isc-license/ | http://www.isc.org/downloads/software-support-policy/isc-license/ | ||||
| @@ -120,15 +120,6 @@ public: | |||||
| typedef CharPointer_UTF8 CharPointerType; | typedef CharPointer_UTF8 CharPointerType; | ||||
| //============================================================================== | //============================================================================== | ||||
| /** Generates a probably-unique 32-bit hashcode from this string. */ | |||||
| int hashCode() const noexcept; | |||||
| /** Generates a probably-unique 64-bit hashcode from this string. */ | |||||
| int64 hashCode64() const noexcept; | |||||
| /** Generates a probably-unique hashcode from this string. */ | |||||
| size_t hash() const noexcept; | |||||
| /** Returns the number of characters in the string. */ | /** Returns the number of characters in the string. */ | ||||
| int length() const noexcept; | int length() const noexcept; | ||||
| @@ -1,7 +1,7 @@ | |||||
| /* | /* | ||||
| * Cross-platform C++ library for Carla, based on Juce v4 | * Cross-platform C++ library for Carla, based on Juce v4 | ||||
| * Copyright (C) 2015 ROLI Ltd. | * Copyright (C) 2015 ROLI Ltd. | ||||
| * Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| * Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| * | * | ||||
| * This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
| * modify it under the terms of the GNU General Public License as | * modify it under the terms of the GNU General Public License as | ||||
| @@ -69,9 +69,9 @@ namespace water | |||||
| class AudioProcessor; | class AudioProcessor; | ||||
| class File; | class File; | ||||
| class FileInputStream; | class FileInputStream; | ||||
| class FileInputSource; | |||||
| class FileOutputStream; | class FileOutputStream; | ||||
| class Identifier; | class Identifier; | ||||
| class InputSource; | |||||
| class InputStream; | class InputStream; | ||||
| class MidiBuffer; | class MidiBuffer; | ||||
| class MidiMessage; | class MidiMessage; | ||||
| @@ -3,7 +3,7 @@ | |||||
| This file is part of the Water library. | This file is part of the Water library. | ||||
| Copyright (c) 2016 ROLI Ltd. | Copyright (c) 2016 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the ISC license | Permission is granted to use this software under the terms of the ISC license | ||||
| http://www.isc.org/downloads/software-support-policy/isc-license/ | http://www.isc.org/downloads/software-support-policy/isc-license/ | ||||
| @@ -68,7 +68,7 @@ XmlElement* XmlDocument::parse (const String& xmlData) | |||||
| return doc.getDocumentElement(); | return doc.getDocumentElement(); | ||||
| } | } | ||||
| void XmlDocument::setInputSource (InputSource* const newSource) noexcept | |||||
| void XmlDocument::setInputSource (FileInputSource* const newSource) noexcept | |||||
| { | { | ||||
| inputSource = newSource; | inputSource = newSource; | ||||
| } | } | ||||
| @@ -3,7 +3,7 @@ | |||||
| This file is part of the Water library. | This file is part of the Water library. | ||||
| Copyright (c) 2016 ROLI Ltd. | Copyright (c) 2016 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
| Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||||
| Permission is granted to use this software under the terms of the ISC license | Permission is granted to use this software under the terms of the ISC license | ||||
| http://www.isc.org/downloads/software-support-policy/isc-license/ | http://www.isc.org/downloads/software-support-policy/isc-license/ | ||||
| @@ -122,9 +122,9 @@ public: | |||||
| The object that is passed-in will be deleted automatically when no longer needed. | The object that is passed-in will be deleted automatically when no longer needed. | ||||
| @see InputSource | |||||
| @see FileInputSource | |||||
| */ | */ | ||||
| void setInputSource (InputSource* newSource) noexcept; | |||||
| void setInputSource (FileInputSource* newSource) noexcept; | |||||
| /** Sets a flag to change the treatment of empty text elements. | /** Sets a flag to change the treatment of empty text elements. | ||||
| @@ -158,7 +158,7 @@ private: | |||||
| String lastError, dtdText; | String lastError, dtdText; | ||||
| StringArray tokenisedDTD; | StringArray tokenisedDTD; | ||||
| bool needToLoadDTD, ignoreEmptyTextElements; | bool needToLoadDTD, ignoreEmptyTextElements; | ||||
| ScopedPointer<InputSource> inputSource; | |||||
| ScopedPointer<FileInputSource> inputSource; | |||||
| XmlElement* parseDocumentElement (String::CharPointerType, bool outer); | XmlElement* parseDocumentElement (String::CharPointerType, bool outer); | ||||
| void setLastError (const String&, bool carryOn); | void setLastError (const String&, bool carryOn); | ||||