| @@ -145,7 +145,7 @@ static void carla_engine_init_common() | |||||
| #ifdef BUILD_BRIDGE | #ifdef BUILD_BRIDGE | ||||
| using water::File; | using water::File; | ||||
| File juceBinaryDir(File::getSpecialLocation(File::currentExecutableFile).getParentDirectory()); | |||||
| File waterBinaryDir(File::getSpecialLocation(File::currentExecutableFile).getParentDirectory()); | |||||
| /* | /* | ||||
| if (const char* const uisAlwaysOnTop = std::getenv("ENGINE_OPTION_FORCE_STEREO")) | if (const char* const uisAlwaysOnTop = std::getenv("ENGINE_OPTION_FORCE_STEREO")) | ||||
| @@ -191,12 +191,12 @@ static void carla_engine_init_common() | |||||
| if (const char* const binaryDir = std::getenv("ENGINE_OPTION_PATH_BINARIES")) | if (const char* const binaryDir = std::getenv("ENGINE_OPTION_PATH_BINARIES")) | ||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_PATH_BINARIES, 0, binaryDir); | gStandalone.engine->setOption(CB::ENGINE_OPTION_PATH_BINARIES, 0, binaryDir); | ||||
| else | else | ||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_PATH_BINARIES, 0, juceBinaryDir.getFullPathName().toRawUTF8()); | |||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_PATH_BINARIES, 0, waterBinaryDir.getFullPathName().toRawUTF8()); | |||||
| if (const char* const resourceDir = std::getenv("ENGINE_OPTION_PATH_RESOURCES")) | if (const char* const resourceDir = std::getenv("ENGINE_OPTION_PATH_RESOURCES")) | ||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_PATH_RESOURCES, 0, resourceDir); | gStandalone.engine->setOption(CB::ENGINE_OPTION_PATH_RESOURCES, 0, resourceDir); | ||||
| else | else | ||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_PATH_RESOURCES, 0, juceBinaryDir.getChildFile("resources").getFullPathName().toRawUTF8()); | |||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_PATH_RESOURCES, 0, waterBinaryDir.getChildFile("resources").getFullPathName().toRawUTF8()); | |||||
| if (const char* const preventBadBehaviour = std::getenv("ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR")) | if (const char* const preventBadBehaviour = std::getenv("ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR")) | ||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR, (std::strcmp(preventBadBehaviour, "true") == 0) ? 1 : 0, nullptr); | gStandalone.engine->setOption(CB::ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR, (std::strcmp(preventBadBehaviour, "true") == 0) ? 1 : 0, nullptr); | ||||
| @@ -520,17 +520,17 @@ const char* carla_get_supported_file_extensions() | |||||
| AudioFormatManager afm; | AudioFormatManager afm; | ||||
| afm.registerBasicFormats(); | afm.registerBasicFormats(); | ||||
| String juceFormats; | |||||
| String waterFormats; | |||||
| for (AudioFormat **it=afm.begin(), **end=afm.end(); it != end; ++it) | for (AudioFormat **it=afm.begin(), **end=afm.end(); it != end; ++it) | ||||
| { | { | ||||
| const StringArray& exts((*it)->getFileExtensions()); | const StringArray& exts((*it)->getFileExtensions()); | ||||
| for (String *eit=exts.begin(), *eend=exts.end(); eit != eend; ++eit) | for (String *eit=exts.begin(), *eend=exts.end(); eit != eend; ++eit) | ||||
| juceFormats += String(";*" + (*eit)).toRawUTF8(); | |||||
| waterFormats += String(";*" + (*eit)).toRawUTF8(); | |||||
| } | } | ||||
| retText += juceFormats.toRawUTF8(); | |||||
| retText += waterFormats.toRawUTF8(); | |||||
| } | } | ||||
| #endif | #endif | ||||
| } | } | ||||
| @@ -1544,7 +1544,7 @@ bool PatchbayGraph::connect(const bool external, const uint groupA, const uint p | |||||
| if (! graph.addConnection(groupA, static_cast<int>(adjustedPortA), groupB, static_cast<int>(adjustedPortB))) | if (! graph.addConnection(groupA, static_cast<int>(adjustedPortA), groupB, static_cast<int>(adjustedPortB))) | ||||
| { | { | ||||
| kEngine->setLastError("Failed from juce"); | |||||
| kEngine->setLastError("Failed from water"); | |||||
| return false; | return false; | ||||
| } | } | ||||
| @@ -1806,13 +1806,13 @@ void PatchbayGraph::process(CarlaEngine::ProtectedData* const data, const float* | |||||
| CARLA_SAFE_ASSERT_RETURN(data->events.out != nullptr,); | CARLA_SAFE_ASSERT_RETURN(data->events.out != nullptr,); | ||||
| CARLA_SAFE_ASSERT_RETURN(frames > 0,); | CARLA_SAFE_ASSERT_RETURN(frames > 0,); | ||||
| // put events in juce buffer | |||||
| // put events in water buffer | |||||
| { | { | ||||
| midiBuffer.clear(); | midiBuffer.clear(); | ||||
| fillWaterMidiBufferFromEngineEvents(midiBuffer, data->events.in); | fillWaterMidiBufferFromEngineEvents(midiBuffer, data->events.in); | ||||
| } | } | ||||
| // put carla audio in juce buffer | |||||
| // put carla audio in water buffer | |||||
| { | { | ||||
| int i=0; | int i=0; | ||||
| @@ -1826,13 +1826,13 @@ void PatchbayGraph::process(CarlaEngine::ProtectedData* const data, const float* | |||||
| graph.processBlock(audioBuffer, midiBuffer); | graph.processBlock(audioBuffer, midiBuffer); | ||||
| // put juce audio in carla buffer | |||||
| // put water audio in carla buffer | |||||
| { | { | ||||
| for (int i=0; i < static_cast<int>(outputs); ++i) | for (int i=0; i < static_cast<int>(outputs); ++i) | ||||
| carla_copyFloats(outBuf[i], audioBuffer.getReadPointer(i), frames); | carla_copyFloats(outBuf[i], audioBuffer.getReadPointer(i), frames); | ||||
| } | } | ||||
| // put juce events in carla buffer | |||||
| // put water events in carla buffer | |||||
| { | { | ||||
| carla_zeroStructs(data->events.out, kMaxEngineEventInternalCount); | carla_zeroStructs(data->events.out, kMaxEngineEventInternalCount); | ||||
| fillEngineEventsFromWaterMidiBuffer(data->events.out, midiBuffer); | fillEngineEventsFromWaterMidiBuffer(data->events.out, midiBuffer); | ||||
| @@ -1217,7 +1217,7 @@ int jack_client_real_time_priority(jack_client_t* client) | |||||
| { | { | ||||
| carla_debug("%s(%p)", __FUNCTION__, client); | carla_debug("%s(%p)", __FUNCTION__, client); | ||||
| // code as used by juce | |||||
| // code as used by water | |||||
| const int minPriority = sched_get_priority_min(SCHED_RR); | const int minPriority = sched_get_priority_min(SCHED_RR); | ||||
| const int maxPriority = sched_get_priority_max(SCHED_RR); | const int maxPriority = sched_get_priority_max(SCHED_RR); | ||||
| return ((maxPriority - minPriority) * 9) / 10 + minPriority; | return ((maxPriority - minPriority) * 9) / 10 + minPriority; | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_AUDIOSAMPLEBUFFER_H_INCLUDED | |||||
| #define JUCE_AUDIOSAMPLEBUFFER_H_INCLUDED | |||||
| #ifndef WATER_AUDIOSAMPLEBUFFER_H_INCLUDED | |||||
| #define WATER_AUDIOSAMPLEBUFFER_H_INCLUDED | |||||
| #include "../memory/HeapBlock.h" | #include "../memory/HeapBlock.h" | ||||
| @@ -65,8 +65,8 @@ public: | |||||
| : numChannels (numChannelsToAllocate), | : numChannels (numChannelsToAllocate), | ||||
| size (numSamplesToAllocate) | size (numSamplesToAllocate) | ||||
| { | { | ||||
| jassert (size >= 0); | |||||
| jassert (numChannels >= 0); | |||||
| CARLA_SAFE_ASSERT_RETURN (size >= 0,); | |||||
| CARLA_SAFE_ASSERT_RETURN (numChannels >= 0,); | |||||
| allocateData(); | allocateData(); | ||||
| } | } | ||||
| @@ -93,8 +93,9 @@ public: | |||||
| size (numSamples), | size (numSamples), | ||||
| allocatedBytes (0) | allocatedBytes (0) | ||||
| { | { | ||||
| jassert (dataToReferTo != nullptr); | |||||
| jassert (numChannelsToUse >= 0 && numSamples >= 0); | |||||
| CARLA_SAFE_ASSERT_RETURN (dataToReferTo != nullptr,); | |||||
| CARLA_SAFE_ASSERT_RETURN (numChannelsToUse >= 0 && numSamples >= 0,); | |||||
| allocateChannels (dataToReferTo, 0); | allocateChannels (dataToReferTo, 0); | ||||
| } | } | ||||
| @@ -123,8 +124,9 @@ public: | |||||
| allocatedBytes (0), | allocatedBytes (0), | ||||
| isClear (false) | isClear (false) | ||||
| { | { | ||||
| jassert (dataToReferTo != nullptr); | |||||
| jassert (numChannelsToUse >= 0 && startSample >= 0 && numSamples >= 0); | |||||
| CARLA_SAFE_ASSERT_RETURN (dataToReferTo != nullptr,); | |||||
| CARLA_SAFE_ASSERT_RETURN (numChannelsToUse >= 0 && startSample >= 0 && numSamples >= 0,); | |||||
| allocateChannels (dataToReferTo, startSample); | allocateChannels (dataToReferTo, startSample); | ||||
| } | } | ||||
| @@ -189,7 +191,7 @@ public: | |||||
| */ | */ | ||||
| ~AudioSampleBuffer() noexcept {} | ~AudioSampleBuffer() noexcept {} | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| /** Move constructor */ | /** Move constructor */ | ||||
| AudioSampleBuffer (AudioSampleBuffer&& other) noexcept | AudioSampleBuffer (AudioSampleBuffer&& other) noexcept | ||||
| : numChannels (other.numChannels), | : numChannels (other.numChannels), | ||||
| @@ -1095,4 +1097,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_AUDIOSAMPLEBUFFER_H_INCLUDED | |||||
| #endif // WATER_AUDIOSAMPLEBUFFER_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_ARRAY_H_INCLUDED | |||||
| #define JUCE_ARRAY_H_INCLUDED | |||||
| #ifndef WATER_ARRAY_H_INCLUDED | |||||
| #define WATER_ARRAY_H_INCLUDED | |||||
| #include "../containers/ArrayAllocationBase.h" | #include "../containers/ArrayAllocationBase.h" | ||||
| #include "../containers/ElementComparator.h" | #include "../containers/ElementComparator.h" | ||||
| @@ -77,7 +77,7 @@ public: | |||||
| new (data.elements + i) ElementType (other.data.elements[i]); | new (data.elements + i) ElementType (other.data.elements[i]); | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| Array (Array<ElementType>&& other) noexcept | Array (Array<ElementType>&& other) noexcept | ||||
| : data (static_cast<ArrayAllocationBase<ElementType>&&> (other.data)), | : data (static_cast<ArrayAllocationBase<ElementType>&&> (other.data)), | ||||
| numUsed (other.numUsed) | numUsed (other.numUsed) | ||||
| @@ -131,7 +131,7 @@ public: | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| Array& operator= (Array&& other) noexcept | Array& operator= (Array&& other) noexcept | ||||
| { | { | ||||
| deleteAllElements(); | deleteAllElements(); | ||||
| @@ -313,7 +313,7 @@ public: | |||||
| */ | */ | ||||
| inline ElementType* end() const noexcept | inline ElementType* end() const noexcept | ||||
| { | { | ||||
| #if JUCE_DEBUG | |||||
| #ifdef DEBUG | |||||
| if (data.elements == nullptr || numUsed <= 0) // (to keep static analysers happy) | if (data.elements == nullptr || numUsed <= 0) // (to keep static analysers happy) | ||||
| return data.elements; | return data.elements; | ||||
| #endif | #endif | ||||
| @@ -371,7 +371,7 @@ public: | |||||
| new (data.elements + numUsed++) ElementType (newElement); | new (data.elements + numUsed++) ElementType (newElement); | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| /** Appends a new element at the end of the array. | /** Appends a new element at the end of the array. | ||||
| @param newElement the new object to add to the array | @param newElement the new object to add to the array | ||||
| @@ -1130,4 +1130,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_ARRAY_H_INCLUDED | |||||
| #endif // WATER_ARRAY_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_ARRAYALLOCATIONBASE_H_INCLUDED | |||||
| #define JUCE_ARRAYALLOCATIONBASE_H_INCLUDED | |||||
| #ifndef WATER_ARRAYALLOCATIONBASE_H_INCLUDED | |||||
| #define WATER_ARRAYALLOCATIONBASE_H_INCLUDED | |||||
| #include "../memory/HeapBlock.h" | #include "../memory/HeapBlock.h" | ||||
| @@ -60,7 +60,7 @@ public: | |||||
| { | { | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| ArrayAllocationBase (ArrayAllocationBase<ElementType>&& other) noexcept | ArrayAllocationBase (ArrayAllocationBase<ElementType>&& other) noexcept | ||||
| : elements (static_cast<HeapBlock<ElementType>&&> (other.elements)), | : elements (static_cast<HeapBlock<ElementType>&&> (other.elements)), | ||||
| numAllocated (other.numAllocated) | numAllocated (other.numAllocated) | ||||
| @@ -138,4 +138,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_ARRAYALLOCATIONBASE_H_INCLUDED | |||||
| #endif // WATER_ARRAYALLOCATIONBASE_H_INCLUDED | |||||
| @@ -23,14 +23,14 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_ELEMENTCOMPARATOR_H_INCLUDED | |||||
| #define JUCE_ELEMENTCOMPARATOR_H_INCLUDED | |||||
| #ifndef WATER_ELEMENTCOMPARATOR_H_INCLUDED | |||||
| #define WATER_ELEMENTCOMPARATOR_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| namespace water { | namespace water { | ||||
| /** This is an internal helper class which converts a juce ElementComparator style | |||||
| /** This is an internal helper class which converts an ElementComparator style | |||||
| class (using a "compareElements" method) into a class that's compatible with | class (using a "compareElements" method) into a class that's compatible with | ||||
| std::sort (i.e. using an operator() to compare the elements) | std::sort (i.e. using an operator() to compare the elements) | ||||
| */ | */ | ||||
| @@ -44,7 +44,7 @@ struct SortFunctionConverter | |||||
| private: | private: | ||||
| ElementComparator& comparator; | ElementComparator& comparator; | ||||
| SortFunctionConverter& operator= (const SortFunctionConverter&) JUCE_DELETED_FUNCTION; | |||||
| SortFunctionConverter& operator= (const SortFunctionConverter&) WATER_DELETED_FUNCTION; | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -189,4 +189,4 @@ public: | |||||
| } | } | ||||
| #endif // JUCE_ELEMENTCOMPARATOR_H_INCLUDED | |||||
| #endif // WATER_ELEMENTCOMPARATOR_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_LINKEDLISTPOINTER_H_INCLUDED | |||||
| #define JUCE_LINKEDLISTPOINTER_H_INCLUDED | |||||
| #ifndef WATER_LINKEDLISTPOINTER_H_INCLUDED | |||||
| #define WATER_LINKEDLISTPOINTER_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -81,7 +81,7 @@ public: | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| LinkedListPointer (LinkedListPointer&& other) noexcept | LinkedListPointer (LinkedListPointer&& other) noexcept | ||||
| : item (other.item) | : item (other.item) | ||||
| { | { | ||||
| @@ -369,4 +369,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_LINKEDLISTPOINTER_H_INCLUDED | |||||
| #endif // WATER_LINKEDLISTPOINTER_H_INCLUDED | |||||
| @@ -44,7 +44,7 @@ NamedValueSet& NamedValueSet::operator= (const NamedValueSet& other) | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| NamedValueSet::NamedValueSet (NamedValueSet&& other) noexcept | NamedValueSet::NamedValueSet (NamedValueSet&& other) noexcept | ||||
| : values (static_cast<Array<NamedValue>&&> (other.values)) | : values (static_cast<Array<NamedValue>&&> (other.values)) | ||||
| { | { | ||||
| @@ -117,7 +117,7 @@ var* NamedValueSet::getVarPointer (const Identifier& name) const noexcept | |||||
| return nullptr; | return nullptr; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| bool NamedValueSet::set (const Identifier& name, var&& newValue) | bool NamedValueSet::set (const Identifier& name, var&& newValue) | ||||
| { | { | ||||
| if (var* const v = getVarPointer (name)) | if (var* const v = getVarPointer (name)) | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_NAMEDVALUESET_H_INCLUDED | |||||
| #define JUCE_NAMEDVALUESET_H_INCLUDED | |||||
| #ifndef WATER_NAMEDVALUESET_H_INCLUDED | |||||
| #define WATER_NAMEDVALUESET_H_INCLUDED | |||||
| #include "Array.h" | #include "Array.h" | ||||
| #include "Variant.h" | #include "Variant.h" | ||||
| @@ -50,7 +50,7 @@ public: | |||||
| /** Replaces this set with a copy of another set. */ | /** Replaces this set with a copy of another set. */ | ||||
| NamedValueSet& operator= (const NamedValueSet&); | NamedValueSet& operator= (const NamedValueSet&); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| NamedValueSet (NamedValueSet&&) noexcept; | NamedValueSet (NamedValueSet&&) noexcept; | ||||
| NamedValueSet& operator= (NamedValueSet&&) noexcept; | NamedValueSet& operator= (NamedValueSet&&) noexcept; | ||||
| #endif | #endif | ||||
| @@ -68,7 +68,7 @@ public: | |||||
| NamedValue (const Identifier& n, const var& v) : name (n), value (v) {} | NamedValue (const Identifier& n, const var& v) : name (n), value (v) {} | ||||
| NamedValue (const NamedValue& other) : name (other.name), value (other.value) {} | NamedValue (const NamedValue& other) : name (other.name), value (other.value) {} | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| NamedValue (NamedValue&& other) noexcept | NamedValue (NamedValue&& other) noexcept | ||||
| : name (static_cast<Identifier&&> (other.name)), | : name (static_cast<Identifier&&> (other.name)), | ||||
| value (static_cast<var&&> (other.value)) | value (static_cast<var&&> (other.value)) | ||||
| @@ -124,7 +124,7 @@ public: | |||||
| */ | */ | ||||
| bool set (const Identifier& name, const var& newValue); | bool set (const Identifier& name, const var& newValue); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| /** Changes or adds a named value. | /** Changes or adds a named value. | ||||
| @returns true if a value was changed or added; false if the | @returns true if a value was changed or added; false if the | ||||
| value was already set the value passed-in. | value was already set the value passed-in. | ||||
| @@ -186,4 +186,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_NAMEDVALUESET_H_INCLUDED | |||||
| #endif // WATER_NAMEDVALUESET_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_OWNEDARRAY_H_INCLUDED | |||||
| #define JUCE_OWNEDARRAY_H_INCLUDED | |||||
| #ifndef WATER_OWNEDARRAY_H_INCLUDED | |||||
| #define WATER_OWNEDARRAY_H_INCLUDED | |||||
| #include "ArrayAllocationBase.h" | #include "ArrayAllocationBase.h" | ||||
| @@ -73,7 +73,7 @@ public: | |||||
| deleteAllObjects(); | deleteAllObjects(); | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| OwnedArray (OwnedArray&& other) noexcept | OwnedArray (OwnedArray&& other) noexcept | ||||
| : data (static_cast<ArrayAllocationBase <ObjectClass*>&&> (other.data)), | : data (static_cast<ArrayAllocationBase <ObjectClass*>&&> (other.data)), | ||||
| numUsed (other.numUsed) | numUsed (other.numUsed) | ||||
| @@ -213,7 +213,7 @@ public: | |||||
| */ | */ | ||||
| inline ObjectClass** end() const noexcept | inline ObjectClass** end() const noexcept | ||||
| { | { | ||||
| #if JUCE_DEBUG | |||||
| #ifdef DEBUG | |||||
| if (data.elements == nullptr || numUsed <= 0) // (to keep static analysers happy) | if (data.elements == nullptr || numUsed <= 0) // (to keep static analysers happy) | ||||
| return data.elements; | return data.elements; | ||||
| #endif | #endif | ||||
| @@ -839,4 +839,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_OWNEDARRAY_H_INCLUDED | |||||
| #endif // WATER_OWNEDARRAY_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_REFERENCECOUNTEDARRAY_H_INCLUDED | |||||
| #define JUCE_REFERENCECOUNTEDARRAY_H_INCLUDED | |||||
| #ifndef WATER_REFERENCECOUNTEDARRAY_H_INCLUDED | |||||
| #define WATER_REFERENCECOUNTEDARRAY_H_INCLUDED | |||||
| #include "../memory/ReferenceCountedObject.h" | #include "../memory/ReferenceCountedObject.h" | ||||
| @@ -852,4 +852,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_REFERENCECOUNTEDARRAY_H_INCLUDED | |||||
| #endif // WATER_REFERENCECOUNTEDARRAY_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_SORTEDSET_H_INCLUDED | |||||
| #define JUCE_SORTEDSET_H_INCLUDED | |||||
| #ifndef WATER_SORTEDSET_H_INCLUDED | |||||
| #define WATER_SORTEDSET_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -463,4 +463,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_SORTEDSET_H_INCLUDED | |||||
| #endif // WATER_SORTEDSET_H_INCLUDED | |||||
| @@ -164,7 +164,7 @@ public: | |||||
| int toInt (const ValueUnion& data) const noexcept override { return data.boolValue ? 1 : 0; }; | int toInt (const ValueUnion& data) const noexcept override { return data.boolValue ? 1 : 0; }; | ||||
| int64 toInt64 (const ValueUnion& data) const noexcept override { return data.boolValue ? 1 : 0; }; | int64 toInt64 (const ValueUnion& data) const noexcept override { return data.boolValue ? 1 : 0; }; | ||||
| double toDouble (const ValueUnion& data) const noexcept override { return data.boolValue ? 1.0 : 0.0; } | double toDouble (const ValueUnion& data) const noexcept override { return data.boolValue ? 1.0 : 0.0; } | ||||
| String toString (const ValueUnion& data) const override { return String::charToString (data.boolValue ? (juce_wchar) '1' : (juce_wchar) '0'); } | |||||
| String toString (const ValueUnion& data) const override { return String::charToString (data.boolValue ? (water_uchar) '1' : (water_uchar) '0'); } | |||||
| bool toBool (const ValueUnion& data) const noexcept override { return data.boolValue; } | bool toBool (const ValueUnion& data) const noexcept override { return data.boolValue; } | ||||
| bool isBool() const noexcept override { return true; } | bool isBool() const noexcept override { return true; } | ||||
| @@ -265,7 +265,7 @@ var& var::operator= (const double v) { type->cleanUp (value); type = | |||||
| var& var::operator= (const char* const v) { type->cleanUp (value); type = &VariantType_String::instance; new (value.stringValue) String (v); return *this; } | var& var::operator= (const char* const v) { type->cleanUp (value); type = &VariantType_String::instance; new (value.stringValue) String (v); return *this; } | ||||
| var& var::operator= (const String& v) { type->cleanUp (value); type = &VariantType_String::instance; new (value.stringValue) String (v); return *this; } | var& var::operator= (const String& v) { type->cleanUp (value); type = &VariantType_String::instance; new (value.stringValue) String (v); return *this; } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| var::var (var&& other) noexcept | var::var (var&& other) noexcept | ||||
| : type (other.type), | : type (other.type), | ||||
| value (other.value) | value (other.value) | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_VARIANT_H_INCLUDED | |||||
| #define JUCE_VARIANT_H_INCLUDED | |||||
| #ifndef WATER_VARIANT_H_INCLUDED | |||||
| #define WATER_VARIANT_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -69,7 +69,7 @@ public: | |||||
| var& operator= (const char* value); | var& operator= (const char* value); | ||||
| var& operator= (const String& value); | var& operator= (const String& value); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| var (var&&) noexcept; | var (var&&) noexcept; | ||||
| var (String&&); | var (String&&); | ||||
| var& operator= (var&&) noexcept; | var& operator= (var&&) noexcept; | ||||
| @@ -175,4 +175,4 @@ struct VariantConverter<String> | |||||
| } | } | ||||
| #endif // JUCE_VARIANT_H_INCLUDED | |||||
| #endif // WATER_VARIANT_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_DIRECTORYITERATOR_H_INCLUDED | |||||
| #define JUCE_DIRECTORYITERATOR_H_INCLUDED | |||||
| #ifndef WATER_DIRECTORYITERATOR_H_INCLUDED | |||||
| #define WATER_DIRECTORYITERATOR_H_INCLUDED | |||||
| #include "File.h" | #include "File.h" | ||||
| #include "../text/StringArray.h" | #include "../text/StringArray.h" | ||||
| @@ -159,4 +159,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_DIRECTORYITERATOR_H_INCLUDED | |||||
| #endif // WATER_DIRECTORYITERATOR_H_INCLUDED | |||||
| @@ -77,7 +77,7 @@ File& File::operator= (const File& other) | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| File::File (File&& other) noexcept | File::File (File&& other) noexcept | ||||
| : fullPath (static_cast<String&&> (other.fullPath)) | : fullPath (static_cast<String&&> (other.fullPath)) | ||||
| { | { | ||||
| @@ -196,23 +196,14 @@ String File::parseAbsolutePath (const String& p) | |||||
| } | } | ||||
| else if (! path.startsWithChar (separator)) | else if (! path.startsWithChar (separator)) | ||||
| { | { | ||||
| #if JUCE_DEBUG || JUCE_LOG_ASSERTIONS | |||||
| if (! (path.startsWith ("./") || path.startsWith ("../"))) | |||||
| { | |||||
| /* When you supply a raw string to the File object constructor, it must be an absolute path. | |||||
| If you're trying to parse a string that may be either a relative path or an absolute path, | |||||
| you MUST provide a context against which the partial path can be evaluated - you can do | |||||
| this by simply using File::getChildFile() instead of the File constructor. E.g. saying | |||||
| "File::getCurrentWorkingDirectory().getChildFile (myUnknownPath)" would return an absolute | |||||
| path if that's what was supplied, or would evaluate a partial path relative to the CWD. | |||||
| */ | |||||
| jassertfalse; | |||||
| #if JUCE_LOG_ASSERTIONS | |||||
| Logger::writeToLog ("Illegal absolute path: " + path); | |||||
| #endif | |||||
| } | |||||
| #endif | |||||
| /* When you supply a raw string to the File object constructor, it must be an absolute path. | |||||
| If you're trying to parse a string that may be either a relative path or an absolute path, | |||||
| you MUST provide a context against which the partial path can be evaluated - you can do | |||||
| this by simply using File::getChildFile() instead of the File constructor. E.g. saying | |||||
| "File::getCurrentWorkingDirectory().getChildFile (myUnknownPath)" would return an absolute | |||||
| path if that's what was supplied, or would evaluate a partial path relative to the CWD. | |||||
| */ | |||||
| CARLA_SAFE_ASSERT_RETURN(path.startsWith ("./") || path.startsWith ("../"), String()); | |||||
| return File::getCurrentWorkingDirectory().getChildFile (path).getFullPathName(); | return File::getCurrentWorkingDirectory().getChildFile (path).getFullPathName(); | ||||
| } | } | ||||
| @@ -399,7 +390,7 @@ int64 File::hashCode64() const { return fullPath.hashCode64(); } | |||||
| //============================================================================== | //============================================================================== | ||||
| bool File::isAbsolutePath (StringRef path) | bool File::isAbsolutePath (StringRef path) | ||||
| { | { | ||||
| const juce_wchar firstChar = *(path.text); | |||||
| const water_uchar firstChar = *(path.text); | |||||
| return firstChar == separator | return firstChar == separator | ||||
| #ifdef CARLA_OS_WIN | #ifdef CARLA_OS_WIN | ||||
| @@ -417,7 +408,7 @@ File File::getChildFile (StringRef relativePath) const | |||||
| return File (String (r)); | return File (String (r)); | ||||
| #ifdef CARLA_OS_WIN | #ifdef CARLA_OS_WIN | ||||
| if (r.indexOf ((juce_wchar) '/') >= 0) | |||||
| if (r.indexOf ((water_uchar) '/') >= 0) | |||||
| return getChildFile (String (r).replaceCharacter ('/', '\\')); | return getChildFile (String (r).replaceCharacter ('/', '\\')); | ||||
| #endif | #endif | ||||
| @@ -426,11 +417,11 @@ File File::getChildFile (StringRef relativePath) const | |||||
| while (*r == '.') | while (*r == '.') | ||||
| { | { | ||||
| String::CharPointerType lastPos = r; | String::CharPointerType lastPos = r; | ||||
| const juce_wchar secondChar = *++r; | |||||
| const water_uchar secondChar = *++r; | |||||
| if (secondChar == '.') // remove "../" | if (secondChar == '.') // remove "../" | ||||
| { | { | ||||
| const juce_wchar thirdChar = *++r; | |||||
| const water_uchar thirdChar = *++r; | |||||
| if (thirdChar == separator || thirdChar == 0) | if (thirdChar == separator || thirdChar == 0) | ||||
| { | { | ||||
| @@ -664,7 +655,7 @@ bool File::hasFileExtension (StringRef possibleSuffix) const | |||||
| if (possibleSuffix.isEmpty()) | if (possibleSuffix.isEmpty()) | ||||
| return fullPath.lastIndexOfChar ('.') <= fullPath.lastIndexOfChar (separator); | return fullPath.lastIndexOfChar ('.') <= fullPath.lastIndexOfChar (separator); | ||||
| const int semicolon = possibleSuffix.text.indexOf ((juce_wchar) ';'); | |||||
| const int semicolon = possibleSuffix.text.indexOf ((water_uchar) ';'); | |||||
| if (semicolon >= 0) | if (semicolon >= 0) | ||||
| return hasFileExtension (String (possibleSuffix.text).substring (0, semicolon).trimEnd()) | return hasFileExtension (String (possibleSuffix.text).substring (0, semicolon).trimEnd()) | ||||
| @@ -849,7 +840,7 @@ static int countNumberOfSeparators (String::CharPointerType s) | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c = s.getAndAdvance(); | |||||
| const water_uchar c = s.getAndAdvance(); | |||||
| if (c == 0) | if (c == 0) | ||||
| break; | break; | ||||
| @@ -881,8 +872,8 @@ String File::getRelativePathFrom (const File& dir) const | |||||
| for (int i = 0;;) | for (int i = 0;;) | ||||
| { | { | ||||
| const juce_wchar c1 = thisPathIter.getAndAdvance(); | |||||
| const juce_wchar c2 = dirPathIter.getAndAdvance(); | |||||
| const water_uchar c1 = thisPathIter.getAndAdvance(); | |||||
| const water_uchar c2 = dirPathIter.getAndAdvance(); | |||||
| #if NAMES_ARE_CASE_SENSITIVE | #if NAMES_ARE_CASE_SENSITIVE | ||||
| if (c1 != c2 | if (c1 != c2 | ||||
| @@ -959,7 +950,7 @@ bool File::createSymbolicLink (const File& linkFileToCreate, bool overwriteExist | |||||
| } | } | ||||
| return true; | return true; | ||||
| #elif JUCE_MSVC | |||||
| #elif _MSVC_VER | |||||
| return CreateSymbolicLink (linkFileToCreate.getFullPathName().toUTF8(), | return CreateSymbolicLink (linkFileToCreate.getFullPathName().toUTF8(), | ||||
| fullPath.toUTF8(), | fullPath.toUTF8(), | ||||
| isDirectory() ? SYMBOLIC_LINK_FLAG_DIRECTORY : 0) != FALSE; | isDirectory() ? SYMBOLIC_LINK_FLAG_DIRECTORY : 0) != FALSE; | ||||
| @@ -1019,7 +1010,7 @@ namespace WindowsFileHelpers | |||||
| } | } | ||||
| } | } | ||||
| const juce_wchar File::separator = '\\'; | |||||
| const water_uchar File::separator = '\\'; | |||||
| const String File::separatorString ("\\"); | const String File::separatorString ("\\"); | ||||
| bool File::isDirectory() const | bool File::isDirectory() const | ||||
| @@ -1210,23 +1201,23 @@ private: | |||||
| namespace | namespace | ||||
| { | { | ||||
| #if CARLA_OS_MAC | #if CARLA_OS_MAC | ||||
| typedef struct stat juce_statStruct; | |||||
| #define JUCE_STAT stat | |||||
| typedef struct stat water_statStruct; | |||||
| #define WATER_STAT stat | |||||
| #else | #else | ||||
| typedef struct stat64 juce_statStruct; | |||||
| #define JUCE_STAT stat64 | |||||
| typedef struct stat64 water_statStruct; | |||||
| #define WATER_STAT stat64 | |||||
| #endif | #endif | ||||
| bool juce_stat (const String& fileName, juce_statStruct& info) | |||||
| bool water_stat (const String& fileName, water_statStruct& info) | |||||
| { | { | ||||
| return fileName.isNotEmpty() | return fileName.isNotEmpty() | ||||
| && JUCE_STAT (fileName.toUTF8(), &info) == 0; | |||||
| && WATER_STAT (fileName.toUTF8(), &info) == 0; | |||||
| } | } | ||||
| #if CARLA_OS_MAC | #if CARLA_OS_MAC | ||||
| static int64 getCreationTime (const juce_statStruct& s) noexcept { return (int64) s.st_birthtime; } | |||||
| static int64 getCreationTime (const water_statStruct& s) noexcept { return (int64) s.st_birthtime; } | |||||
| #else | #else | ||||
| static int64 getCreationTime (const juce_statStruct& s) noexcept { return (int64) s.st_ctime; } | |||||
| static int64 getCreationTime (const water_statStruct& s) noexcept { return (int64) s.st_ctime; } | |||||
| #endif | #endif | ||||
| void updateStatInfoForFile (const String& path, bool* const isDir, int64* const fileSize, | void updateStatInfoForFile (const String& path, bool* const isDir, int64* const fileSize, | ||||
| @@ -1234,8 +1225,8 @@ namespace | |||||
| { | { | ||||
| if (isDir != nullptr || fileSize != nullptr || modTime != nullptr || creationTime != nullptr) | if (isDir != nullptr || fileSize != nullptr || modTime != nullptr || creationTime != nullptr) | ||||
| { | { | ||||
| juce_statStruct info; | |||||
| const bool statOk = juce_stat (path, info); | |||||
| water_statStruct info; | |||||
| const bool statOk = water_stat (path, info); | |||||
| if (isDir != nullptr) *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | if (isDir != nullptr) *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | ||||
| if (fileSize != nullptr) *fileSize = statOk ? (int64) info.st_size : 0; | if (fileSize != nullptr) *fileSize = statOk ? (int64) info.st_size : 0; | ||||
| @@ -1253,15 +1244,15 @@ namespace | |||||
| } | } | ||||
| } | } | ||||
| const juce_wchar File::separator = '/'; | |||||
| const water_uchar File::separator = '/'; | |||||
| const String File::separatorString ("/"); | const String File::separatorString ("/"); | ||||
| bool File::isDirectory() const | bool File::isDirectory() const | ||||
| { | { | ||||
| juce_statStruct info; | |||||
| water_statStruct info; | |||||
| return fullPath.isNotEmpty() | return fullPath.isNotEmpty() | ||||
| && (juce_stat (fullPath, info) && ((info.st_mode & S_IFDIR) != 0)); | |||||
| && (water_stat (fullPath, info) && ((info.st_mode & S_IFDIR) != 0)); | |||||
| } | } | ||||
| bool File::exists() const | bool File::exists() const | ||||
| @@ -1288,8 +1279,8 @@ bool File::hasWriteAccess() const | |||||
| int64 File::getSize() const | int64 File::getSize() const | ||||
| { | { | ||||
| juce_statStruct info; | |||||
| return juce_stat (fullPath, info) ? info.st_size : 0; | |||||
| water_statStruct info; | |||||
| return water_stat (fullPath, info) ? info.st_size : 0; | |||||
| } | } | ||||
| bool File::deleteFile() const | bool File::deleteFile() const | ||||
| @@ -1347,15 +1338,15 @@ File File::getCurrentWorkingDirectory() | |||||
| return File (CharPointer_UTF8 (cwd)); | return File (CharPointer_UTF8 (cwd)); | ||||
| } | } | ||||
| File juce_getExecutableFile(); | |||||
| File juce_getExecutableFile() | |||||
| File water_getExecutableFile(); | |||||
| File water_getExecutableFile() | |||||
| { | { | ||||
| struct DLAddrReader | struct DLAddrReader | ||||
| { | { | ||||
| static String getFilename() | static String getFilename() | ||||
| { | { | ||||
| Dl_info exeInfo; | Dl_info exeInfo; | ||||
| void* localSymbol = (void*) juce_getExecutableFile; | |||||
| void* localSymbol = (void*) water_getExecutableFile; | |||||
| dladdr (localSymbol, &exeInfo); | dladdr (localSymbol, &exeInfo); | ||||
| const CharPointer_UTF8 filename (exeInfo.dli_fname); | const CharPointer_UTF8 filename (exeInfo.dli_fname); | ||||
| @@ -1394,7 +1385,7 @@ File juce_getExecutableFile() | |||||
| #ifdef CARLA_OS_MAC | #ifdef CARLA_OS_MAC | ||||
| static NSString* getFileLink (const String& path) | static NSString* getFileLink (const String& path) | ||||
| { | { | ||||
| return [[NSFileManager defaultManager] destinationOfSymbolicLinkAtPath: juceStringToNS (path) error: nil]; | |||||
| return [[NSFileManager defaultManager] destinationOfSymbolicLinkAtPath: waterStringToNS (path) error: nil]; | |||||
| } | } | ||||
| bool File::isSymbolicLink() const | bool File::isSymbolicLink() const | ||||
| @@ -1405,7 +1396,7 @@ bool File::isSymbolicLink() const | |||||
| File File::getLinkedTarget() const | File File::getLinkedTarget() const | ||||
| { | { | ||||
| if (NSString* dest = getFileLink (fullPath)) | if (NSString* dest = getFileLink (fullPath)) | ||||
| return getSiblingFile (nsStringToJuce (dest)); | |||||
| return getSiblingFile (nsStringToWater (dest)); | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| @@ -1416,14 +1407,14 @@ bool File::copyInternal (const File& dest) const | |||||
| { | { | ||||
| NSFileManager* fm = [NSFileManager defaultManager]; | NSFileManager* fm = [NSFileManager defaultManager]; | ||||
| return [fm fileExistsAtPath: juceStringToNS (fullPath)] | |||||
| return [fm fileExistsAtPath: waterStringToNS (fullPath)] | |||||
| #if defined (MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 | #if defined (MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 | ||||
| && [fm copyItemAtPath: juceStringToNS (fullPath) | |||||
| toPath: juceStringToNS (dest.getFullPathName()) | |||||
| && [fm copyItemAtPath: waterStringToNS (fullPath) | |||||
| toPath: waterStringToNS (dest.getFullPathName()) | |||||
| error: nil]; | error: nil]; | ||||
| #else | #else | ||||
| && [fm copyPath: juceStringToNS (fullPath) | |||||
| toPath: juceStringToNS (dest.getFullPathName()) | |||||
| && [fm copyPath: waterStringToNS (fullPath) | |||||
| toPath: waterStringToNS (dest.getFullPathName()) | |||||
| handler: nil]; | handler: nil]; | ||||
| #endif | #endif | ||||
| } | } | ||||
| @@ -1437,13 +1428,13 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||||
| switch (type) | switch (type) | ||||
| { | { | ||||
| case userHomeDirectory: resultPath = nsStringToJuce (NSHomeDirectory()); break; | |||||
| case userHomeDirectory: resultPath = nsStringToWater (NSHomeDirectory()); break; | |||||
| case userDocumentsDirectory: resultPath = "~/Documents"; break; | case userDocumentsDirectory: resultPath = "~/Documents"; break; | ||||
| case userDesktopDirectory: resultPath = "~/Desktop"; break; | case userDesktopDirectory: resultPath = "~/Desktop"; break; | ||||
| case tempDirectory: | case tempDirectory: | ||||
| { | { | ||||
| File tmp ("~/Library/Caches/" + juce_getExecutableFile().getFileNameWithoutExtension()); | |||||
| File tmp ("~/Library/Caches/" + water_getExecutableFile().getFileNameWithoutExtension()); | |||||
| tmp.createDirectory(); | tmp.createDirectory(); | ||||
| return File (tmp.getFullPathName()); | return File (tmp.getFullPathName()); | ||||
| } | } | ||||
| @@ -1457,16 +1448,16 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||||
| case globalApplicationsDirectory: resultPath = "/Applications"; break; | case globalApplicationsDirectory: resultPath = "/Applications"; break; | ||||
| case invokedExecutableFile: | case invokedExecutableFile: | ||||
| if (juce_argv != nullptr && juce_argc > 0) | |||||
| return File::getCurrentWorkingDirectory().getChildFile (CharPointer_UTF8 (juce_argv[0])); | |||||
| if (water_argv != nullptr && water_argc > 0) | |||||
| return File::getCurrentWorkingDirectory().getChildFile (CharPointer_UTF8 (water_argv[0])); | |||||
| // deliberate fall-through... | // deliberate fall-through... | ||||
| case currentExecutableFile: | case currentExecutableFile: | ||||
| return juce_getExecutableFile(); | |||||
| return water_getExecutableFile(); | |||||
| case currentApplicationFile: | case currentApplicationFile: | ||||
| { | { | ||||
| const File exe (juce_getExecutableFile()); | |||||
| const File exe (water_getExecutableFile()); | |||||
| const File parent (exe.getParentDirectory()); | const File parent (exe.getParentDirectory()); | ||||
| return parent.getFullPathName().endsWithIgnoreCase ("Contents/MacOS") | return parent.getFullPathName().endsWithIgnoreCase ("Contents/MacOS") | ||||
| @@ -1506,7 +1497,7 @@ public: | |||||
| { | { | ||||
| @autoreleasepool | @autoreleasepool | ||||
| { | { | ||||
| enumerator = [[[NSFileManager defaultManager] enumeratorAtPath: juceStringToNS (directory.getFullPathName())] retain]; | |||||
| enumerator = [[[NSFileManager defaultManager] enumeratorAtPath: waterStringToNS (directory.getFullPathName())] retain]; | |||||
| } | } | ||||
| } | } | ||||
| @@ -1530,7 +1521,7 @@ public: | |||||
| return false; | return false; | ||||
| [enumerator skipDescendents]; | [enumerator skipDescendents]; | ||||
| filenameFound = nsStringToJuce (file).convertToPrecomposedUnicode(); | |||||
| filenameFound = nsStringToWater (file).convertToPrecomposedUnicode(); | |||||
| if (wildcardUTF8 == nullptr) | if (wildcardUTF8 == nullptr) | ||||
| wildcardUTF8 = wildCard.toUTF8(); | wildcardUTF8 = wildCard.toUTF8(); | ||||
| @@ -1634,12 +1625,12 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||||
| case currentExecutableFile: | case currentExecutableFile: | ||||
| case currentApplicationFile: | case currentApplicationFile: | ||||
| return juce_getExecutableFile(); | |||||
| return water_getExecutableFile(); | |||||
| case hostApplicationPath: | case hostApplicationPath: | ||||
| { | { | ||||
| const File f ("/proc/self/exe"); | const File f ("/proc/self/exe"); | ||||
| return f.isSymbolicLink() ? f.getLinkedTarget() : juce_getExecutableFile(); | |||||
| return f.isSymbolicLink() ? f.getLinkedTarget() : water_getExecutableFile(); | |||||
| } | } | ||||
| default: | default: | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_FILE_H_INCLUDED | |||||
| #define JUCE_FILE_H_INCLUDED | |||||
| #ifndef WATER_FILE_H_INCLUDED | |||||
| #define WATER_FILE_H_INCLUDED | |||||
| #include "../containers/Array.h" | #include "../containers/Array.h" | ||||
| #include "../misc/Result.h" | #include "../misc/Result.h" | ||||
| @@ -89,7 +89,7 @@ public: | |||||
| /** Copies from another file object. */ | /** Copies from another file object. */ | ||||
| File& operator= (const File& otherFile); | File& operator= (const File& otherFile); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| File (File&&) noexcept; | File (File&&) noexcept; | ||||
| File& operator= (File&&) noexcept; | File& operator= (File&&) noexcept; | ||||
| #endif | #endif | ||||
| @@ -705,25 +705,6 @@ public: | |||||
| */ | */ | ||||
| bool isOnRemovableDrive() const; | bool isOnRemovableDrive() const; | ||||
| //============================================================================== | |||||
| /** Launches the file as a process. | |||||
| - if the file is executable, this will run it. | |||||
| - if it's a document of some kind, it will launch the document with its | |||||
| default viewer application. | |||||
| - if it's a folder, it will be opened in Explorer, Finder, or equivalent. | |||||
| @see revealToUser | |||||
| */ | |||||
| bool startAsProcess (const String& parameters = String()) const; | |||||
| /** Opens Finder, Explorer, or whatever the OS uses, to show the user this file's location. | |||||
| @see startAsProcess | |||||
| */ | |||||
| void revealToUser() const; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** A set of types of location that can be passed to the getSpecialLocation() method. | /** A set of types of location that can be passed to the getSpecialLocation() method. | ||||
| */ | */ | ||||
| @@ -815,7 +796,7 @@ public: | |||||
| /** The system-specific file separator character. | /** The system-specific file separator character. | ||||
| On Windows, this will be '\', on Mac/Linux, it'll be '/' | On Windows, this will be '\', on Mac/Linux, it'll be '/' | ||||
| */ | */ | ||||
| static const juce_wchar separator; | |||||
| static const water_uchar separator; | |||||
| /** The system-specific file separator character, as a string. | /** The system-specific file separator character, as a string. | ||||
| On Windows, this will be '\', on Mac/Linux, it'll be '/' | On Windows, this will be '\', on Mac/Linux, it'll be '/' | ||||
| @@ -882,7 +863,7 @@ public: | |||||
| #endif | #endif | ||||
| //============================================================================== | //============================================================================== | ||||
| #if JUCE_MAC | |||||
| #ifdef CARLA_OS_MAC | |||||
| /** OSX ONLY - Finds the OSType of a file from the its resources. */ | /** OSX ONLY - Finds the OSType of a file from the its resources. */ | ||||
| OSType getMacOSType() const; | OSType getMacOSType() const; | ||||
| @@ -929,4 +910,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_FILE_H_INCLUDED | |||||
| #endif // WATER_FILE_H_INCLUDED | |||||
| @@ -27,8 +27,7 @@ | |||||
| namespace water { | namespace water { | ||||
| int64 juce_fileSetPosition (void* handle, int64 pos); | |||||
| static int64 water_fileSetPosition (void* handle, int64 pos); | |||||
| //============================================================================== | //============================================================================== | ||||
| FileInputStream::FileInputStream (const File& f) | FileInputStream::FileInputStream (const File& f) | ||||
| @@ -79,7 +78,7 @@ bool FileInputStream::setPosition (int64 pos) | |||||
| jassert (openedOk()); | jassert (openedOk()); | ||||
| if (pos != currentPosition) | if (pos != currentPosition) | ||||
| currentPosition = juce_fileSetPosition (fileHandle, pos); | |||||
| currentPosition = water_fileSetPosition (fileHandle, pos); | |||||
| return currentPosition == pos; | return currentPosition == pos; | ||||
| } | } | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_FILEINPUTSTREAM_H_INCLUDED | |||||
| #define JUCE_FILEINPUTSTREAM_H_INCLUDED | |||||
| #ifndef WATER_FILEINPUTSTREAM_H_INCLUDED | |||||
| #define WATER_FILEINPUTSTREAM_H_INCLUDED | |||||
| #include "File.h" | #include "File.h" | ||||
| #include "../streams/InputStream.h" | #include "../streams/InputStream.h" | ||||
| @@ -95,4 +95,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_FILEINPUTSTREAM_H_INCLUDED | |||||
| #endif // WATER_FILEINPUTSTREAM_H_INCLUDED | |||||
| @@ -27,7 +27,7 @@ | |||||
| namespace water { | namespace water { | ||||
| int64 juce_fileSetPosition (void* handle, int64 pos); | |||||
| int64 water_fileSetPosition (void* handle, int64 pos); | |||||
| //============================================================================== | //============================================================================== | ||||
| FileOutputStream::FileOutputStream (const File& f, const size_t bufferSizeToUse) | FileOutputStream::FileOutputStream (const File& f, const size_t bufferSizeToUse) | ||||
| @@ -60,7 +60,7 @@ bool FileOutputStream::setPosition (int64 newPosition) | |||||
| if (newPosition != currentPosition) | if (newPosition != currentPosition) | ||||
| { | { | ||||
| flushBuffer(); | flushBuffer(); | ||||
| currentPosition = juce_fileSetPosition (fileHandle, newPosition); | |||||
| currentPosition = water_fileSetPosition (fileHandle, newPosition); | |||||
| } | } | ||||
| return newPosition == currentPosition; | return newPosition == currentPosition; | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_FILEOUTPUTSTREAM_H_INCLUDED | |||||
| #define JUCE_FILEOUTPUTSTREAM_H_INCLUDED | |||||
| #ifndef WATER_FILEOUTPUTSTREAM_H_INCLUDED | |||||
| #define WATER_FILEOUTPUTSTREAM_H_INCLUDED | |||||
| #include "../files/File.h" | #include "../files/File.h" | ||||
| #include "../memory/HeapBlock.h" | #include "../memory/HeapBlock.h" | ||||
| @@ -121,4 +121,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_FILEOUTPUTSTREAM_H_INCLUDED | |||||
| #endif // WATER_FILEOUTPUTSTREAM_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_TEMPORARYFILE_H_INCLUDED | |||||
| #define JUCE_TEMPORARYFILE_H_INCLUDED | |||||
| #ifndef WATER_TEMPORARYFILE_H_INCLUDED | |||||
| #define WATER_TEMPORARYFILE_H_INCLUDED | |||||
| #include "TemporaryFile.h" | #include "TemporaryFile.h" | ||||
| #include "File.h" | #include "File.h" | ||||
| @@ -169,4 +169,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_TEMPORARYFILE_H_INCLUDED | |||||
| #endif // WATER_TEMPORARYFILE_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_MATHSFUNCTIONS_H_INCLUDED | |||||
| #define JUCE_MATHSFUNCTIONS_H_INCLUDED | |||||
| #ifndef WATER_MATHSFUNCTIONS_H_INCLUDED | |||||
| #define WATER_MATHSFUNCTIONS_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -254,16 +254,16 @@ int numElementsInArray (Type (&array)[N]) | |||||
| //============================================================================== | //============================================================================== | ||||
| // Some useful maths functions that aren't always present with all compilers and build settings. | // Some useful maths functions that aren't always present with all compilers and build settings. | ||||
| /** Using juce_hypot is easier than dealing with the different types of hypot function | |||||
| /** Using water_hypot is easier than dealing with the different types of hypot function | |||||
| that are provided by the various platforms and compilers. */ | that are provided by the various platforms and compilers. */ | ||||
| template <typename Type> | template <typename Type> | ||||
| Type juce_hypot (Type a, Type b) noexcept | |||||
| Type water_hypot (Type a, Type b) noexcept | |||||
| { | { | ||||
| return static_cast<Type> (hypot (a, b)); | return static_cast<Type> (hypot (a, b)); | ||||
| } | } | ||||
| template <> | template <> | ||||
| inline float juce_hypot (float a, float b) noexcept | |||||
| inline float water_hypot (float a, float b) noexcept | |||||
| { | { | ||||
| return hypotf (a, b); | return hypotf (a, b); | ||||
| } | } | ||||
| @@ -304,19 +304,19 @@ inline double radiansToDegrees (double radians) noexcept { return radians * (1 | |||||
| platform-independent function for it. | platform-independent function for it. | ||||
| */ | */ | ||||
| template <typename NumericType> | template <typename NumericType> | ||||
| bool juce_isfinite (NumericType) noexcept | |||||
| bool water_isfinite (NumericType) noexcept | |||||
| { | { | ||||
| return true; // Integer types are always finite | return true; // Integer types are always finite | ||||
| } | } | ||||
| template <> | template <> | ||||
| inline bool juce_isfinite (float value) noexcept | |||||
| inline bool water_isfinite (float value) noexcept | |||||
| { | { | ||||
| return std::isfinite (value); | return std::isfinite (value); | ||||
| } | } | ||||
| template <> | template <> | ||||
| inline bool juce_isfinite (double value) noexcept | |||||
| inline bool water_isfinite (double value) noexcept | |||||
| { | { | ||||
| return std::isfinite (value); | return std::isfinite (value); | ||||
| } | } | ||||
| @@ -475,4 +475,4 @@ uint32 readLittleEndianBitsInBuffer (const void* sourceBuffer, uint32 startBit, | |||||
| } | } | ||||
| #endif // JUCE_MATHSFUNCTIONS_H_INCLUDED | |||||
| #endif // WATER_MATHSFUNCTIONS_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_RANDOM_H_INCLUDED | |||||
| #define JUCE_RANDOM_H_INCLUDED | |||||
| #ifndef WATER_RANDOM_H_INCLUDED | |||||
| #define WATER_RANDOM_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -123,4 +123,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_RANDOM_H_INCLUDED | |||||
| #endif // WATER_RANDOM_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_ATOMIC_H_INCLUDED | |||||
| #define JUCE_ATOMIC_H_INCLUDED | |||||
| #ifndef WATER_ATOMIC_H_INCLUDED | |||||
| #define WATER_ATOMIC_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -245,4 +245,4 @@ inline void Atomic<Type>::memoryBarrier() noexcept | |||||
| } | } | ||||
| #endif // JUCE_ATOMIC_H_INCLUDED | |||||
| #endif // WATER_ATOMIC_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_BYTEORDER_H_INCLUDED | |||||
| #define JUCE_BYTEORDER_H_INCLUDED | |||||
| #ifndef WATER_BYTEORDER_H_INCLUDED | |||||
| #define WATER_BYTEORDER_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -133,7 +133,7 @@ public: | |||||
| static bool isBigEndian() noexcept; | static bool isBigEndian() noexcept; | ||||
| private: | private: | ||||
| ByteOrder() JUCE_DELETED_FUNCTION; | |||||
| ByteOrder() WATER_DELETED_FUNCTION; | |||||
| CARLA_DECLARE_NON_COPY_CLASS (ByteOrder) | CARLA_DECLARE_NON_COPY_CLASS (ByteOrder) | ||||
| }; | }; | ||||
| @@ -147,9 +147,9 @@ inline uint16 ByteOrder::swap (uint16 n) noexcept | |||||
| inline uint32 ByteOrder::swap (uint32 n) noexcept | inline uint32 ByteOrder::swap (uint32 n) noexcept | ||||
| { | { | ||||
| #if JUCE_MAC | |||||
| #ifdef CARLA_OS_MAC | |||||
| return OSSwapInt32 (n); | return OSSwapInt32 (n); | ||||
| #elif JUCE_INTEL && ! JUCE_NO_INLINE_ASM | |||||
| #elif defined(CARLA_OS_WIN) || ! (defined (__arm__) || defined (__arm64__)) | |||||
| asm("bswap %%eax" : "=a"(n) : "a"(n)); | asm("bswap %%eax" : "=a"(n) : "a"(n)); | ||||
| return n; | return n; | ||||
| #else | #else | ||||
| @@ -159,7 +159,7 @@ inline uint32 ByteOrder::swap (uint32 n) noexcept | |||||
| inline uint64 ByteOrder::swap (uint64 value) noexcept | inline uint64 ByteOrder::swap (uint64 value) noexcept | ||||
| { | { | ||||
| #if JUCE_MAC | |||||
| #ifdef CARLA_OS_MAC | |||||
| return OSSwapInt64 (value); | return OSSwapInt64 (value); | ||||
| #else | #else | ||||
| return (((uint64) swap ((uint32) value)) << 32) | swap ((uint32) (value >> 32)); | return (((uint64) swap ((uint32) value)) << 32) | swap ((uint32) (value >> 32)); | ||||
| @@ -227,4 +227,4 @@ inline void ByteOrder::bigEndian24BitToChars (const int value, void* const destB | |||||
| } | } | ||||
| #endif // JUCE_BYTEORDER_H_INCLUDED | |||||
| #endif // WATER_BYTEORDER_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_HEAPBLOCK_H_INCLUDED | |||||
| #define JUCE_HEAPBLOCK_H_INCLUDED | |||||
| #ifndef WATER_HEAPBLOCK_H_INCLUDED | |||||
| #define WATER_HEAPBLOCK_H_INCLUDED | |||||
| #include "Memory.h" | #include "Memory.h" | ||||
| #include "../maths/MathsFunctions.h" | #include "../maths/MathsFunctions.h" | ||||
| @@ -99,7 +99,7 @@ public: | |||||
| std::free (data); | std::free (data); | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| HeapBlock (HeapBlock&& other) noexcept | HeapBlock (HeapBlock&& other) noexcept | ||||
| : data (other.data) | : data (other.data) | ||||
| { | { | ||||
| @@ -263,4 +263,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_HEAPBLOCK_H_INCLUDED | |||||
| #endif // WATER_HEAPBLOCK_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_MEMORY_H_INCLUDED | |||||
| #define JUCE_MEMORY_H_INCLUDED | |||||
| #ifndef WATER_MEMORY_H_INCLUDED | |||||
| #define WATER_MEMORY_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -87,4 +87,4 @@ inline void writeUnaligned (void* dstPtr, Type value) noexcept | |||||
| } | } | ||||
| #endif // JUCE_MEMORY_H_INCLUDED | |||||
| #endif // WATER_MEMORY_H_INCLUDED | |||||
| @@ -87,7 +87,7 @@ MemoryBlock& MemoryBlock::operator= (const MemoryBlock& other) | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| MemoryBlock::MemoryBlock (MemoryBlock&& other) noexcept | MemoryBlock::MemoryBlock (MemoryBlock&& other) noexcept | ||||
| : data (static_cast<HeapBlock<char>&&> (other.data)), | : data (static_cast<HeapBlock<char>&&> (other.data)), | ||||
| size (other.size) | size (other.size) | ||||
| @@ -339,7 +339,7 @@ void MemoryBlock::loadFromHexString (StringRef hex) | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c = t.getAndAdvance(); | |||||
| const water_uchar c = t.getAndAdvance(); | |||||
| if (c >= '0' && c <= '9') { byte |= c - '0'; break; } | if (c >= '0' && c <= '9') { byte |= c - '0'; break; } | ||||
| if (c >= 'a' && c <= 'z') { byte |= c - ('a' - 10); break; } | if (c >= 'a' && c <= 'z') { byte |= c - ('a' - 10); break; } | ||||
| @@ -357,63 +357,4 @@ void MemoryBlock::loadFromHexString (StringRef hex) | |||||
| } | } | ||||
| } | } | ||||
| //============================================================================== | |||||
| static const char base64EncodingTable[] = ".ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+"; | |||||
| String MemoryBlock::toBase64Encoding() const | |||||
| { | |||||
| const size_t numChars = ((size << 3) + 5) / 6; | |||||
| String destString ((unsigned int) size); // store the length, followed by a '.', and then the data. | |||||
| const int initialLen = destString.length(); | |||||
| destString.preallocateBytes (sizeof (String::CharPointerType::CharType) * (size_t) initialLen + 2 + numChars); | |||||
| String::CharPointerType d (destString.getCharPointer()); | |||||
| d += initialLen; | |||||
| d.write ('.'); | |||||
| for (size_t i = 0; i < numChars; ++i) | |||||
| d.write ((juce_wchar) (uint8) base64EncodingTable [getBitRange (i * 6, 6)]); | |||||
| d.writeNull(); | |||||
| return destString; | |||||
| } | |||||
| static const char base64DecodingTable[] = | |||||
| { | |||||
| 63, 0, 0, 0, 0, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 0, 0, 0, 0, 0, 0, 0, | |||||
| 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, | |||||
| 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 | |||||
| }; | |||||
| bool MemoryBlock::fromBase64Encoding (StringRef s) | |||||
| { | |||||
| String::CharPointerType dot (CharacterFunctions::find (s.text, (juce_wchar) '.')); | |||||
| if (dot.isEmpty()) | |||||
| return false; | |||||
| const int numBytesNeeded = String (s.text, dot).getIntValue(); | |||||
| setSize ((size_t) numBytesNeeded, true); | |||||
| String::CharPointerType srcChars (dot + 1); | |||||
| int pos = 0; | |||||
| for (;;) | |||||
| { | |||||
| int c = (int) srcChars.getAndAdvance(); | |||||
| if (c == 0) | |||||
| return true; | |||||
| c -= 43; | |||||
| if (isPositiveAndBelow (c, numElementsInArray (base64DecodingTable))) | |||||
| { | |||||
| setBitRange ((size_t) pos, 6, base64DecodingTable [c]); | |||||
| pos += 6; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_MEMORYBLOCK_H_INCLUDED | |||||
| #define JUCE_MEMORYBLOCK_H_INCLUDED | |||||
| #ifndef WATER_MEMORYBLOCK_H_INCLUDED | |||||
| #define WATER_MEMORYBLOCK_H_INCLUDED | |||||
| #include "HeapBlock.h" | #include "HeapBlock.h" | ||||
| @@ -68,7 +68,7 @@ public: | |||||
| */ | */ | ||||
| MemoryBlock& operator= (const MemoryBlock&); | MemoryBlock& operator= (const MemoryBlock&); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| MemoryBlock (MemoryBlock&&) noexcept; | MemoryBlock (MemoryBlock&&) noexcept; | ||||
| MemoryBlock& operator= (MemoryBlock&&) noexcept; | MemoryBlock& operator= (MemoryBlock&&) noexcept; | ||||
| #endif | #endif | ||||
| @@ -221,34 +221,6 @@ public: | |||||
| int getBitRange (size_t bitRangeStart, | int getBitRange (size_t bitRangeStart, | ||||
| size_t numBitsToRead) const noexcept; | size_t numBitsToRead) const noexcept; | ||||
| //============================================================================== | |||||
| /** Returns a string of characters in a JUCE-specific text encoding that represents the | |||||
| binary contents of this block. | |||||
| This uses a JUCE-specific (i.e. not standard!) 64-bit encoding system to convert binary | |||||
| data into a string of ASCII characters for purposes like storage in XML. | |||||
| Note that this proprietary format is mainly kept here for backwards-compatibility, and | |||||
| you may prefer to use the Base64::toBase64() method if you want to use the standard | |||||
| base-64 encoding. | |||||
| @see fromBase64Encoding, Base64::toBase64, Base64::convertToBase64 | |||||
| */ | |||||
| String toBase64Encoding() const; | |||||
| /** Takes a string created by MemoryBlock::toBase64Encoding() and extracts the original data. | |||||
| The string passed in must have been created by to64BitEncoding(), and this | |||||
| block will be resized to recreate the original data block. | |||||
| Note that these methods use a JUCE-specific (i.e. not standard!) 64-bit encoding system. | |||||
| You may prefer to use the Base64::convertFromBase64() method if you want to use the | |||||
| standard base-64 encoding. | |||||
| @see toBase64Encoding, Base64::convertFromBase64 | |||||
| */ | |||||
| bool fromBase64Encoding (StringRef encodedString); | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| HeapBlock<char> data; | HeapBlock<char> data; | ||||
| @@ -257,4 +229,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_MEMORYBLOCK_H_INCLUDED | |||||
| #endif // WATER_MEMORYBLOCK_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_REFERENCECOUNTEDOBJECT_H_INCLUDED | |||||
| #define JUCE_REFERENCECOUNTEDOBJECT_H_INCLUDED | |||||
| #ifndef WATER_REFERENCECOUNTEDOBJECT_H_INCLUDED | |||||
| #define WATER_REFERENCECOUNTEDOBJECT_H_INCLUDED | |||||
| #include "Atomic.h" | #include "Atomic.h" | ||||
| @@ -300,7 +300,7 @@ public: | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| /** Takes-over the object from another pointer. */ | /** Takes-over the object from another pointer. */ | ||||
| ReferenceCountedObjectPtr (ReferenceCountedObjectPtr&& other) noexcept | ReferenceCountedObjectPtr (ReferenceCountedObjectPtr&& other) noexcept | ||||
| : referencedObject (other.referencedObject) | : referencedObject (other.referencedObject) | ||||
| @@ -411,4 +411,4 @@ bool operator!= (ReferenceCountedObjectClass* object1, const ReferenceCountedObj | |||||
| } | } | ||||
| #endif // JUCE_REFERENCECOUNTEDOBJECT_H_INCLUDED | |||||
| #endif // WATER_REFERENCECOUNTEDOBJECT_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_SHAREDRESOURCEPOINTER_H_INCLUDED | |||||
| #define JUCE_SHAREDRESOURCEPOINTER_H_INCLUDED | |||||
| #ifndef WATER_SHAREDRESOURCEPOINTER_H_INCLUDED | |||||
| #define WATER_SHAREDRESOURCEPOINTER_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -157,9 +157,9 @@ private: | |||||
| // There's no need to assign to a SharedResourcePointer because every | // There's no need to assign to a SharedResourcePointer because every | ||||
| // instance of the class is exactly the same! | // instance of the class is exactly the same! | ||||
| SharedResourcePointer& operator= (const SharedResourcePointer&) JUCE_DELETED_FUNCTION; | |||||
| SharedResourcePointer& operator= (const SharedResourcePointer&) WATER_DELETED_FUNCTION; | |||||
| }; | }; | ||||
| } | } | ||||
| #endif // JUCE_SHAREDRESOURCEPOINTER_H_INCLUDED | |||||
| #endif // WATER_SHAREDRESOURCEPOINTER_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_MIDIBUFFER_H_INCLUDED | |||||
| #define JUCE_MIDIBUFFER_H_INCLUDED | |||||
| #ifndef WATER_MIDIBUFFER_H_INCLUDED | |||||
| #define WATER_MIDIBUFFER_H_INCLUDED | |||||
| #include "../containers/Array.h" | #include "../containers/Array.h" | ||||
| @@ -234,4 +234,4 @@ public: | |||||
| } | } | ||||
| #endif // JUCE_MIDIBUFFER_H_INCLUDED | |||||
| #endif // WATER_MIDIBUFFER_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_MIDIFILE_H_INCLUDED | |||||
| #define JUCE_MIDIFILE_H_INCLUDED | |||||
| #ifndef WATER_MIDIFILE_H_INCLUDED | |||||
| #define WATER_MIDIFILE_H_INCLUDED | |||||
| #include "MidiMessageSequence.h" | #include "MidiMessageSequence.h" | ||||
| @@ -186,4 +186,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_MIDIFILE_H_INCLUDED | |||||
| #endif // WATER_MIDIFILE_H_INCLUDED | |||||
| @@ -286,7 +286,7 @@ MidiMessage& MidiMessage::operator= (const MidiMessage& other) | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| MidiMessage::MidiMessage (MidiMessage&& other) noexcept | MidiMessage::MidiMessage (MidiMessage&& other) noexcept | ||||
| : timeStamp (other.timeStamp), size (other.size) | : timeStamp (other.timeStamp), size (other.size) | ||||
| { | { | ||||
| @@ -322,31 +322,6 @@ uint8* MidiMessage::allocateSpace (int bytes) | |||||
| return packedData.asBytes; | return packedData.asBytes; | ||||
| } | } | ||||
| String MidiMessage::getDescription() const | |||||
| { | |||||
| if (isNoteOn()) return "Note on " + MidiMessage::getMidiNoteName (getNoteNumber(), true, true, 3) + " Velocity " + String (getVelocity()) + " Channel " + String (getChannel()); | |||||
| if (isNoteOff()) return "Note off " + MidiMessage::getMidiNoteName (getNoteNumber(), true, true, 3) + " Velocity " + String (getVelocity()) + " Channel " + String (getChannel()); | |||||
| if (isProgramChange()) return "Program change " + String (getProgramChangeNumber()) + " Channel " + String (getChannel()); | |||||
| if (isPitchWheel()) return "Pitch wheel " + String (getPitchWheelValue()) + " Channel " + String (getChannel()); | |||||
| if (isAftertouch()) return "Aftertouch " + MidiMessage::getMidiNoteName (getNoteNumber(), true, true, 3) + ": " + String (getAfterTouchValue()) + " Channel " + String (getChannel()); | |||||
| if (isChannelPressure()) return "Channel pressure " + String (getChannelPressureValue()) + " Channel " + String (getChannel()); | |||||
| if (isAllNotesOff()) return "All notes off Channel " + String (getChannel()); | |||||
| if (isAllSoundOff()) return "All sound off Channel " + String (getChannel()); | |||||
| if (isMetaEvent()) return "Meta event"; | |||||
| if (isController()) | |||||
| { | |||||
| String name (MidiMessage::getControllerName (getControllerNumber())); | |||||
| if (name.isEmpty()) | |||||
| name = String (getControllerNumber()); | |||||
| return "Controller " + name + ": " + String (getControllerValue()) + " Channel " + String (getChannel()); | |||||
| } | |||||
| return String::toHexString (getRawData(), getRawDataSize()); | |||||
| } | |||||
| int MidiMessage::getChannel() const noexcept | int MidiMessage::getChannel() const noexcept | ||||
| { | { | ||||
| const uint8* const data = getRawData(); | const uint8* const data = getRawData(); | ||||
| @@ -1035,120 +1010,4 @@ bool MidiMessage::isMidiNoteBlack (int noteNumber) noexcept | |||||
| return ((1 << (noteNumber % 12)) & 0x054a) != 0; | return ((1 << (noteNumber % 12)) & 0x054a) != 0; | ||||
| } | } | ||||
| const char* MidiMessage::getGMInstrumentName (const int n) | |||||
| { | |||||
| static const char* names[] = | |||||
| { | |||||
| NEEDS_TRANS("Acoustic Grand Piano"), NEEDS_TRANS("Bright Acoustic Piano"), NEEDS_TRANS("Electric Grand Piano"), NEEDS_TRANS("Honky-tonk Piano"), | |||||
| NEEDS_TRANS("Electric Piano 1"), NEEDS_TRANS("Electric Piano 2"), NEEDS_TRANS("Harpsichord"), NEEDS_TRANS("Clavinet"), | |||||
| NEEDS_TRANS("Celesta"), NEEDS_TRANS("Glockenspiel"), NEEDS_TRANS("Music Box"), NEEDS_TRANS("Vibraphone"), | |||||
| NEEDS_TRANS("Marimba"), NEEDS_TRANS("Xylophone"), NEEDS_TRANS("Tubular Bells"), NEEDS_TRANS("Dulcimer"), | |||||
| NEEDS_TRANS("Drawbar Organ"), NEEDS_TRANS("Percussive Organ"), NEEDS_TRANS("Rock Organ"), NEEDS_TRANS("Church Organ"), | |||||
| NEEDS_TRANS("Reed Organ"), NEEDS_TRANS("Accordion"), NEEDS_TRANS("Harmonica"), NEEDS_TRANS("Tango Accordion"), | |||||
| NEEDS_TRANS("Acoustic Guitar (nylon)"), NEEDS_TRANS("Acoustic Guitar (steel)"), NEEDS_TRANS("Electric Guitar (jazz)"), NEEDS_TRANS("Electric Guitar (clean)"), | |||||
| NEEDS_TRANS("Electric Guitar (mute)"), NEEDS_TRANS("Overdriven Guitar"), NEEDS_TRANS("Distortion Guitar"), NEEDS_TRANS("Guitar Harmonics"), | |||||
| NEEDS_TRANS("Acoustic Bass"), NEEDS_TRANS("Electric Bass (finger)"), NEEDS_TRANS("Electric Bass (pick)"), NEEDS_TRANS("Fretless Bass"), | |||||
| NEEDS_TRANS("Slap Bass 1"), NEEDS_TRANS("Slap Bass 2"), NEEDS_TRANS("Synth Bass 1"), NEEDS_TRANS("Synth Bass 2"), | |||||
| NEEDS_TRANS("Violin"), NEEDS_TRANS("Viola"), NEEDS_TRANS("Cello"), NEEDS_TRANS("Contrabass"), | |||||
| NEEDS_TRANS("Tremolo Strings"), NEEDS_TRANS("Pizzicato Strings"), NEEDS_TRANS("Orchestral Harp"), NEEDS_TRANS("Timpani"), | |||||
| NEEDS_TRANS("String Ensemble 1"), NEEDS_TRANS("String Ensemble 2"), NEEDS_TRANS("SynthStrings 1"), NEEDS_TRANS("SynthStrings 2"), | |||||
| NEEDS_TRANS("Choir Aahs"), NEEDS_TRANS("Voice Oohs"), NEEDS_TRANS("Synth Voice"), NEEDS_TRANS("Orchestra Hit"), | |||||
| NEEDS_TRANS("Trumpet"), NEEDS_TRANS("Trombone"), NEEDS_TRANS("Tuba"), NEEDS_TRANS("Muted Trumpet"), | |||||
| NEEDS_TRANS("French Horn"), NEEDS_TRANS("Brass Section"), NEEDS_TRANS("SynthBrass 1"), NEEDS_TRANS("SynthBrass 2"), | |||||
| NEEDS_TRANS("Soprano Sax"), NEEDS_TRANS("Alto Sax"), NEEDS_TRANS("Tenor Sax"), NEEDS_TRANS("Baritone Sax"), | |||||
| NEEDS_TRANS("Oboe"), NEEDS_TRANS("English Horn"), NEEDS_TRANS("Bassoon"), NEEDS_TRANS("Clarinet"), | |||||
| NEEDS_TRANS("Piccolo"), NEEDS_TRANS("Flute"), NEEDS_TRANS("Recorder"), NEEDS_TRANS("Pan Flute"), | |||||
| NEEDS_TRANS("Blown Bottle"), NEEDS_TRANS("Shakuhachi"), NEEDS_TRANS("Whistle"), NEEDS_TRANS("Ocarina"), | |||||
| NEEDS_TRANS("Lead 1 (square)"), NEEDS_TRANS("Lead 2 (sawtooth)"), NEEDS_TRANS("Lead 3 (calliope)"), NEEDS_TRANS("Lead 4 (chiff)"), | |||||
| NEEDS_TRANS("Lead 5 (charang)"), NEEDS_TRANS("Lead 6 (voice)"), NEEDS_TRANS("Lead 7 (fifths)"), NEEDS_TRANS("Lead 8 (bass+lead)"), | |||||
| NEEDS_TRANS("Pad 1 (new age)"), NEEDS_TRANS("Pad 2 (warm)"), NEEDS_TRANS("Pad 3 (polysynth)"), NEEDS_TRANS("Pad 4 (choir)"), | |||||
| NEEDS_TRANS("Pad 5 (bowed)"), NEEDS_TRANS("Pad 6 (metallic)"), NEEDS_TRANS("Pad 7 (halo)"), NEEDS_TRANS("Pad 8 (sweep)"), | |||||
| NEEDS_TRANS("FX 1 (rain)"), NEEDS_TRANS("FX 2 (soundtrack)"), NEEDS_TRANS("FX 3 (crystal)"), NEEDS_TRANS("FX 4 (atmosphere)"), | |||||
| NEEDS_TRANS("FX 5 (brightness)"), NEEDS_TRANS("FX 6 (goblins)"), NEEDS_TRANS("FX 7 (echoes)"), NEEDS_TRANS("FX 8 (sci-fi)"), | |||||
| NEEDS_TRANS("Sitar"), NEEDS_TRANS("Banjo"), NEEDS_TRANS("Shamisen"), NEEDS_TRANS("Koto"), | |||||
| NEEDS_TRANS("Kalimba"), NEEDS_TRANS("Bag pipe"), NEEDS_TRANS("Fiddle"), NEEDS_TRANS("Shanai"), | |||||
| NEEDS_TRANS("Tinkle Bell"), NEEDS_TRANS("Agogo"), NEEDS_TRANS("Steel Drums"), NEEDS_TRANS("Woodblock"), | |||||
| NEEDS_TRANS("Taiko Drum"), NEEDS_TRANS("Melodic Tom"), NEEDS_TRANS("Synth Drum"), NEEDS_TRANS("Reverse Cymbal"), | |||||
| NEEDS_TRANS("Guitar Fret Noise"), NEEDS_TRANS("Breath Noise"), NEEDS_TRANS("Seashore"), NEEDS_TRANS("Bird Tweet"), | |||||
| NEEDS_TRANS("Telephone Ring"), NEEDS_TRANS("Helicopter"), NEEDS_TRANS("Applause"), NEEDS_TRANS("Gunshot") | |||||
| }; | |||||
| return isPositiveAndBelow (n, numElementsInArray (names)) ? names[n] : nullptr; | |||||
| } | |||||
| const char* MidiMessage::getGMInstrumentBankName (const int n) | |||||
| { | |||||
| static const char* names[] = | |||||
| { | |||||
| NEEDS_TRANS("Piano"), NEEDS_TRANS("Chromatic Percussion"), NEEDS_TRANS("Organ"), NEEDS_TRANS("Guitar"), | |||||
| NEEDS_TRANS("Bass"), NEEDS_TRANS("Strings"), NEEDS_TRANS("Ensemble"), NEEDS_TRANS("Brass"), | |||||
| NEEDS_TRANS("Reed"), NEEDS_TRANS("Pipe"), NEEDS_TRANS("Synth Lead"), NEEDS_TRANS("Synth Pad"), | |||||
| NEEDS_TRANS("Synth Effects"), NEEDS_TRANS("Ethnic"), NEEDS_TRANS("Percussive"), NEEDS_TRANS("Sound Effects") | |||||
| }; | |||||
| return isPositiveAndBelow (n, numElementsInArray (names)) ? names[n] : nullptr; | |||||
| } | |||||
| const char* MidiMessage::getRhythmInstrumentName (const int n) | |||||
| { | |||||
| static const char* names[] = | |||||
| { | |||||
| NEEDS_TRANS("Acoustic Bass Drum"), NEEDS_TRANS("Bass Drum 1"), NEEDS_TRANS("Side Stick"), NEEDS_TRANS("Acoustic Snare"), | |||||
| NEEDS_TRANS("Hand Clap"), NEEDS_TRANS("Electric Snare"), NEEDS_TRANS("Low Floor Tom"), NEEDS_TRANS("Closed Hi-Hat"), | |||||
| NEEDS_TRANS("High Floor Tom"), NEEDS_TRANS("Pedal Hi-Hat"), NEEDS_TRANS("Low Tom"), NEEDS_TRANS("Open Hi-Hat"), | |||||
| NEEDS_TRANS("Low-Mid Tom"), NEEDS_TRANS("Hi-Mid Tom"), NEEDS_TRANS("Crash Cymbal 1"), NEEDS_TRANS("High Tom"), | |||||
| NEEDS_TRANS("Ride Cymbal 1"), NEEDS_TRANS("Chinese Cymbal"), NEEDS_TRANS("Ride Bell"), NEEDS_TRANS("Tambourine"), | |||||
| NEEDS_TRANS("Splash Cymbal"), NEEDS_TRANS("Cowbell"), NEEDS_TRANS("Crash Cymbal 2"), NEEDS_TRANS("Vibraslap"), | |||||
| NEEDS_TRANS("Ride Cymbal 2"), NEEDS_TRANS("Hi Bongo"), NEEDS_TRANS("Low Bongo"), NEEDS_TRANS("Mute Hi Conga"), | |||||
| NEEDS_TRANS("Open Hi Conga"), NEEDS_TRANS("Low Conga"), NEEDS_TRANS("High Timbale"), NEEDS_TRANS("Low Timbale"), | |||||
| NEEDS_TRANS("High Agogo"), NEEDS_TRANS("Low Agogo"), NEEDS_TRANS("Cabasa"), NEEDS_TRANS("Maracas"), | |||||
| NEEDS_TRANS("Short Whistle"), NEEDS_TRANS("Long Whistle"), NEEDS_TRANS("Short Guiro"), NEEDS_TRANS("Long Guiro"), | |||||
| NEEDS_TRANS("Claves"), NEEDS_TRANS("Hi Wood Block"), NEEDS_TRANS("Low Wood Block"), NEEDS_TRANS("Mute Cuica"), | |||||
| NEEDS_TRANS("Open Cuica"), NEEDS_TRANS("Mute Triangle"), NEEDS_TRANS("Open Triangle") | |||||
| }; | |||||
| return (n >= 35 && n <= 81) ? names [n - 35] : nullptr; | |||||
| } | |||||
| const char* MidiMessage::getControllerName (const int n) | |||||
| { | |||||
| static const char* names[] = | |||||
| { | |||||
| NEEDS_TRANS("Bank Select"), NEEDS_TRANS("Modulation Wheel (coarse)"), NEEDS_TRANS("Breath controller (coarse)"), | |||||
| nullptr, | |||||
| NEEDS_TRANS("Foot Pedal (coarse)"), NEEDS_TRANS("Portamento Time (coarse)"), NEEDS_TRANS("Data Entry (coarse)"), | |||||
| NEEDS_TRANS("Volume (coarse)"), NEEDS_TRANS("Balance (coarse)"), | |||||
| nullptr, | |||||
| NEEDS_TRANS("Pan position (coarse)"), NEEDS_TRANS("Expression (coarse)"), NEEDS_TRANS("Effect Control 1 (coarse)"), | |||||
| NEEDS_TRANS("Effect Control 2 (coarse)"), | |||||
| nullptr, nullptr, | |||||
| NEEDS_TRANS("General Purpose Slider 1"), NEEDS_TRANS("General Purpose Slider 2"), | |||||
| NEEDS_TRANS("General Purpose Slider 3"), NEEDS_TRANS("General Purpose Slider 4"), | |||||
| nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | |||||
| NEEDS_TRANS("Bank Select (fine)"), NEEDS_TRANS("Modulation Wheel (fine)"), NEEDS_TRANS("Breath controller (fine)"), | |||||
| nullptr, | |||||
| NEEDS_TRANS("Foot Pedal (fine)"), NEEDS_TRANS("Portamento Time (fine)"), NEEDS_TRANS("Data Entry (fine)"), NEEDS_TRANS("Volume (fine)"), | |||||
| NEEDS_TRANS("Balance (fine)"), nullptr, NEEDS_TRANS("Pan position (fine)"), NEEDS_TRANS("Expression (fine)"), | |||||
| NEEDS_TRANS("Effect Control 1 (fine)"), NEEDS_TRANS("Effect Control 2 (fine)"), | |||||
| nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | |||||
| nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | |||||
| NEEDS_TRANS("Hold Pedal (on/off)"), NEEDS_TRANS("Portamento (on/off)"), NEEDS_TRANS("Sustenuto Pedal (on/off)"), NEEDS_TRANS("Soft Pedal (on/off)"), | |||||
| NEEDS_TRANS("Legato Pedal (on/off)"), NEEDS_TRANS("Hold 2 Pedal (on/off)"), NEEDS_TRANS("Sound Variation"), NEEDS_TRANS("Sound Timbre"), | |||||
| NEEDS_TRANS("Sound Release Time"), NEEDS_TRANS("Sound Attack Time"), NEEDS_TRANS("Sound Brightness"), NEEDS_TRANS("Sound Control 6"), | |||||
| NEEDS_TRANS("Sound Control 7"), NEEDS_TRANS("Sound Control 8"), NEEDS_TRANS("Sound Control 9"), NEEDS_TRANS("Sound Control 10"), | |||||
| NEEDS_TRANS("General Purpose Button 1 (on/off)"), NEEDS_TRANS("General Purpose Button 2 (on/off)"), | |||||
| NEEDS_TRANS("General Purpose Button 3 (on/off)"), NEEDS_TRANS("General Purpose Button 4 (on/off)"), | |||||
| nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | |||||
| NEEDS_TRANS("Reverb Level"), NEEDS_TRANS("Tremolo Level"), NEEDS_TRANS("Chorus Level"), NEEDS_TRANS("Celeste Level"), | |||||
| NEEDS_TRANS("Phaser Level"), NEEDS_TRANS("Data Button increment"), NEEDS_TRANS("Data Button decrement"), NEEDS_TRANS("Non-registered Parameter (fine)"), | |||||
| NEEDS_TRANS("Non-registered Parameter (coarse)"), NEEDS_TRANS("Registered Parameter (fine)"), NEEDS_TRANS("Registered Parameter (coarse)"), | |||||
| nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | |||||
| nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | |||||
| NEEDS_TRANS("All Sound Off"), NEEDS_TRANS("All Controllers Off"), NEEDS_TRANS("Local Keyboard (on/off)"), NEEDS_TRANS("All Notes Off"), | |||||
| NEEDS_TRANS("Omni Mode Off"), NEEDS_TRANS("Omni Mode On"), NEEDS_TRANS("Mono Operation"), NEEDS_TRANS("Poly Operation") | |||||
| }; | |||||
| return isPositiveAndBelow (n, numElementsInArray (names)) ? names[n] : nullptr; | |||||
| } | |||||
| } | } | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_MIDIMESSAGE_H_INCLUDED | |||||
| #define JUCE_MIDIMESSAGE_H_INCLUDED | |||||
| #ifndef WATER_MIDIMESSAGE_H_INCLUDED | |||||
| #define WATER_MIDIMESSAGE_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -113,7 +113,7 @@ public: | |||||
| /** Copies this message from another one. */ | /** Copies this message from another one. */ | ||||
| MidiMessage& operator= (const MidiMessage& other); | MidiMessage& operator= (const MidiMessage& other); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| MidiMessage (MidiMessage&&) noexcept; | MidiMessage (MidiMessage&&) noexcept; | ||||
| MidiMessage& operator= (MidiMessage&&) noexcept; | MidiMessage& operator= (MidiMessage&&) noexcept; | ||||
| #endif | #endif | ||||
| @@ -129,12 +129,6 @@ public: | |||||
| */ | */ | ||||
| int getRawDataSize() const noexcept { return size; } | int getRawDataSize() const noexcept { return size; } | ||||
| //============================================================================== | |||||
| /** Returns a human-readable description of the midi message as a string, | |||||
| for example "Note On C#3 Velocity 120 Channel 1". | |||||
| */ | |||||
| String getDescription() const; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Returns the timestamp associated with this message. | /** Returns the timestamp associated with this message. | ||||
| @@ -342,13 +336,13 @@ public: | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Returns true if the message is a program (patch) change message. | /** Returns true if the message is a program (patch) change message. | ||||
| @see getProgramChangeNumber, getGMInstrumentName | |||||
| @see getProgramChangeNumber | |||||
| */ | */ | ||||
| bool isProgramChange() const noexcept; | bool isProgramChange() const noexcept; | ||||
| /** Returns the new program number of a program change message. | /** Returns the new program number of a program change message. | ||||
| If the message isn't a program change, the value returned is undefined. | If the message isn't a program change, the value returned is undefined. | ||||
| @see isProgramChange, getGMInstrumentName | |||||
| @see isProgramChange | |||||
| */ | */ | ||||
| int getProgramChangeNumber() const noexcept; | int getProgramChangeNumber() const noexcept; | ||||
| @@ -356,7 +350,7 @@ public: | |||||
| @param channel the midi channel, in the range 1 to 16 | @param channel the midi channel, in the range 1 to 16 | ||||
| @param programNumber the midi program number, 0 to 127 | @param programNumber the midi program number, 0 to 127 | ||||
| @see isProgramChange, getGMInstrumentName | |||||
| @see isProgramChange | |||||
| */ | */ | ||||
| static MidiMessage programChange (int channel, int programNumber) noexcept; | static MidiMessage programChange (int channel, int programNumber) noexcept; | ||||
| @@ -887,28 +881,6 @@ public: | |||||
| /** Returns true if the given midi note number is a black key. */ | /** Returns true if the given midi note number is a black key. */ | ||||
| static bool isMidiNoteBlack (int noteNumber) noexcept; | static bool isMidiNoteBlack (int noteNumber) noexcept; | ||||
| /** Returns the standard name of a GM instrument, or nullptr if unknown for this index. | |||||
| @param midiInstrumentNumber the program number 0 to 127 | |||||
| @see getProgramChangeNumber | |||||
| */ | |||||
| static const char* getGMInstrumentName (int midiInstrumentNumber); | |||||
| /** Returns the name of a bank of GM instruments, or nullptr if unknown for this bank number. | |||||
| @param midiBankNumber the bank, 0 to 15 | |||||
| */ | |||||
| static const char* getGMInstrumentBankName (int midiBankNumber); | |||||
| /** Returns the standard name of a channel 10 percussion sound, or nullptr if unknown for this note number. | |||||
| @param midiNoteNumber the key number, 35 to 81 | |||||
| */ | |||||
| static const char* getRhythmInstrumentName (int midiNoteNumber); | |||||
| /** Returns the name of a controller type number, or nullptr if unknown for this controller number. | |||||
| @see getControllerNumber | |||||
| */ | |||||
| static const char* getControllerName (int controllerNumber); | |||||
| /** Converts a floating-point value between 0 and 1 to a MIDI 7-bit value between 0 and 127. */ | /** Converts a floating-point value between 0 and 1 to a MIDI 7-bit value between 0 and 127. */ | ||||
| static uint8 floatValueToMidiByte (float valueBetween0and1) noexcept; | static uint8 floatValueToMidiByte (float valueBetween0and1) noexcept; | ||||
| @@ -918,7 +890,6 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| #ifndef DOXYGEN | |||||
| union PackedData | union PackedData | ||||
| { | { | ||||
| uint8* allocatedData; | uint8* allocatedData; | ||||
| @@ -928,7 +899,6 @@ private: | |||||
| PackedData packedData; | PackedData packedData; | ||||
| double timeStamp; | double timeStamp; | ||||
| int size; | int size; | ||||
| #endif | |||||
| inline bool isHeapAllocated() const noexcept { return size > (int) sizeof (packedData); } | inline bool isHeapAllocated() const noexcept { return size > (int) sizeof (packedData); } | ||||
| inline uint8* getData() const noexcept { return isHeapAllocated() ? packedData.allocatedData : (uint8*) packedData.asBytes; } | inline uint8* getData() const noexcept { return isHeapAllocated() ? packedData.allocatedData : (uint8*) packedData.asBytes; } | ||||
| @@ -937,4 +907,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_MIDIMESSAGE_H_INCLUDED | |||||
| #endif // WATER_MIDIMESSAGE_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_MIDIMESSAGESEQUENCE_H_INCLUDED | |||||
| #define JUCE_MIDIMESSAGESEQUENCE_H_INCLUDED | |||||
| #ifndef WATER_MIDIMESSAGESEQUENCE_H_INCLUDED | |||||
| #define WATER_MIDIMESSAGESEQUENCE_H_INCLUDED | |||||
| #include "MidiMessage.h" | #include "MidiMessage.h" | ||||
| #include "../containers/Array.h" | #include "../containers/Array.h" | ||||
| @@ -55,7 +55,7 @@ public: | |||||
| /** Replaces this sequence with another one. */ | /** Replaces this sequence with another one. */ | ||||
| MidiMessageSequence& operator= (const MidiMessageSequence&); | MidiMessageSequence& operator= (const MidiMessageSequence&); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| MidiMessageSequence (MidiMessageSequence&& other) noexcept | MidiMessageSequence (MidiMessageSequence&& other) noexcept | ||||
| : list (static_cast<OwnedArray<MidiEventHolder>&&> (other.list)) | : list (static_cast<OwnedArray<MidiEventHolder>&&> (other.list)) | ||||
| {} | {} | ||||
| @@ -288,4 +288,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_MIDIMESSAGESEQUENCE_H_INCLUDED | |||||
| #endif // WATER_MIDIMESSAGESEQUENCE_H_INCLUDED | |||||
| @@ -45,7 +45,7 @@ Result& Result::operator= (const Result& other) | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| Result::Result (Result&& other) noexcept | Result::Result (Result&& other) noexcept | ||||
| : errorMessage (static_cast<String&&> (other.errorMessage)) | : errorMessage (static_cast<String&&> (other.errorMessage)) | ||||
| { | { | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_RESULT_H_INCLUDED | |||||
| #define JUCE_RESULT_H_INCLUDED | |||||
| #ifndef WATER_RESULT_H_INCLUDED | |||||
| #define WATER_RESULT_H_INCLUDED | |||||
| #include "../text/String.h" | #include "../text/String.h" | ||||
| @@ -100,7 +100,7 @@ public: | |||||
| Result (const Result&); | Result (const Result&); | ||||
| Result& operator= (const Result&); | Result& operator= (const Result&); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| Result (Result&&) noexcept; | Result (Result&&) noexcept; | ||||
| Result& operator= (Result&&) noexcept; | Result& operator= (Result&&) noexcept; | ||||
| #endif | #endif | ||||
| @@ -123,4 +123,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_RESULT_H_INCLUDED | |||||
| #endif // WATER_RESULT_H_INCLUDED | |||||
| @@ -37,7 +37,7 @@ namespace TimeHelpers | |||||
| //============================================================================== | //============================================================================== | ||||
| static uint32 juce_millisecondsSinceStartup() noexcept | |||||
| static uint32 water_millisecondsSinceStartup() noexcept | |||||
| { | { | ||||
| #ifdef CARLA_OS_WIN | #ifdef CARLA_OS_WIN | ||||
| return (uint32) timeGetTime(); | return (uint32) timeGetTime(); | ||||
| @@ -90,7 +90,7 @@ int64 Time::currentTimeMillis() noexcept | |||||
| uint32 Time::getMillisecondCounter() noexcept | uint32 Time::getMillisecondCounter() noexcept | ||||
| { | { | ||||
| const uint32 now = juce_millisecondsSinceStartup(); | |||||
| const uint32 now = water_millisecondsSinceStartup(); | |||||
| if (now < TimeHelpers::lastMSCounterValue) | if (now < TimeHelpers::lastMSCounterValue) | ||||
| { | { | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_TIME_H_INCLUDED | |||||
| #define JUCE_TIME_H_INCLUDED | |||||
| #ifndef WATER_TIME_H_INCLUDED | |||||
| #define WATER_TIME_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -126,4 +126,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_TIME_H_INCLUDED | |||||
| #endif // WATER_TIME_H_INCLUDED | |||||
| @@ -5,26 +5,21 @@ | |||||
| Copyright (c) 2015 ROLI Ltd. | Copyright (c) 2015 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | ||||
| Permission is granted to use this software under the terms of either: | |||||
| a) the GPL v2 (or any later version) | |||||
| b) the Affero GPL v3 | |||||
| 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. | |||||
| Details of these licenses can be found at: www.gnu.org/licenses | |||||
| 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. | |||||
| JUCE 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. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.juce.com for more information. | |||||
| For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_AUDIOPLAYHEAD_H_INCLUDED | |||||
| #define JUCE_AUDIOPLAYHEAD_H_INCLUDED | |||||
| #ifndef WATER_AUDIOPLAYHEAD_H_INCLUDED | |||||
| #define WATER_AUDIOPLAYHEAD_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -146,4 +141,4 @@ public: | |||||
| } | } | ||||
| #endif // JUCE_AUDIOPLAYHEAD_H_INCLUDED | |||||
| #endif // WATER_AUDIOPLAYHEAD_H_INCLUDED | |||||
| @@ -5,20 +5,15 @@ | |||||
| Copyright (c) 2015 ROLI Ltd. | Copyright (c) 2015 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | ||||
| Permission is granted to use this software under the terms of either: | |||||
| a) the GPL v2 (or any later version) | |||||
| b) the Affero GPL v3 | |||||
| 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. | |||||
| Details of these licenses can be found at: www.gnu.org/licenses | |||||
| 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. | |||||
| JUCE 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. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.juce.com for more information. | |||||
| For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| @@ -5,26 +5,21 @@ | |||||
| Copyright (c) 2015 ROLI Ltd. | Copyright (c) 2015 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | ||||
| Permission is granted to use this software under the terms of either: | |||||
| a) the GPL v2 (or any later version) | |||||
| b) the Affero GPL v3 | |||||
| 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. | |||||
| Details of these licenses can be found at: www.gnu.org/licenses | |||||
| 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. | |||||
| JUCE 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. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.juce.com for more information. | |||||
| For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_AUDIOPROCESSOR_H_INCLUDED | |||||
| #define JUCE_AUDIOPROCESSOR_H_INCLUDED | |||||
| #ifndef WATER_AUDIOPROCESSOR_H_INCLUDED | |||||
| #define WATER_AUDIOPROCESSOR_H_INCLUDED | |||||
| #include "../text/String.h" | #include "../text/String.h" | ||||
| #include "../buffers/AudioSampleBuffer.h" | #include "../buffers/AudioSampleBuffer.h" | ||||
| @@ -391,4 +386,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_AUDIOPROCESSOR_H_INCLUDED | |||||
| #endif // WATER_AUDIOPROCESSOR_H_INCLUDED | |||||
| @@ -5,20 +5,15 @@ | |||||
| Copyright (c) 2015 ROLI Ltd. | Copyright (c) 2015 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | ||||
| Permission is granted to use this software under the terms of either: | |||||
| a) the GPL v2 (or any later version) | |||||
| b) the Affero GPL v3 | |||||
| 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. | |||||
| Details of these licenses can be found at: www.gnu.org/licenses | |||||
| 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. | |||||
| JUCE 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. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.juce.com for more information. | |||||
| For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| @@ -5,26 +5,21 @@ | |||||
| Copyright (c) 2015 ROLI Ltd. | Copyright (c) 2015 ROLI Ltd. | ||||
| Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | ||||
| Permission is granted to use this software under the terms of either: | |||||
| a) the GPL v2 (or any later version) | |||||
| b) the Affero GPL v3 | |||||
| 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. | |||||
| Details of these licenses can be found at: www.gnu.org/licenses | |||||
| 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. | |||||
| JUCE 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. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.juce.com for more information. | |||||
| For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_AUDIOPROCESSORGRAPH_H_INCLUDED | |||||
| #define JUCE_AUDIOPROCESSORGRAPH_H_INCLUDED | |||||
| #ifndef WATER_AUDIOPROCESSORGRAPH_H_INCLUDED | |||||
| #define WATER_AUDIOPROCESSORGRAPH_H_INCLUDED | |||||
| #include "AudioProcessor.h" | #include "AudioProcessor.h" | ||||
| #include "../containers/NamedValueSet.h" | #include "../containers/NamedValueSet.h" | ||||
| @@ -382,4 +377,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_AUDIOPROCESSORGRAPH_H_INCLUDED | |||||
| #endif // WATER_AUDIOPROCESSORGRAPH_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_FILEINPUTSOURCE_H_INCLUDED | |||||
| #define JUCE_FILEINPUTSOURCE_H_INCLUDED | |||||
| #ifndef WATER_FILEINPUTSOURCE_H_INCLUDED | |||||
| #define WATER_FILEINPUTSOURCE_H_INCLUDED | |||||
| #include "InputSource.h" | #include "InputSource.h" | ||||
| #include "../files/File.h" | #include "../files/File.h" | ||||
| @@ -65,4 +65,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_FILEINPUTSOURCE_H_INCLUDED | |||||
| #endif // WATER_FILEINPUTSOURCE_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_INPUTSOURCE_H_INCLUDED | |||||
| #define JUCE_INPUTSOURCE_H_INCLUDED | |||||
| #ifndef WATER_INPUTSOURCE_H_INCLUDED | |||||
| #define WATER_INPUTSOURCE_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -73,4 +73,4 @@ public: | |||||
| } | } | ||||
| #endif // JUCE_INPUTSOURCE_H_INCLUDED | |||||
| #endif // WATER_INPUTSOURCE_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_INPUTSTREAM_H_INCLUDED | |||||
| #define JUCE_INPUTSTREAM_H_INCLUDED | |||||
| #ifndef WATER_INPUTSTREAM_H_INCLUDED | |||||
| #define WATER_INPUTSTREAM_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -256,4 +256,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_INPUTSTREAM_H_INCLUDED | |||||
| #endif // WATER_INPUTSTREAM_H_INCLUDED | |||||
| @@ -137,7 +137,7 @@ bool MemoryOutputStream::writeRepeatedByte (uint8 byte, size_t howMany) | |||||
| return false; | return false; | ||||
| } | } | ||||
| bool MemoryOutputStream::appendUTF8Char (juce_wchar c) | |||||
| bool MemoryOutputStream::appendUTF8Char (water_uchar c) | |||||
| { | { | ||||
| if (char* dest = prepareToWrite (CharPointer_UTF8::getBytesRequiredFor (c))) | if (char* dest = prepareToWrite (CharPointer_UTF8::getBytesRequiredFor (c))) | ||||
| { | { | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_MEMORYOUTPUTSTREAM_H_INCLUDED | |||||
| #define JUCE_MEMORYOUTPUTSTREAM_H_INCLUDED | |||||
| #ifndef WATER_MEMORYOUTPUTSTREAM_H_INCLUDED | |||||
| #define WATER_MEMORYOUTPUTSTREAM_H_INCLUDED | |||||
| #include "OutputStream.h" | #include "OutputStream.h" | ||||
| #include "../memory/MemoryBlock.h" | #include "../memory/MemoryBlock.h" | ||||
| @@ -94,7 +94,7 @@ public: | |||||
| void preallocate (size_t bytesToPreallocate); | void preallocate (size_t bytesToPreallocate); | ||||
| /** Appends the utf-8 bytes for a unicode character */ | /** Appends the utf-8 bytes for a unicode character */ | ||||
| bool appendUTF8Char (juce_wchar character); | |||||
| bool appendUTF8Char (water_uchar character); | |||||
| /** Returns a String created from the (UTF8) data that has been written to the stream. */ | /** Returns a String created from the (UTF8) data that has been written to the stream. */ | ||||
| String toUTF8() const; | String toUTF8() const; | ||||
| @@ -138,4 +138,4 @@ OutputStream& operator<< (OutputStream& stream, const MemoryOutputStream& stream | |||||
| } | } | ||||
| #endif // JUCE_MEMORYOUTPUTSTREAM_H_INCLUDED | |||||
| #endif // WATER_MEMORYOUTPUTSTREAM_H_INCLUDED | |||||
| @@ -31,43 +31,14 @@ | |||||
| namespace water { | namespace water { | ||||
| #if JUCE_DEBUG | |||||
| struct DanglingStreamChecker | |||||
| { | |||||
| DanglingStreamChecker() {} | |||||
| ~DanglingStreamChecker() | |||||
| { | |||||
| /* | |||||
| It's always a bad idea to leak any object, but if you're leaking output | |||||
| streams, then there's a good chance that you're failing to flush a file | |||||
| to disk properly, which could result in corrupted data and other similar | |||||
| nastiness.. | |||||
| */ | |||||
| jassert (activeStreams.size() == 0); | |||||
| } | |||||
| Array<void*, CriticalSection> activeStreams; | |||||
| }; | |||||
| static DanglingStreamChecker danglingStreamChecker; | |||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| OutputStream::OutputStream() | OutputStream::OutputStream() | ||||
| : newLineString (NewLine::getDefault()) | : newLineString (NewLine::getDefault()) | ||||
| { | { | ||||
| #if JUCE_DEBUG | |||||
| danglingStreamChecker.activeStreams.add (this); | |||||
| #endif | |||||
| } | } | ||||
| OutputStream::~OutputStream() | OutputStream::~OutputStream() | ||||
| { | { | ||||
| #if JUCE_DEBUG | |||||
| danglingStreamChecker.activeStreams.removeFirstMatchingValue (this); | |||||
| #endif | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -195,7 +166,7 @@ bool OutputStream::writeText (const String& text, const bool asUTF16, | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c = src.getAndAdvance(); | |||||
| const water_uchar c = src.getAndAdvance(); | |||||
| if (c == 0) | if (c == 0) | ||||
| break; | break; | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_OUTPUTSTREAM_H_INCLUDED | |||||
| #define JUCE_OUTPUTSTREAM_H_INCLUDED | |||||
| #ifndef WATER_OUTPUTSTREAM_H_INCLUDED | |||||
| #define WATER_OUTPUTSTREAM_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -275,4 +275,4 @@ OutputStream& operator<< (OutputStream& stream, const NewLine&); | |||||
| } | } | ||||
| #endif // JUCE_OUTPUTSTREAM_H_INCLUDED | |||||
| #endif // WATER_OUTPUTSTREAM_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_CHARPOINTER_UTF8_H_INCLUDED | |||||
| #define JUCE_CHARPOINTER_UTF8_H_INCLUDED | |||||
| #ifndef WATER_CHARPOINTER_UTF8_H_INCLUDED | |||||
| #define WATER_CHARPOINTER_UTF8_H_INCLUDED | |||||
| #include "CharacterFunctions.h" | #include "CharacterFunctions.h" | ||||
| #include "../memory/Atomic.h" | #include "../memory/Atomic.h" | ||||
| @@ -84,12 +84,12 @@ public: | |||||
| inline bool isEmpty() const noexcept { return *data == 0; } | inline bool isEmpty() const noexcept { return *data == 0; } | ||||
| /** Returns the unicode character that this pointer is pointing to. */ | /** Returns the unicode character that this pointer is pointing to. */ | ||||
| juce_wchar operator*() const noexcept | |||||
| water_uchar operator*() const noexcept | |||||
| { | { | ||||
| const signed char byte = (signed char) *data; | const signed char byte = (signed char) *data; | ||||
| if (byte >= 0) | if (byte >= 0) | ||||
| return (juce_wchar) (uint8) byte; | |||||
| return (water_uchar) (uint8) byte; | |||||
| uint32 n = (uint32) (uint8) byte; | uint32 n = (uint32) (uint8) byte; | ||||
| uint32 mask = 0x7f; | uint32 mask = 0x7f; | ||||
| @@ -116,7 +116,7 @@ public: | |||||
| n |= (nextByte & 0x3f); | n |= (nextByte & 0x3f); | ||||
| } | } | ||||
| return (juce_wchar) n; | |||||
| return (water_uchar) n; | |||||
| } | } | ||||
| /** Moves this pointer along to the next character in the string. */ | /** Moves this pointer along to the next character in the string. */ | ||||
| @@ -127,7 +127,7 @@ public: | |||||
| if (n < 0) | if (n < 0) | ||||
| { | { | ||||
| juce_wchar bit = 0x40; | |||||
| water_uchar bit = 0x40; | |||||
| while ((n & bit) != 0 && bit > 0x8) | while ((n & bit) != 0 && bit > 0x8) | ||||
| { | { | ||||
| @@ -152,12 +152,12 @@ public: | |||||
| /** Returns the character that this pointer is currently pointing to, and then | /** Returns the character that this pointer is currently pointing to, and then | ||||
| advances the pointer to point to the next character. */ | advances the pointer to point to the next character. */ | ||||
| juce_wchar getAndAdvance() noexcept | |||||
| water_uchar getAndAdvance() noexcept | |||||
| { | { | ||||
| const signed char byte = (signed char) *data++; | const signed char byte = (signed char) *data++; | ||||
| if (byte >= 0) | if (byte >= 0) | ||||
| return (juce_wchar) (uint8) byte; | |||||
| return (water_uchar) (uint8) byte; | |||||
| uint32 n = (uint32) (uint8) byte; | uint32 n = (uint32) (uint8) byte; | ||||
| uint32 mask = 0x7f; | uint32 mask = 0x7f; | ||||
| @@ -185,7 +185,7 @@ public: | |||||
| n |= (nextByte & 0x3f); | n |= (nextByte & 0x3f); | ||||
| } | } | ||||
| return (juce_wchar) n; | |||||
| return (water_uchar) n; | |||||
| } | } | ||||
| /** Moves this pointer along to the next character in the string. */ | /** Moves this pointer along to the next character in the string. */ | ||||
| @@ -218,7 +218,7 @@ public: | |||||
| } | } | ||||
| /** Returns the character at a given character index from the start of the string. */ | /** Returns the character at a given character index from the start of the string. */ | ||||
| juce_wchar operator[] (int characterIndex) const noexcept | |||||
| water_uchar operator[] (int characterIndex) const noexcept | |||||
| { | { | ||||
| CharPointer_UTF8 p (*this); | CharPointer_UTF8 p (*this); | ||||
| p += characterIndex; | p += characterIndex; | ||||
| @@ -289,7 +289,7 @@ public: | |||||
| /** Returns the number of bytes that would be needed to represent the given | /** Returns the number of bytes that would be needed to represent the given | ||||
| unicode character in this encoding format. | unicode character in this encoding format. | ||||
| */ | */ | ||||
| static size_t getBytesRequiredFor (const juce_wchar charToWrite) noexcept | |||||
| static size_t getBytesRequiredFor (const water_uchar charToWrite) noexcept | |||||
| { | { | ||||
| size_t num = 1; | size_t num = 1; | ||||
| const uint32 c = (uint32) charToWrite; | const uint32 c = (uint32) charToWrite; | ||||
| @@ -317,7 +317,7 @@ public: | |||||
| { | { | ||||
| size_t count = 0; | size_t count = 0; | ||||
| while (juce_wchar n = text.getAndAdvance()) | |||||
| while (water_uchar n = text.getAndAdvance()) | |||||
| count += getBytesRequiredFor (n); | count += getBytesRequiredFor (n); | ||||
| return count; | return count; | ||||
| @@ -330,7 +330,7 @@ public: | |||||
| } | } | ||||
| /** Writes a unicode character to this string, and advances this pointer to point to the next position. */ | /** Writes a unicode character to this string, and advances this pointer to point to the next position. */ | ||||
| void write (const juce_wchar charToWrite) noexcept | |||||
| void write (const water_uchar charToWrite) noexcept | |||||
| { | { | ||||
| const uint32 c = (uint32) charToWrite; | const uint32 c = (uint32) charToWrite; | ||||
| @@ -442,13 +442,13 @@ public: | |||||
| } | } | ||||
| /** Returns the character index of a unicode character, or -1 if it isn't found. */ | /** Returns the character index of a unicode character, or -1 if it isn't found. */ | ||||
| int indexOf (const juce_wchar charToFind) const noexcept | |||||
| int indexOf (const water_uchar charToFind) const noexcept | |||||
| { | { | ||||
| return CharacterFunctions::indexOfChar (*this, charToFind); | return CharacterFunctions::indexOfChar (*this, charToFind); | ||||
| } | } | ||||
| /** Returns the character index of a unicode character, or -1 if it isn't found. */ | /** Returns the character index of a unicode character, or -1 if it isn't found. */ | ||||
| int indexOf (const juce_wchar charToFind, const bool ignoreCase) const noexcept | |||||
| int indexOf (const water_uchar charToFind, const bool ignoreCase) const noexcept | |||||
| { | { | ||||
| return ignoreCase ? CharacterFunctions::indexOfCharIgnoreCase (*this, charToFind) | return ignoreCase ? CharacterFunctions::indexOfCharIgnoreCase (*this, charToFind) | ||||
| : CharacterFunctions::indexOfChar (*this, charToFind); | : CharacterFunctions::indexOfChar (*this, charToFind); | ||||
| @@ -468,9 +468,9 @@ public: | |||||
| bool isLowerCase() const noexcept { return CharacterFunctions::isLowerCase (operator*()) != 0; } | bool isLowerCase() const noexcept { return CharacterFunctions::isLowerCase (operator*()) != 0; } | ||||
| /** Returns an upper-case version of the first character of this string. */ | /** Returns an upper-case version of the first character of this string. */ | ||||
| juce_wchar toUpperCase() const noexcept { return CharacterFunctions::toUpperCase (operator*()); } | |||||
| water_uchar toUpperCase() const noexcept { return CharacterFunctions::toUpperCase (operator*()); } | |||||
| /** Returns a lower-case version of the first character of this string. */ | /** Returns a lower-case version of the first character of this string. */ | ||||
| juce_wchar toLowerCase() const noexcept { return CharacterFunctions::toLowerCase (operator*()); } | |||||
| water_uchar toLowerCase() const noexcept { return CharacterFunctions::toLowerCase (operator*()); } | |||||
| /** Parses this string as a 32-bit integer. */ | /** Parses this string as a 32-bit integer. */ | ||||
| int getIntValue32() const noexcept { return atoi (data); } | int getIntValue32() const noexcept { return atoi (data); } | ||||
| @@ -491,7 +491,7 @@ public: | |||||
| CharPointer_UTF8 findEndOfWhitespace() const noexcept { return CharacterFunctions::findEndOfWhitespace (*this); } | CharPointer_UTF8 findEndOfWhitespace() const noexcept { return CharacterFunctions::findEndOfWhitespace (*this); } | ||||
| /** Returns true if the given unicode character can be represented in this encoding. */ | /** Returns true if the given unicode character can be represented in this encoding. */ | ||||
| static bool canRepresent (juce_wchar character) noexcept | |||||
| static bool canRepresent (water_uchar character) noexcept | |||||
| { | { | ||||
| return ((unsigned int) character) < (unsigned int) 0x10ffff; | return ((unsigned int) character) < (unsigned int) 0x10ffff; | ||||
| } | } | ||||
| @@ -570,4 +570,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_CHARPOINTER_UTF8_H_INCLUDED | |||||
| #endif // WATER_CHARPOINTER_UTF8_H_INCLUDED | |||||
| @@ -31,17 +31,17 @@ namespace water { | |||||
| //============================================================================== | //============================================================================== | ||||
| juce_wchar CharacterFunctions::toUpperCase (const juce_wchar character) noexcept | |||||
| water_uchar CharacterFunctions::toUpperCase (const water_uchar character) noexcept | |||||
| { | { | ||||
| return (juce_wchar) towupper ((wint_t) character); | |||||
| return (water_uchar) towupper ((wint_t) character); | |||||
| } | } | ||||
| juce_wchar CharacterFunctions::toLowerCase (const juce_wchar character) noexcept | |||||
| water_uchar CharacterFunctions::toLowerCase (const water_uchar character) noexcept | |||||
| { | { | ||||
| return (juce_wchar) towlower ((wint_t) character); | |||||
| return (water_uchar) towlower ((wint_t) character); | |||||
| } | } | ||||
| bool CharacterFunctions::isUpperCase (const juce_wchar character) noexcept | |||||
| bool CharacterFunctions::isUpperCase (const water_uchar character) noexcept | |||||
| { | { | ||||
| #ifdef CARLA_OS_WIN | #ifdef CARLA_OS_WIN | ||||
| return iswupper ((wint_t) character) != 0; | return iswupper ((wint_t) character) != 0; | ||||
| @@ -50,7 +50,7 @@ bool CharacterFunctions::isUpperCase (const juce_wchar character) noexcept | |||||
| #endif | #endif | ||||
| } | } | ||||
| bool CharacterFunctions::isLowerCase (const juce_wchar character) noexcept | |||||
| bool CharacterFunctions::isLowerCase (const water_uchar character) noexcept | |||||
| { | { | ||||
| #ifdef CARLA_OS_WIN | #ifdef CARLA_OS_WIN | ||||
| return iswlower ((wint_t) character) != 0; | return iswlower ((wint_t) character) != 0; | ||||
| @@ -65,7 +65,7 @@ bool CharacterFunctions::isWhitespace (const char character) noexcept | |||||
| return character == ' ' || (character <= 13 && character >= 9); | return character == ' ' || (character <= 13 && character >= 9); | ||||
| } | } | ||||
| bool CharacterFunctions::isWhitespace (const juce_wchar character) noexcept | |||||
| bool CharacterFunctions::isWhitespace (const water_uchar character) noexcept | |||||
| { | { | ||||
| return iswspace ((wint_t) character) != 0; | return iswspace ((wint_t) character) != 0; | ||||
| } | } | ||||
| @@ -75,7 +75,7 @@ bool CharacterFunctions::isDigit (const char character) noexcept | |||||
| return (character >= '0' && character <= '9'); | return (character >= '0' && character <= '9'); | ||||
| } | } | ||||
| bool CharacterFunctions::isDigit (const juce_wchar character) noexcept | |||||
| bool CharacterFunctions::isDigit (const water_uchar character) noexcept | |||||
| { | { | ||||
| return iswdigit ((wint_t) character) != 0; | return iswdigit ((wint_t) character) != 0; | ||||
| } | } | ||||
| @@ -86,7 +86,7 @@ bool CharacterFunctions::isLetter (const char character) noexcept | |||||
| || (character >= 'A' && character <= 'Z'); | || (character >= 'A' && character <= 'Z'); | ||||
| } | } | ||||
| bool CharacterFunctions::isLetter (const juce_wchar character) noexcept | |||||
| bool CharacterFunctions::isLetter (const water_uchar character) noexcept | |||||
| { | { | ||||
| return iswalpha ((wint_t) character) != 0; | return iswalpha ((wint_t) character) != 0; | ||||
| } | } | ||||
| @@ -98,7 +98,7 @@ bool CharacterFunctions::isLetterOrDigit (const char character) noexcept | |||||
| || (character >= '0' && character <= '9'); | || (character >= '0' && character <= '9'); | ||||
| } | } | ||||
| bool CharacterFunctions::isLetterOrDigit (const juce_wchar character) noexcept | |||||
| bool CharacterFunctions::isLetterOrDigit (const water_uchar character) noexcept | |||||
| { | { | ||||
| return iswalnum ((wint_t) character) != 0; | return iswalnum ((wint_t) character) != 0; | ||||
| } | } | ||||
| @@ -108,12 +108,12 @@ bool CharacterFunctions::isPrintable (const char character) noexcept | |||||
| return (character >= ' ' && character <= '~'); | return (character >= ' ' && character <= '~'); | ||||
| } | } | ||||
| bool CharacterFunctions::isPrintable (const juce_wchar character) noexcept | |||||
| bool CharacterFunctions::isPrintable (const water_uchar character) noexcept | |||||
| { | { | ||||
| return iswprint ((wint_t) character) != 0; | return iswprint ((wint_t) character) != 0; | ||||
| } | } | ||||
| int CharacterFunctions::getHexDigitValue (const juce_wchar digit) noexcept | |||||
| int CharacterFunctions::getHexDigitValue (const water_uchar digit) noexcept | |||||
| { | { | ||||
| unsigned int d = (unsigned int) digit - '0'; | unsigned int d = (unsigned int) digit - '0'; | ||||
| if (d < (unsigned int) 10) | if (d < (unsigned int) 10) | ||||
| @@ -158,17 +158,17 @@ double CharacterFunctions::mulexp10 (const double value, int exponent) noexcept | |||||
| return negative ? (value / result) : (value * result); | return negative ? (value / result) : (value * result); | ||||
| } | } | ||||
| juce_wchar CharacterFunctions::getUnicodeCharFromWindows1252Codepage (const uint8 c) noexcept | |||||
| water_uchar CharacterFunctions::getUnicodeCharFromWindows1252Codepage (const uint8 c) noexcept | |||||
| { | { | ||||
| if (c < 0x80 || c >= 0xa0) | if (c < 0x80 || c >= 0xa0) | ||||
| return (juce_wchar) c; | |||||
| return (water_uchar) c; | |||||
| static const uint16 lookup[] = { 0x20AC, 0x0007, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, | static const uint16 lookup[] = { 0x20AC, 0x0007, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, | ||||
| 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0007, 0x017D, 0x0007, | 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0007, 0x017D, 0x0007, | ||||
| 0x0007, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, | 0x0007, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, | ||||
| 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0007, 0x017E, 0x0178 }; | 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0007, 0x017E, 0x0178 }; | ||||
| return (juce_wchar) lookup[c - 0x80]; | |||||
| return (water_uchar) lookup[c - 0x80]; | |||||
| } | } | ||||
| } | } | ||||
| @@ -23,17 +23,17 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_CHARACTERFUNCTIONS_H_INCLUDED | |||||
| #define JUCE_CHARACTERFUNCTIONS_H_INCLUDED | |||||
| #include <algorithm> | |||||
| #ifndef WATER_CHARACTERFUNCTIONS_H_INCLUDED | |||||
| #define WATER_CHARACTERFUNCTIONS_H_INCLUDED | |||||
| #include "../memory/Memory.h" | #include "../memory/Memory.h" | ||||
| #include <algorithm> | |||||
| namespace water { | namespace water { | ||||
| /** A platform-independent 32-bit unicode character type. */ | /** A platform-independent 32-bit unicode character type. */ | ||||
| typedef uint32 juce_wchar; | |||||
| typedef uint32 water_uchar; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** | /** | ||||
| @@ -49,34 +49,34 @@ class CharacterFunctions | |||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| /** Converts a character to upper-case. */ | /** Converts a character to upper-case. */ | ||||
| static juce_wchar toUpperCase (juce_wchar character) noexcept; | |||||
| static water_uchar toUpperCase (water_uchar character) noexcept; | |||||
| /** Converts a character to lower-case. */ | /** Converts a character to lower-case. */ | ||||
| static juce_wchar toLowerCase (juce_wchar character) noexcept; | |||||
| static water_uchar toLowerCase (water_uchar character) noexcept; | |||||
| /** Checks whether a unicode character is upper-case. */ | /** Checks whether a unicode character is upper-case. */ | ||||
| static bool isUpperCase (juce_wchar character) noexcept; | |||||
| static bool isUpperCase (water_uchar character) noexcept; | |||||
| /** Checks whether a unicode character is lower-case. */ | /** Checks whether a unicode character is lower-case. */ | ||||
| static bool isLowerCase (juce_wchar character) noexcept; | |||||
| static bool isLowerCase (water_uchar character) noexcept; | |||||
| /** Checks whether a character is whitespace. */ | /** Checks whether a character is whitespace. */ | ||||
| static bool isWhitespace (char character) noexcept; | static bool isWhitespace (char character) noexcept; | ||||
| /** Checks whether a character is whitespace. */ | /** Checks whether a character is whitespace. */ | ||||
| static bool isWhitespace (juce_wchar character) noexcept; | |||||
| static bool isWhitespace (water_uchar character) noexcept; | |||||
| /** Checks whether a character is a digit. */ | /** Checks whether a character is a digit. */ | ||||
| static bool isDigit (char character) noexcept; | static bool isDigit (char character) noexcept; | ||||
| /** Checks whether a character is a digit. */ | /** Checks whether a character is a digit. */ | ||||
| static bool isDigit (juce_wchar character) noexcept; | |||||
| static bool isDigit (water_uchar character) noexcept; | |||||
| /** Checks whether a character is alphabetic. */ | /** Checks whether a character is alphabetic. */ | ||||
| static bool isLetter (char character) noexcept; | static bool isLetter (char character) noexcept; | ||||
| /** Checks whether a character is alphabetic. */ | /** Checks whether a character is alphabetic. */ | ||||
| static bool isLetter (juce_wchar character) noexcept; | |||||
| static bool isLetter (water_uchar character) noexcept; | |||||
| /** Checks whether a character is alphabetic or numeric. */ | /** Checks whether a character is alphabetic or numeric. */ | ||||
| static bool isLetterOrDigit (char character) noexcept; | static bool isLetterOrDigit (char character) noexcept; | ||||
| /** Checks whether a character is alphabetic or numeric. */ | /** Checks whether a character is alphabetic or numeric. */ | ||||
| static bool isLetterOrDigit (juce_wchar character) noexcept; | |||||
| static bool isLetterOrDigit (water_uchar character) noexcept; | |||||
| /** Checks whether a character is a printable character, i.e. alphabetic, numeric, | /** Checks whether a character is a printable character, i.e. alphabetic, numeric, | ||||
| a punctuation character or a space. | a punctuation character or a space. | ||||
| @@ -86,13 +86,13 @@ public: | |||||
| /** Checks whether a character is a printable character, i.e. alphabetic, numeric, | /** Checks whether a character is a printable character, i.e. alphabetic, numeric, | ||||
| a punctuation character or a space. | a punctuation character or a space. | ||||
| */ | */ | ||||
| static bool isPrintable (juce_wchar character) noexcept; | |||||
| static bool isPrintable (water_uchar character) noexcept; | |||||
| /** Returns 0 to 16 for '0' to 'F", or -1 for characters that aren't a legal hex digit. */ | /** Returns 0 to 16 for '0' to 'F", or -1 for characters that aren't a legal hex digit. */ | ||||
| static int getHexDigitValue (juce_wchar digit) noexcept; | |||||
| static int getHexDigitValue (water_uchar digit) noexcept; | |||||
| /** Converts a byte of Windows 1252 codepage to unicode. */ | /** Converts a byte of Windows 1252 codepage to unicode. */ | ||||
| static juce_wchar getUnicodeCharFromWindows1252Codepage (uint8 windows1252Char) noexcept; | |||||
| static water_uchar getUnicodeCharFromWindows1252Codepage (uint8 windows1252Char) noexcept; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Parses a character string to read a floating-point number. | /** Parses a character string to read a floating-point number. | ||||
| @@ -110,7 +110,7 @@ public: | |||||
| const int maxSignificantDigits = 15 + 2; | const int maxSignificantDigits = 15 + 2; | ||||
| text = text.findEndOfWhitespace(); | text = text.findEndOfWhitespace(); | ||||
| juce_wchar c = *text; | |||||
| water_uchar c = *text; | |||||
| switch (c) | switch (c) | ||||
| { | { | ||||
| @@ -250,7 +250,7 @@ public: | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c = s.getAndAdvance(); | |||||
| const water_uchar c = s.getAndAdvance(); | |||||
| if (c >= '0' && c <= '9') | if (c >= '0' && c <= '9') | ||||
| v = v * 10 + (IntType) (c - '0'); | v = v * 10 + (IntType) (c - '0'); | ||||
| @@ -312,7 +312,7 @@ public: | |||||
| template <typename DestCharPointerType, typename SrcCharPointerType> | template <typename DestCharPointerType, typename SrcCharPointerType> | ||||
| static void copyAll (DestCharPointerType& dest, SrcCharPointerType src) noexcept | static void copyAll (DestCharPointerType& dest, SrcCharPointerType src) noexcept | ||||
| { | { | ||||
| while (juce_wchar c = src.getAndAdvance()) | |||||
| while (water_uchar c = src.getAndAdvance()) | |||||
| dest.write (c); | dest.write (c); | ||||
| dest.writeNull(); | dest.writeNull(); | ||||
| @@ -329,7 +329,7 @@ public: | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c = src.getAndAdvance(); | |||||
| const water_uchar c = src.getAndAdvance(); | |||||
| const size_t bytesNeeded = DestCharPointerType::getBytesRequiredFor (c); | const size_t bytesNeeded = DestCharPointerType::getBytesRequiredFor (c); | ||||
| maxBytes -= bytesNeeded; | maxBytes -= bytesNeeded; | ||||
| @@ -352,7 +352,7 @@ public: | |||||
| { | { | ||||
| while (--maxChars > 0) | while (--maxChars > 0) | ||||
| { | { | ||||
| const juce_wchar c = src.getAndAdvance(); | |||||
| const water_uchar c = src.getAndAdvance(); | |||||
| if (c == 0) | if (c == 0) | ||||
| break; | break; | ||||
| @@ -363,7 +363,7 @@ public: | |||||
| } | } | ||||
| /** Compares two characters. */ | /** Compares two characters. */ | ||||
| static inline int compare (juce_wchar char1, juce_wchar char2) noexcept | |||||
| static inline int compare (water_uchar char1, water_uchar char2) noexcept | |||||
| { | { | ||||
| if (int diff = static_cast<int> (char1) - static_cast<int> (char2)) | if (int diff = static_cast<int> (char1) - static_cast<int> (char2)) | ||||
| return diff < 0 ? -1 : 1; | return diff < 0 ? -1 : 1; | ||||
| @@ -377,7 +377,7 @@ public: | |||||
| { | { | ||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c1 = s1.getAndAdvance(); | |||||
| const water_uchar c1 = s1.getAndAdvance(); | |||||
| if (int diff = compare (c1, s2.getAndAdvance())) | if (int diff = compare (c1, s2.getAndAdvance())) | ||||
| return diff; | return diff; | ||||
| @@ -395,7 +395,7 @@ public: | |||||
| { | { | ||||
| while (--maxChars >= 0) | while (--maxChars >= 0) | ||||
| { | { | ||||
| const juce_wchar c1 = s1.getAndAdvance(); | |||||
| const water_uchar c1 = s1.getAndAdvance(); | |||||
| if (int diff = compare (c1, s2.getAndAdvance())) | if (int diff = compare (c1, s2.getAndAdvance())) | ||||
| return diff; | return diff; | ||||
| @@ -408,7 +408,7 @@ public: | |||||
| } | } | ||||
| /** Compares two characters, using a case-independant match. */ | /** Compares two characters, using a case-independant match. */ | ||||
| static inline int compareIgnoreCase (juce_wchar char1, juce_wchar char2) noexcept | |||||
| static inline int compareIgnoreCase (water_uchar char1, water_uchar char2) noexcept | |||||
| { | { | ||||
| return char1 != char2 ? compare (toUpperCase (char1), toUpperCase (char2)) : 0; | return char1 != char2 ? compare (toUpperCase (char1), toUpperCase (char2)) : 0; | ||||
| } | } | ||||
| @@ -419,7 +419,7 @@ public: | |||||
| { | { | ||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c1 = s1.getAndAdvance(); | |||||
| const water_uchar c1 = s1.getAndAdvance(); | |||||
| if (int diff = compareIgnoreCase (c1, s2.getAndAdvance())) | if (int diff = compareIgnoreCase (c1, s2.getAndAdvance())) | ||||
| return diff; | return diff; | ||||
| @@ -437,7 +437,7 @@ public: | |||||
| { | { | ||||
| while (--maxChars >= 0) | while (--maxChars >= 0) | ||||
| { | { | ||||
| const juce_wchar c1 = s1.getAndAdvance(); | |||||
| const water_uchar c1 = s1.getAndAdvance(); | |||||
| if (int diff = compareIgnoreCase (c1, s2.getAndAdvance())) | if (int diff = compareIgnoreCase (c1, s2.getAndAdvance())) | ||||
| return diff; | return diff; | ||||
| @@ -491,11 +491,11 @@ public: | |||||
| null terminator. | null terminator. | ||||
| */ | */ | ||||
| template <typename CharPointerType> | template <typename CharPointerType> | ||||
| static CharPointerType find (CharPointerType textToSearch, const juce_wchar charToLookFor) noexcept | |||||
| static CharPointerType find (CharPointerType textToSearch, const water_uchar charToLookFor) noexcept | |||||
| { | { | ||||
| for (;; ++textToSearch) | for (;; ++textToSearch) | ||||
| { | { | ||||
| const juce_wchar c = *textToSearch; | |||||
| const water_uchar c = *textToSearch; | |||||
| if (c == charToLookFor || c == 0) | if (c == charToLookFor || c == 0) | ||||
| break; | break; | ||||
| @@ -530,7 +530,7 @@ public: | |||||
| Returns -1 if the character is not found. | Returns -1 if the character is not found. | ||||
| */ | */ | ||||
| template <typename Type> | template <typename Type> | ||||
| static int indexOfChar (Type text, const juce_wchar charToFind) noexcept | |||||
| static int indexOfChar (Type text, const water_uchar charToFind) noexcept | |||||
| { | { | ||||
| int i = 0; | int i = 0; | ||||
| @@ -550,7 +550,7 @@ public: | |||||
| Returns -1 if the character is not found. | Returns -1 if the character is not found. | ||||
| */ | */ | ||||
| template <typename Type> | template <typename Type> | ||||
| static int indexOfCharIgnoreCase (Type text, juce_wchar charToFind) noexcept | |||||
| static int indexOfCharIgnoreCase (Type text, water_uchar charToFind) noexcept | |||||
| { | { | ||||
| charToFind = CharacterFunctions::toLowerCase (charToFind); | charToFind = CharacterFunctions::toLowerCase (charToFind); | ||||
| int i = 0; | int i = 0; | ||||
| @@ -586,11 +586,11 @@ public: | |||||
| template <typename Type, typename BreakType> | template <typename Type, typename BreakType> | ||||
| static Type findEndOfToken (Type text, const BreakType breakCharacters, const Type quoteCharacters) | static Type findEndOfToken (Type text, const BreakType breakCharacters, const Type quoteCharacters) | ||||
| { | { | ||||
| juce_wchar currentQuoteChar = 0; | |||||
| water_uchar currentQuoteChar = 0; | |||||
| while (! text.isEmpty()) | while (! text.isEmpty()) | ||||
| { | { | ||||
| const juce_wchar c = text.getAndAdvance(); | |||||
| const water_uchar c = text.getAndAdvance(); | |||||
| if (currentQuoteChar == 0 && breakCharacters.indexOf (c) >= 0) | if (currentQuoteChar == 0 && breakCharacters.indexOf (c) >= 0) | ||||
| { | { | ||||
| @@ -616,4 +616,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_CHARACTERFUNCTIONS_H_INCLUDED | |||||
| #endif // WATER_CHARACTERFUNCTIONS_H_INCLUDED | |||||
| @@ -33,7 +33,7 @@ Identifier::~Identifier() noexcept {} | |||||
| Identifier::Identifier (const Identifier& other) noexcept : name (other.name) {} | Identifier::Identifier (const Identifier& other) noexcept : name (other.name) {} | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| Identifier::Identifier (Identifier&& other) noexcept : name (static_cast<String&&> (other.name)) {} | Identifier::Identifier (Identifier&& other) noexcept : name (static_cast<String&&> (other.name)) {} | ||||
| Identifier& Identifier::operator= (Identifier&& other) noexcept | Identifier& Identifier::operator= (Identifier&& other) noexcept | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_IDENTIFIER_H_INCLUDED | |||||
| #define JUCE_IDENTIFIER_H_INCLUDED | |||||
| #ifndef WATER_IDENTIFIER_H_INCLUDED | |||||
| #define WATER_IDENTIFIER_H_INCLUDED | |||||
| #include "String.h" | #include "String.h" | ||||
| @@ -70,7 +70,7 @@ public: | |||||
| /** Creates a copy of another identifier. */ | /** Creates a copy of another identifier. */ | ||||
| Identifier& operator= (const Identifier& other) noexcept; | Identifier& operator= (const Identifier& other) noexcept; | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| /** Creates a copy of another identifier. */ | /** Creates a copy of another identifier. */ | ||||
| Identifier (Identifier&& other) noexcept; | Identifier (Identifier&& other) noexcept; | ||||
| @@ -138,4 +138,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_IDENTIFIER_H_INCLUDED | |||||
| #endif // WATER_IDENTIFIER_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_NEWLINE_H_INCLUDED | |||||
| #define JUCE_NEWLINE_H_INCLUDED | |||||
| #ifndef WATER_NEWLINE_H_INCLUDED | |||||
| #define WATER_NEWLINE_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -86,4 +86,4 @@ inline String operator+ (const NewLine&, const char* s2) { return String (New | |||||
| } | } | ||||
| #endif // JUCE_NEWLINE_H_INCLUDED | |||||
| #endif // WATER_NEWLINE_H_INCLUDED | |||||
| @@ -53,7 +53,7 @@ static const EmptyString emptyString = { 0x3fffffff, sizeof (String::CharPointer | |||||
| class StringHolder | class StringHolder | ||||
| { | { | ||||
| public: | public: | ||||
| StringHolder() JUCE_DELETED_FUNCTION; | |||||
| StringHolder() WATER_DELETED_FUNCTION; | |||||
| typedef String::CharPointerType CharPointerType; | typedef String::CharPointerType CharPointerType; | ||||
| typedef String::CharPointerType::CharType CharType; | typedef String::CharPointerType::CharType CharType; | ||||
| @@ -242,7 +242,7 @@ String& String::operator= (const String& other) noexcept | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| String::String (String&& other) noexcept : text (other.text) | String::String (String&& other) noexcept : text (other.text) | ||||
| { | { | ||||
| other.text = &(emptyString.text); | other.text = &(emptyString.text); | ||||
| @@ -288,12 +288,8 @@ String::String (const char* const t) | |||||
| you use UTF-8 with escape characters in your source code to represent extended characters, | you use UTF-8 with escape characters in your source code to represent extended characters, | ||||
| because there's no other way to represent these strings in a way that isn't dependent on | because there's no other way to represent these strings in a way that isn't dependent on | ||||
| the compiler, source code editor and platform. | the compiler, source code editor and platform. | ||||
| Note that the Projucer has a handy string literal generator utility that will convert | |||||
| any unicode string to a valid C++ string literal, creating ascii escape sequences that will | |||||
| work in any compiler. | |||||
| */ | */ | ||||
| jassert (t == nullptr || CharPointer_UTF8::isValidString (t, std::numeric_limits<int>::max())); | |||||
| CARLA_SAFE_ASSERT (t == nullptr || CharPointer_UTF8::isValidString (t, std::numeric_limits<int>::max())); | |||||
| } | } | ||||
| String::String (const char* const t, const size_t maxChars) | String::String (const char* const t, const size_t maxChars) | ||||
| @@ -311,12 +307,8 @@ String::String (const char* const t, const size_t maxChars) | |||||
| you use UTF-8 with escape characters in your source code to represent extended characters, | you use UTF-8 with escape characters in your source code to represent extended characters, | ||||
| because there's no other way to represent these strings in a way that isn't dependent on | because there's no other way to represent these strings in a way that isn't dependent on | ||||
| the compiler, source code editor and platform. | the compiler, source code editor and platform. | ||||
| Note that the Projucer has a handy string literal generator utility that will convert | |||||
| any unicode string to a valid C++ string literal, creating ascii escape sequences that will | |||||
| work in any compiler. | |||||
| */ | */ | ||||
| jassert (t == nullptr || CharPointer_UTF8::isValidString (t, (int) maxChars)); | |||||
| CARLA_SAFE_ASSERT (t == nullptr || CharPointer_UTF8::isValidString (t, (int) maxChars)); | |||||
| } | } | ||||
| String::String (const CharPointer_UTF8 t) : text (StringHolder::createFromCharPointer (t)) {} | String::String (const CharPointer_UTF8 t) : text (StringHolder::createFromCharPointer (t)) {} | ||||
| @@ -326,7 +318,7 @@ String::String (const CharPointer_UTF8 start, const CharPointer_UTF8 end) : t | |||||
| String::String (const std::string& s) : text (StringHolder::createFromFixedLength (s.data(), s.size())) {} | String::String (const std::string& s) : text (StringHolder::createFromFixedLength (s.data(), s.size())) {} | ||||
| String::String (StringRef s) : text (StringHolder::createFromCharPointer (s.text)) {} | String::String (StringRef s) : text (StringHolder::createFromCharPointer (s.text)) {} | ||||
| String String::charToString (const juce_wchar character) | |||||
| String String::charToString (const water_uchar character) | |||||
| { | { | ||||
| String result (PreallocationBytes (CharPointerType::getBytesRequiredFor (character))); | String result (PreallocationBytes (CharPointerType::getBytesRequiredFor (character))); | ||||
| CharPointerType t (result.text); | CharPointerType t (result.text); | ||||
| @@ -481,7 +473,7 @@ size_t String::getByteOffsetOfEnd() const noexcept | |||||
| return findByteOffsetOfEnd (text); | return findByteOffsetOfEnd (text); | ||||
| } | } | ||||
| juce_wchar String::operator[] (int index) const noexcept | |||||
| water_uchar String::operator[] (int index) const noexcept | |||||
| { | { | ||||
| jassert (index == 0 || (index > 0 && index <= (int) text.lengthUpTo ((size_t) index + 1))); | jassert (index == 0 || (index > 0 && index <= (int) text.lengthUpTo ((size_t) index + 1))); | ||||
| return text [index]; | return text [index]; | ||||
| @@ -547,10 +539,10 @@ static int stringCompareRight (String::CharPointerType s1, String::CharPointerTy | |||||
| { | { | ||||
| for (int bias = 0;;) | for (int bias = 0;;) | ||||
| { | { | ||||
| const juce_wchar c1 = s1.getAndAdvance(); | |||||
| const water_uchar c1 = s1.getAndAdvance(); | |||||
| const bool isDigit1 = CharacterFunctions::isDigit (c1); | const bool isDigit1 = CharacterFunctions::isDigit (c1); | ||||
| const juce_wchar c2 = s2.getAndAdvance(); | |||||
| const water_uchar c2 = s2.getAndAdvance(); | |||||
| const bool isDigit2 = CharacterFunctions::isDigit (c2); | const bool isDigit2 = CharacterFunctions::isDigit (c2); | ||||
| if (! (isDigit1 || isDigit2)) return bias; | if (! (isDigit1 || isDigit2)) return bias; | ||||
| @@ -568,10 +560,10 @@ static int stringCompareLeft (String::CharPointerType s1, String::CharPointerTyp | |||||
| { | { | ||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c1 = s1.getAndAdvance(); | |||||
| const water_uchar c1 = s1.getAndAdvance(); | |||||
| const bool isDigit1 = CharacterFunctions::isDigit (c1); | const bool isDigit1 = CharacterFunctions::isDigit (c1); | ||||
| const juce_wchar c2 = s2.getAndAdvance(); | |||||
| const water_uchar c2 = s2.getAndAdvance(); | |||||
| const bool isDigit2 = CharacterFunctions::isDigit (c2); | const bool isDigit2 = CharacterFunctions::isDigit (c2); | ||||
| if (! (isDigit1 || isDigit2)) return 0; | if (! (isDigit1 || isDigit2)) return 0; | ||||
| @@ -608,8 +600,8 @@ static int naturalStringCompare (String::CharPointerType s1, String::CharPointer | |||||
| return result; | return result; | ||||
| } | } | ||||
| juce_wchar c1 = s1.getAndAdvance(); | |||||
| juce_wchar c2 = s2.getAndAdvance(); | |||||
| water_uchar c1 = s1.getAndAdvance(); | |||||
| water_uchar c2 = s2.getAndAdvance(); | |||||
| if (c1 != c2 && ! isCaseSensitive) | if (c1 != c2 && ! isCaseSensitive) | ||||
| { | { | ||||
| @@ -703,7 +695,7 @@ String& String::operator+= (const char ch) | |||||
| return operator+= (asString); | return operator+= (asString); | ||||
| } | } | ||||
| String& String::operator+= (const juce_wchar ch) | |||||
| String& String::operator+= (const water_uchar ch) | |||||
| { | { | ||||
| return operator+= (charToString(ch)); | return operator+= (charToString(ch)); | ||||
| } | } | ||||
| @@ -728,14 +720,14 @@ String& String::operator+= (const uint64 number) { return StringHelpers::o | |||||
| //============================================================================== | //============================================================================== | ||||
| String operator+ (const char* const s1, const String& s2) { String s (s1); return s += s2; } | String operator+ (const char* const s1, const String& s2) { String s (s1); return s += s2; } | ||||
| String operator+ (const char s1, const String& s2) { return String::charToString ((juce_wchar) (uint8) s1) + s2; } | |||||
| String operator+ (const char s1, const String& s2) { return String::charToString ((water_uchar) (uint8) s1) + s2; } | |||||
| String operator+ (String s1, const String& s2) { return s1 += s2; } | String operator+ (String s1, const String& s2) { return s1 += s2; } | ||||
| String operator+ (String s1, const char* const s2) { return s1 += s2; } | String operator+ (String s1, const char* const s2) { return s1 += s2; } | ||||
| String operator+ (String s1, const char s2) { return s1 += s2; } | String operator+ (String s1, const char s2) { return s1 += s2; } | ||||
| String operator+ (const juce_wchar s1, const String& s2) { return String::charToString (s1) + s2; } | |||||
| String operator+ (String s1, const juce_wchar s2) { return s1 += s2; } | |||||
| String& operator<< (String& s1, const juce_wchar s2) { return s1 += s2; } | |||||
| String operator+ (const water_uchar s1, const String& s2) { return String::charToString (s1) + s2; } | |||||
| String operator+ (String s1, const water_uchar s2) { return s1 += s2; } | |||||
| String& operator<< (String& s1, const water_uchar s2) { return s1 += s2; } | |||||
| String& operator<< (String& s1, const char s2) { return s1 += s2; } | String& operator<< (String& s1, const char s2) { return s1 += s2; } | ||||
| String& operator<< (String& s1, const char* const s2) { return s1 += s2; } | String& operator<< (String& s1, const char* const s2) { return s1 += s2; } | ||||
| @@ -766,12 +758,12 @@ OutputStream& operator<< (OutputStream& stream, StringRef text) | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| int String::indexOfChar (const juce_wchar character) const noexcept | |||||
| int String::indexOfChar (const water_uchar character) const noexcept | |||||
| { | { | ||||
| return text.indexOf (character); | return text.indexOf (character); | ||||
| } | } | ||||
| int String::indexOfChar (const int startIndex, const juce_wchar character) const noexcept | |||||
| int String::indexOfChar (const int startIndex, const water_uchar character) const noexcept | |||||
| { | { | ||||
| CharPointerType t (text); | CharPointerType t (text); | ||||
| @@ -791,7 +783,7 @@ int String::indexOfChar (const int startIndex, const juce_wchar character) const | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| int String::lastIndexOfChar (const juce_wchar character) const noexcept | |||||
| int String::lastIndexOfChar (const water_uchar character) const noexcept | |||||
| { | { | ||||
| CharPointerType t (text); | CharPointerType t (text); | ||||
| int last = -1; | int last = -1; | ||||
| @@ -936,7 +928,7 @@ bool String::contains (StringRef other) const noexcept | |||||
| return indexOf (other) >= 0; | return indexOf (other) >= 0; | ||||
| } | } | ||||
| bool String::containsChar (const juce_wchar character) const noexcept | |||||
| bool String::containsChar (const water_uchar character) const noexcept | |||||
| { | { | ||||
| return text.indexOf (character) >= 0; | return text.indexOf (character) >= 0; | ||||
| } | } | ||||
| @@ -1008,7 +1000,7 @@ struct WildCardMatcher | |||||
| { | { | ||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar wc = wildcard.getAndAdvance(); | |||||
| const water_uchar wc = wildcard.getAndAdvance(); | |||||
| if (wc == '*') | if (wc == '*') | ||||
| return wildcard.isEmpty() || matchesAnywhere (wildcard, test, ignoreCase); | return wildcard.isEmpty() || matchesAnywhere (wildcard, test, ignoreCase); | ||||
| @@ -1021,7 +1013,7 @@ struct WildCardMatcher | |||||
| } | } | ||||
| } | } | ||||
| static bool characterMatches (const juce_wchar wc, const juce_wchar tc, const bool ignoreCase) noexcept | |||||
| static bool characterMatches (const water_uchar wc, const water_uchar tc, const bool ignoreCase) noexcept | |||||
| { | { | ||||
| return (wc == tc) || (wc == '?' && tc != 0) | return (wc == tc) || (wc == '?' && tc != 0) | ||||
| || (ignoreCase && CharacterFunctions::toLowerCase (wc) == CharacterFunctions::toLowerCase (tc)); | || (ignoreCase && CharacterFunctions::toLowerCase (wc) == CharacterFunctions::toLowerCase (tc)); | ||||
| @@ -1057,7 +1049,7 @@ String String::repeatedString (StringRef stringToRepeat, int numberOfTimesToRepe | |||||
| return result; | return result; | ||||
| } | } | ||||
| String String::paddedLeft (const juce_wchar padCharacter, int minimumLength) const | |||||
| String String::paddedLeft (const water_uchar padCharacter, int minimumLength) const | |||||
| { | { | ||||
| jassert (padCharacter != 0); | jassert (padCharacter != 0); | ||||
| @@ -1084,9 +1076,9 @@ String String::paddedLeft (const juce_wchar padCharacter, int minimumLength) con | |||||
| return result; | return result; | ||||
| } | } | ||||
| String String::paddedRight (const juce_wchar padCharacter, int minimumLength) const | |||||
| String String::paddedRight (const water_uchar padCharacter, int minimumLength) const | |||||
| { | { | ||||
| jassert (padCharacter != 0); | |||||
| CARLA_SAFE_ASSERT_RETURN (padCharacter != 0, *this); | |||||
| int extraChars = minimumLength; | int extraChars = minimumLength; | ||||
| CharPointerType end (text); | CharPointerType end (text); | ||||
| @@ -1209,7 +1201,7 @@ public: | |||||
| dest = result.getCharPointer(); | dest = result.getCharPointer(); | ||||
| } | } | ||||
| void write (juce_wchar c) | |||||
| void write (water_uchar c) | |||||
| { | { | ||||
| bytesWritten += String::CharPointerType::getBytesRequiredFor (c); | bytesWritten += String::CharPointerType::getBytesRequiredFor (c); | ||||
| @@ -1232,7 +1224,7 @@ private: | |||||
| size_t allocatedBytes, bytesWritten; | size_t allocatedBytes, bytesWritten; | ||||
| }; | }; | ||||
| String String::replaceCharacter (const juce_wchar charToReplace, const juce_wchar charToInsert) const | |||||
| String String::replaceCharacter (const water_uchar charToReplace, const water_uchar charToInsert) const | |||||
| { | { | ||||
| if (! containsChar (charToReplace)) | if (! containsChar (charToReplace)) | ||||
| return *this; | return *this; | ||||
| @@ -1241,7 +1233,7 @@ String String::replaceCharacter (const juce_wchar charToReplace, const juce_wcha | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| juce_wchar c = builder.source.getAndAdvance(); | |||||
| water_uchar c = builder.source.getAndAdvance(); | |||||
| if (c == charToReplace) | if (c == charToReplace) | ||||
| c = charToInsert; | c = charToInsert; | ||||
| @@ -1265,7 +1257,7 @@ String String::replaceCharacters (StringRef charactersToReplace, StringRef chara | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| juce_wchar c = builder.source.getAndAdvance(); | |||||
| water_uchar c = builder.source.getAndAdvance(); | |||||
| const int index = charactersToReplace.text.indexOf (c); | const int index = charactersToReplace.text.indexOf (c); | ||||
| if (index >= 0) | if (index >= 0) | ||||
| @@ -1291,16 +1283,18 @@ bool String::startsWithIgnoreCase (StringRef other) const noexcept | |||||
| return text.compareIgnoreCaseUpTo (other.text, other.length()) == 0; | return text.compareIgnoreCaseUpTo (other.text, other.length()) == 0; | ||||
| } | } | ||||
| bool String::startsWithChar (const juce_wchar character) const noexcept | |||||
| bool String::startsWithChar (const water_uchar character) const noexcept | |||||
| { | { | ||||
| jassert (character != 0); // strings can't contain a null character! | |||||
| // strings can't contain a null character! | |||||
| CARLA_SAFE_ASSERT_RETURN (character != 0, false); | |||||
| return *text == character; | return *text == character; | ||||
| } | } | ||||
| bool String::endsWithChar (const juce_wchar character) const noexcept | |||||
| bool String::endsWithChar (const water_uchar character) const noexcept | |||||
| { | { | ||||
| jassert (character != 0); // strings can't contain a null character! | |||||
| // strings can't contain a null character! | |||||
| CARLA_SAFE_ASSERT_RETURN (character != 0, false); | |||||
| if (text.isEmpty()) | if (text.isEmpty()) | ||||
| return false; | return false; | ||||
| @@ -1350,7 +1344,7 @@ String String::toUpperCase() const | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c = builder.source.toUpperCase(); | |||||
| const water_uchar c = builder.source.toUpperCase(); | |||||
| builder.write (c); | builder.write (c); | ||||
| if (c == 0) | if (c == 0) | ||||
| @@ -1368,7 +1362,7 @@ String String::toLowerCase() const | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c = builder.source.toLowerCase(); | |||||
| const water_uchar c = builder.source.toLowerCase(); | |||||
| builder.write (c); | builder.write (c); | ||||
| if (c == 0) | if (c == 0) | ||||
| @@ -1381,9 +1375,9 @@ String String::toLowerCase() const | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| juce_wchar String::getLastCharacter() const noexcept | |||||
| water_uchar String::getLastCharacter() const noexcept | |||||
| { | { | ||||
| return isEmpty() ? juce_wchar() : text [length() - 1]; | |||||
| return isEmpty() ? water_uchar() : text [length() - 1]; | |||||
| } | } | ||||
| String String::substring (int start, const int end) const | String String::substring (int start, const int end) const | ||||
| @@ -1502,7 +1496,7 @@ String String::upToLastOccurrenceOf (StringRef sub, | |||||
| bool String::isQuotedString() const | bool String::isQuotedString() const | ||||
| { | { | ||||
| const juce_wchar trimmedStart = trimStart()[0]; | |||||
| const water_uchar trimmedStart = trimStart()[0]; | |||||
| return trimmedStart == '"' | return trimmedStart == '"' | ||||
| || trimmedStart == '\''; | || trimmedStart == '\''; | ||||
| @@ -1515,7 +1509,7 @@ String String::unquoted() const | |||||
| if (len == 0) | if (len == 0) | ||||
| return String(); | return String(); | ||||
| const juce_wchar lastChar = text [len - 1]; | |||||
| const water_uchar lastChar = text [len - 1]; | |||||
| const int dropAtStart = (*text == '"' || *text == '\'') ? 1 : 0; | const int dropAtStart = (*text == '"' || *text == '\'') ? 1 : 0; | ||||
| const int dropAtEnd = (lastChar == '"' || lastChar == '\'') ? 1 : 0; | const int dropAtEnd = (lastChar == '"' || lastChar == '\'') ? 1 : 0; | ||||
| @@ -1627,7 +1621,7 @@ String String::retainCharacters (StringRef charactersToRetain) const | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| juce_wchar c = builder.source.getAndAdvance(); | |||||
| water_uchar c = builder.source.getAndAdvance(); | |||||
| if (charactersToRetain.text.indexOf (c) >= 0) | if (charactersToRetain.text.indexOf (c) >= 0) | ||||
| builder.write (c); | builder.write (c); | ||||
| @@ -1649,7 +1643,7 @@ String String::removeCharacters (StringRef charactersToRemove) const | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| juce_wchar c = builder.source.getAndAdvance(); | |||||
| water_uchar c = builder.source.getAndAdvance(); | |||||
| if (charactersToRemove.text.indexOf (c) < 0) | if (charactersToRemove.text.indexOf (c) < 0) | ||||
| builder.write (c); | builder.write (c); | ||||
| @@ -1727,7 +1721,7 @@ String String::createStringFromData (const void* const unknownData, int size) | |||||
| return String(); | return String(); | ||||
| if (size == 1) | if (size == 1) | ||||
| return charToString ((juce_wchar) data[0]); | |||||
| return charToString ((water_uchar) data[0]); | |||||
| const char* start = (const char*) data; | const char* start = (const char*) data; | ||||
| @@ -1847,11 +1841,11 @@ String String::toHexString (const void* const d, const int size, const int group | |||||
| for (int i = 0; i < size; ++i) | for (int i = 0; i < size; ++i) | ||||
| { | { | ||||
| const unsigned char nextByte = *data++; | const unsigned char nextByte = *data++; | ||||
| dest.write ((juce_wchar) hexDigits [nextByte >> 4]); | |||||
| dest.write ((juce_wchar) hexDigits [nextByte & 0xf]); | |||||
| dest.write ((water_uchar) hexDigits [nextByte >> 4]); | |||||
| dest.write ((water_uchar) hexDigits [nextByte & 0xf]); | |||||
| if (groupSize > 0 && (i % groupSize) == (groupSize - 1) && i < (size - 1)) | if (groupSize > 0 && (i % groupSize) == (groupSize - 1) && i < (size - 1)) | ||||
| dest.write ((juce_wchar) ' '); | |||||
| dest.write ((water_uchar) ' '); | |||||
| } | } | ||||
| dest.writeNull(); | dest.writeNull(); | ||||
| @@ -1862,7 +1856,7 @@ int String::getHexValue32() const noexcept { return CharacterFunctions::Hex | |||||
| int64 String::getHexValue64() const noexcept { return CharacterFunctions::HexParser<int64>::parse (text); } | int64 String::getHexValue64() const noexcept { return CharacterFunctions::HexParser<int64>::parse (text); } | ||||
| //============================================================================== | //============================================================================== | ||||
| static const juce_wchar emptyChar = 0; | |||||
| static const water_uchar emptyChar = 0; | |||||
| template <class CharPointerType_Src, class CharPointerType_Dest> | template <class CharPointerType_Src, class CharPointerType_Dest> | ||||
| struct StringEncodingConverter | struct StringEncodingConverter | ||||
| @@ -1886,7 +1880,7 @@ struct StringEncodingConverter | |||||
| void* const newSpace = addBytesToPointer (text.getAddress(), (int) endOffset); | void* const newSpace = addBytesToPointer (text.getAddress(), (int) endOffset); | ||||
| const CharPointerType_Dest extraSpace (static_cast<DestChar*> (newSpace)); | const CharPointerType_Dest extraSpace (static_cast<DestChar*> (newSpace)); | ||||
| #if JUCE_DEBUG // (This just avoids spurious warnings from valgrind about the uninitialised bytes at the end of the buffer..) | |||||
| #ifdef DEBUG // (This just avoids spurious warnings from valgrind about the uninitialised bytes at the end of the buffer..) | |||||
| const size_t bytesToClear = (size_t) jmin ((int) extraBytesNeeded, 4); | const size_t bytesToClear = (size_t) jmin ((int) extraBytesNeeded, 4); | ||||
| zeromem (addBytesToPointer (newSpace, extraBytesNeeded - bytesToClear), bytesToClear); | zeromem (addBytesToPointer (newSpace, extraBytesNeeded - bytesToClear), bytesToClear); | ||||
| #endif | #endif | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_STRING_H_INCLUDED | |||||
| #define JUCE_STRING_H_INCLUDED | |||||
| #ifndef WATER_STRING_H_INCLUDED | |||||
| #define WATER_STRING_H_INCLUDED | |||||
| #include "CharPointer_UTF8.h" | #include "CharPointer_UTF8.h" | ||||
| #include "../memory/Memory.h" | #include "../memory/Memory.h" | ||||
| @@ -33,7 +33,7 @@ namespace water { | |||||
| //============================================================================== | //============================================================================== | ||||
| /** | /** | ||||
| The JUCE String class! | |||||
| The Water String class! | |||||
| Using a reference-counted internal representation, these strings are fast | Using a reference-counted internal representation, these strings are fast | ||||
| and efficient, and there are methods to do just about any operation you'll ever | and efficient, and there are methods to do just about any operation you'll ever | ||||
| @@ -53,7 +53,7 @@ public: | |||||
| /** Creates a copy of another string. */ | /** Creates a copy of another string. */ | ||||
| String (const String& other) noexcept; | String (const String& other) noexcept; | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| String (String&& other) noexcept; | String (String&& other) noexcept; | ||||
| #endif | #endif | ||||
| @@ -109,7 +109,7 @@ public: | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Creates a string from a single character. */ | /** Creates a string from a single character. */ | ||||
| static String charToString (juce_wchar character); | |||||
| static String charToString (water_uchar character); | |||||
| /** Destructor. */ | /** Destructor. */ | ||||
| ~String() noexcept; | ~String() noexcept; | ||||
| @@ -136,7 +136,7 @@ public: | |||||
| /** Replaces this string's contents with another string. */ | /** Replaces this string's contents with another string. */ | ||||
| String& operator= (const String& other) noexcept; | String& operator= (const String& other) noexcept; | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| String& operator= (String&& other) noexcept; | String& operator= (String&& other) noexcept; | ||||
| #endif | #endif | ||||
| @@ -157,7 +157,7 @@ public: | |||||
| /** Appends a character at the end of this string. */ | /** Appends a character at the end of this string. */ | ||||
| String& operator+= (char characterToAppend); | String& operator+= (char characterToAppend); | ||||
| /** Appends a character at the end of this string. */ | /** Appends a character at the end of this string. */ | ||||
| String& operator+= (juce_wchar characterToAppend); | |||||
| String& operator+= (water_uchar characterToAppend); | |||||
| /** Appends a string to the end of this one. | /** Appends a string to the end of this one. | ||||
| @@ -301,7 +301,7 @@ public: | |||||
| If the character is 0, this will always return false. | If the character is 0, this will always return false. | ||||
| Uses a case-sensitive comparison. | Uses a case-sensitive comparison. | ||||
| */ | */ | ||||
| bool startsWithChar (juce_wchar character) const noexcept; | |||||
| bool startsWithChar (water_uchar character) const noexcept; | |||||
| /** Tests whether the string begins with another string. | /** Tests whether the string begins with another string. | ||||
| If the parameter is an empty string, this will always return true. | If the parameter is an empty string, this will always return true. | ||||
| @@ -319,7 +319,7 @@ public: | |||||
| If the character is 0, this will always return false. | If the character is 0, this will always return false. | ||||
| Uses a case-sensitive comparison. | Uses a case-sensitive comparison. | ||||
| */ | */ | ||||
| bool endsWithChar (juce_wchar character) const noexcept; | |||||
| bool endsWithChar (water_uchar character) const noexcept; | |||||
| /** Tests whether the string ends with another string. | /** Tests whether the string ends with another string. | ||||
| If the parameter is an empty string, this will always return true. | If the parameter is an empty string, this will always return true. | ||||
| @@ -336,7 +336,7 @@ public: | |||||
| /** Tests whether the string contains a particular character. | /** Tests whether the string contains a particular character. | ||||
| Uses a case-sensitive comparison. | Uses a case-sensitive comparison. | ||||
| */ | */ | ||||
| bool containsChar (juce_wchar character) const noexcept; | |||||
| bool containsChar (water_uchar character) const noexcept; | |||||
| /** Tests whether the string contains another substring. | /** Tests whether the string contains another substring. | ||||
| Uses a case-insensitive comparison. | Uses a case-insensitive comparison. | ||||
| @@ -420,7 +420,7 @@ public: | |||||
| @returns the index of the first occurrence of the character in this | @returns the index of the first occurrence of the character in this | ||||
| string, or -1 if it's not found. | string, or -1 if it's not found. | ||||
| */ | */ | ||||
| int indexOfChar (juce_wchar characterToLookFor) const noexcept; | |||||
| int indexOfChar (water_uchar characterToLookFor) const noexcept; | |||||
| /** Searches for a character inside this string. | /** Searches for a character inside this string. | ||||
| Uses a case-sensitive comparison. | Uses a case-sensitive comparison. | ||||
| @@ -429,7 +429,7 @@ public: | |||||
| @returns the index of the first occurrence of the character in this | @returns the index of the first occurrence of the character in this | ||||
| string, or -1 if it's not found. | string, or -1 if it's not found. | ||||
| */ | */ | ||||
| int indexOfChar (int startIndex, juce_wchar characterToLookFor) const noexcept; | |||||
| int indexOfChar (int startIndex, water_uchar characterToLookFor) const noexcept; | |||||
| /** Returns the index of the first character that matches one of the characters | /** Returns the index of the first character that matches one of the characters | ||||
| passed-in to this method. | passed-in to this method. | ||||
| @@ -483,7 +483,7 @@ public: | |||||
| Uses a case-sensitive comparison. | Uses a case-sensitive comparison. | ||||
| @returns the index of the last occurrence of the character in this string, or -1 if it's not found. | @returns the index of the last occurrence of the character in this string, or -1 if it's not found. | ||||
| */ | */ | ||||
| int lastIndexOfChar (juce_wchar character) const noexcept; | |||||
| int lastIndexOfChar (water_uchar character) const noexcept; | |||||
| /** Searches for a substring inside this string (working backwards from the end of the string). | /** Searches for a substring inside this string (working backwards from the end of the string). | ||||
| Uses a case-sensitive comparison. | Uses a case-sensitive comparison. | ||||
| @@ -529,12 +529,12 @@ public: | |||||
| then to use that to iterate the string. | then to use that to iterate the string. | ||||
| @see getCharPointer | @see getCharPointer | ||||
| */ | */ | ||||
| juce_wchar operator[] (int index) const noexcept; | |||||
| water_uchar operator[] (int index) const noexcept; | |||||
| /** Returns the final character of the string. | /** Returns the final character of the string. | ||||
| If the string is empty this will return 0. | If the string is empty this will return 0. | ||||
| */ | */ | ||||
| juce_wchar getLastCharacter() const noexcept; | |||||
| water_uchar getLastCharacter() const noexcept; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Returns a subsection of the string. | /** Returns a subsection of the string. | ||||
| @@ -704,8 +704,8 @@ public: | |||||
| bool ignoreCase = false) const; | bool ignoreCase = false) const; | ||||
| /** Returns a string with all occurrences of a character replaced with a different one. */ | /** Returns a string with all occurrences of a character replaced with a different one. */ | ||||
| String replaceCharacter (juce_wchar characterToReplace, | |||||
| juce_wchar characterToInsertInstead) const; | |||||
| String replaceCharacter (water_uchar characterToReplace, | |||||
| water_uchar characterToInsertInstead) const; | |||||
| /** Replaces a set of characters with another set. | /** Replaces a set of characters with another set. | ||||
| @@ -790,12 +790,12 @@ public: | |||||
| /** Returns a copy of this string with the specified character repeatedly added to its | /** Returns a copy of this string with the specified character repeatedly added to its | ||||
| beginning until the total length is at least the minimum length specified. | beginning until the total length is at least the minimum length specified. | ||||
| */ | */ | ||||
| String paddedLeft (juce_wchar padCharacter, int minimumLength) const; | |||||
| String paddedLeft (water_uchar padCharacter, int minimumLength) const; | |||||
| /** Returns a copy of this string with the specified character repeatedly added to its | /** Returns a copy of this string with the specified character repeatedly added to its | ||||
| end until the total length is at least the minimum length specified. | end until the total length is at least the minimum length specified. | ||||
| */ | */ | ||||
| String paddedRight (juce_wchar padCharacter, int minimumLength) const; | |||||
| String paddedRight (water_uchar padCharacter, int minimumLength) const; | |||||
| /** Creates a string from data in an unknown format. | /** Creates a string from data in an unknown format. | ||||
| @@ -1061,7 +1061,7 @@ public: | |||||
| void swapWith (String& other) noexcept; | void swapWith (String& other) noexcept; | ||||
| //============================================================================== | //============================================================================== | ||||
| #if JUCE_MAC | |||||
| #ifdef CARLA_OS_MAC | |||||
| /** OSX ONLY - Creates a String from an OSX CFString. */ | /** OSX ONLY - Creates a String from an OSX CFString. */ | ||||
| static String fromCFString (CFStringRef cfString); | static String fromCFString (CFStringRef cfString); | ||||
| @@ -1102,7 +1102,7 @@ String operator+ (const char* string1, const String& string2); | |||||
| /** Concatenates two strings. */ | /** Concatenates two strings. */ | ||||
| String operator+ (char string1, const String& string2); | String operator+ (char string1, const String& string2); | ||||
| /** Concatenates two strings. */ | /** Concatenates two strings. */ | ||||
| String operator+ (juce_wchar string1, const String& string2); | |||||
| String operator+ (water_uchar string1, const String& string2); | |||||
| /** Concatenates two strings. */ | /** Concatenates two strings. */ | ||||
| String operator+ (String string1, const String& string2); | String operator+ (String string1, const String& string2); | ||||
| @@ -1111,13 +1111,13 @@ String operator+ (String string1, const char* string2); | |||||
| /** Concatenates two strings. */ | /** Concatenates two strings. */ | ||||
| String operator+ (String string1, char characterToAppend); | String operator+ (String string1, char characterToAppend); | ||||
| /** Concatenates two strings. */ | /** Concatenates two strings. */ | ||||
| String operator+ (String string1, juce_wchar characterToAppend); | |||||
| String operator+ (String string1, water_uchar characterToAppend); | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Appends a character at the end of a string. */ | /** Appends a character at the end of a string. */ | ||||
| String& operator<< (String& string1, char characterToAppend); | String& operator<< (String& string1, char characterToAppend); | ||||
| /** Appends a character at the end of a string. */ | /** Appends a character at the end of a string. */ | ||||
| String& operator<< (String& string1, juce_wchar characterToAppend); | |||||
| String& operator<< (String& string1, water_uchar characterToAppend); | |||||
| /** Appends a string to the end of the first one. */ | /** Appends a string to the end of the first one. */ | ||||
| String& operator<< (String& string1, const char* string2); | String& operator<< (String& string1, const char* string2); | ||||
| @@ -1166,7 +1166,7 @@ bool operator>= (const String& string1, const String& string2) noexcept; | |||||
| bool operator<= (const String& string1, const String& string2) noexcept; | bool operator<= (const String& string1, const String& string2) noexcept; | ||||
| //============================================================================== | //============================================================================== | ||||
| /** This operator allows you to write a juce String directly to std output streams. | |||||
| /** This operator allows you to write a water String directly to std output streams. | |||||
| This is handy for writing strings to std::cout, std::cerr, etc. | This is handy for writing strings to std::cout, std::cerr, etc. | ||||
| */ | */ | ||||
| template <class traits> | template <class traits> | ||||
| @@ -1185,4 +1185,4 @@ OutputStream& operator<< (OutputStream& stream, StringRef stringToWrite); | |||||
| #include "StringRef.h" | #include "StringRef.h" | ||||
| #endif // JUCE_STRING_H_INCLUDED | |||||
| #endif // WATER_STRING_H_INCLUDED | |||||
| @@ -36,7 +36,7 @@ StringArray::StringArray (const StringArray& other) | |||||
| { | { | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| StringArray::StringArray (StringArray&& other) noexcept | StringArray::StringArray (StringArray&& other) noexcept | ||||
| : strings (static_cast<Array <String>&&> (other.strings)) | : strings (static_cast<Array <String>&&> (other.strings)) | ||||
| { | { | ||||
| @@ -69,7 +69,7 @@ StringArray& StringArray::operator= (const StringArray& other) | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| StringArray& StringArray::operator= (StringArray&& other) noexcept | StringArray& StringArray::operator= (StringArray&& other) noexcept | ||||
| { | { | ||||
| strings = static_cast<Array<String>&&> (other.strings); | strings = static_cast<Array<String>&&> (other.strings); | ||||
| @@ -125,7 +125,7 @@ void StringArray::add (const String& newString) | |||||
| strings.add (newString); | strings.add (newString); | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| void StringArray::add (String&& stringToAdd) | void StringArray::add (String&& stringToAdd) | ||||
| { | { | ||||
| strings.add (static_cast<String&&> (stringToAdd)); | strings.add (static_cast<String&&> (stringToAdd)); | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_STRINGARRAY_H_INCLUDED | |||||
| #define JUCE_STRINGARRAY_H_INCLUDED | |||||
| #ifndef WATER_STRINGARRAY_H_INCLUDED | |||||
| #define WATER_STRINGARRAY_H_INCLUDED | |||||
| #include "String.h" | #include "String.h" | ||||
| #include "../containers/Array.h" | #include "../containers/Array.h" | ||||
| @@ -47,7 +47,7 @@ public: | |||||
| /** Creates a copy of another string array */ | /** Creates a copy of another string array */ | ||||
| StringArray (const StringArray&); | StringArray (const StringArray&); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| StringArray (StringArray&&) noexcept; | StringArray (StringArray&&) noexcept; | ||||
| #endif | #endif | ||||
| @@ -80,7 +80,7 @@ public: | |||||
| /** Copies the contents of another string array into this one */ | /** Copies the contents of another string array into this one */ | ||||
| StringArray& operator= (const StringArray&); | StringArray& operator= (const StringArray&); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| StringArray& operator= (StringArray&&) noexcept; | StringArray& operator= (StringArray&&) noexcept; | ||||
| #endif | #endif | ||||
| @@ -159,7 +159,7 @@ public: | |||||
| /** Appends a string at the end of the array. */ | /** Appends a string at the end of the array. */ | ||||
| void add (const String& stringToAdd); | void add (const String& stringToAdd); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| /** Appends a string at the end of the array. */ | /** Appends a string at the end of the array. */ | ||||
| void add (String&& stringToAdd); | void add (String&& stringToAdd); | ||||
| #endif | #endif | ||||
| @@ -418,4 +418,4 @@ public: | |||||
| } | } | ||||
| #endif // JUCE_STRINGARRAY_H_INCLUDED | |||||
| #endif // WATER_STRINGARRAY_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_STRINGPOOL_H_INCLUDED | |||||
| #define JUCE_STRINGPOOL_H_INCLUDED | |||||
| #ifndef WATER_STRINGPOOL_H_INCLUDED | |||||
| #define WATER_STRINGPOOL_H_INCLUDED | |||||
| #include "../containers/Array.h" | #include "../containers/Array.h" | ||||
| @@ -96,4 +96,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_STRINGPOOL_H_INCLUDED | |||||
| #endif // WATER_STRINGPOOL_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_STRINGREF_H_INCLUDED | |||||
| #define JUCE_STRINGREF_H_INCLUDED | |||||
| #ifndef WATER_STRINGREF_H_INCLUDED | |||||
| #define WATER_STRINGREF_H_INCLUDED | |||||
| #include "String.h" | #include "String.h" | ||||
| @@ -103,7 +103,7 @@ public: | |||||
| int length() const noexcept { return (int) text.length(); } | int length() const noexcept { return (int) text.length(); } | ||||
| /** Retrieves a character by index. */ | /** Retrieves a character by index. */ | ||||
| juce_wchar operator[] (int index) const noexcept { return text[index]; } | |||||
| water_uchar operator[] (int index) const noexcept { return text[index]; } | |||||
| /** Compares this StringRef with a String. */ | /** Compares this StringRef with a String. */ | ||||
| bool operator== (const String& s) const noexcept { return text.compare (s.getCharPointer()) == 0; } | bool operator== (const String& s) const noexcept { return text.compare (s.getCharPointer()) == 0; } | ||||
| @@ -133,4 +133,4 @@ inline String operator+ (StringRef s1, const char* s2) { return String (s1. | |||||
| } | } | ||||
| #endif // JUCE_STRINGREF_H_INCLUDED | |||||
| #endif // WATER_STRINGREF_H_INCLUDED | |||||
| @@ -33,8 +33,6 @@ | |||||
| # include <sys/wait.h> | # include <sys/wait.h> | ||||
| #endif | #endif | ||||
| #define JUCE_USE_VFORK 1 | |||||
| namespace water { | namespace water { | ||||
| #ifdef CARLA_OS_WIN | #ifdef CARLA_OS_WIN | ||||
| @@ -172,11 +170,7 @@ public: | |||||
| argv.add (nullptr); | argv.add (nullptr); | ||||
| #if JUCE_USE_VFORK | |||||
| const pid_t result = vfork(); | const pid_t result = vfork(); | ||||
| #else | |||||
| const pid_t result = fork(); | |||||
| #endif | |||||
| if (result < 0) | if (result < 0) | ||||
| { | { | ||||
| @@ -185,23 +179,6 @@ public: | |||||
| } | } | ||||
| else if (result == 0) | else if (result == 0) | ||||
| { | { | ||||
| #if ! JUCE_USE_VFORK | |||||
| // we're the child process.. | |||||
| close (pipeHandles[0]); // close the read handle | |||||
| if ((streamFlags & wantStdOut) != 0) | |||||
| dup2 (pipeHandles[1], STDOUT_FILENO); // turns the pipe into stdout | |||||
| else | |||||
| dup2 (open ("/dev/null", O_WRONLY), STDOUT_FILENO); | |||||
| if ((streamFlags & wantStdErr) != 0) | |||||
| dup2 (pipeHandles[1], STDERR_FILENO); | |||||
| else | |||||
| dup2 (open ("/dev/null", O_WRONLY), STDERR_FILENO); | |||||
| close (pipeHandles[1]); | |||||
| #endif | |||||
| if (execvp (exe.toRawUTF8(), argv.getRawDataPointer())) | if (execvp (exe.toRawUTF8(), argv.getRawDataPointer())) | ||||
| _exit (-1); | _exit (-1); | ||||
| } | } | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_CHILDPROCESS_H_INCLUDED | |||||
| #define JUCE_CHILDPROCESS_H_INCLUDED | |||||
| #ifndef WATER_CHILDPROCESS_H_INCLUDED | |||||
| #define WATER_CHILDPROCESS_H_INCLUDED | |||||
| #include "../text/StringArray.h" | #include "../text/StringArray.h" | ||||
| @@ -120,4 +120,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_CHILDPROCESS_H_INCLUDED | |||||
| #endif // WATER_CHILDPROCESS_H_INCLUDED | |||||
| @@ -1,148 +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 JUCE_PROCESS_H_INCLUDED | |||||
| #define JUCE_PROCESS_H_INCLUDED | |||||
| #include "../water.h" | |||||
| namespace water { | |||||
| //============================================================================== | |||||
| /** Represents the current executable's process. | |||||
| This contains methods for controlling the current application at the | |||||
| process-level. | |||||
| @see Thread, JUCEApplicationBase | |||||
| */ | |||||
| class Process | |||||
| { | |||||
| public: | |||||
| //============================================================================== | |||||
| enum ProcessPriority | |||||
| { | |||||
| LowPriority = 0, | |||||
| NormalPriority = 1, | |||||
| HighPriority = 2, | |||||
| RealtimePriority = 3 | |||||
| }; | |||||
| /** Changes the current process's priority. | |||||
| @param priority the process priority, where | |||||
| 0=low, 1=normal, 2=high, 3=realtime | |||||
| */ | |||||
| static void setPriority (const ProcessPriority priority); | |||||
| /** Kills the current process immediately. | |||||
| This is an emergency process terminator that kills the application | |||||
| immediately - it's intended only for use only when something goes | |||||
| horribly wrong. | |||||
| @see JUCEApplicationBase::quit | |||||
| */ | |||||
| static void terminate(); | |||||
| //============================================================================== | |||||
| /** Returns true if this application process is the one that the user is | |||||
| currently using. | |||||
| */ | |||||
| static bool isForegroundProcess(); | |||||
| /** Attempts to make the current process the active one. | |||||
| (This is not possible on some platforms). | |||||
| */ | |||||
| static void makeForegroundProcess(); | |||||
| /** Hides the application (on an OS that supports this, e.g. OSX) */ | |||||
| static void hide(); | |||||
| //============================================================================== | |||||
| /** Raises the current process's privilege level. | |||||
| Does nothing if this isn't supported by the current OS, or if process | |||||
| privilege level is fixed. | |||||
| */ | |||||
| static void raisePrivilege(); | |||||
| /** Lowers the current process's privilege level. | |||||
| Does nothing if this isn't supported by the current OS, or if process | |||||
| privilege level is fixed. | |||||
| */ | |||||
| static void lowerPrivilege(); | |||||
| //============================================================================== | |||||
| /** Returns true if this process is being hosted by a debugger. */ | |||||
| static bool isRunningUnderDebugger() noexcept; | |||||
| //============================================================================== | |||||
| /** Tries to launch the OS's default reader application for a given file or URL. */ | |||||
| static bool openDocument (const String& documentURL, const String& parameters); | |||||
| /** Tries to launch the OS's default email application to let the user create a message. */ | |||||
| static bool openEmailWithAttachments (const String& targetEmailAddress, | |||||
| const String& emailSubject, | |||||
| const String& bodyText, | |||||
| const StringArray& filesToAttach); | |||||
| #ifdef CARLA_OS_WIN | |||||
| //============================================================================== | |||||
| /** WINDOWS ONLY - This returns the HINSTANCE of the current module. | |||||
| The return type is a void* to avoid being dependent on windows.h - just cast | |||||
| it to a HINSTANCE to use it. | |||||
| In a normal JUCE application, this will be automatically set to the module | |||||
| handle of the executable. | |||||
| If you've built a DLL and plan to use any JUCE messaging or windowing classes, | |||||
| you'll need to make sure you call the setCurrentModuleInstanceHandle() | |||||
| to provide the correct module handle in your DllMain() function, because | |||||
| the system relies on the correct instance handle when opening windows. | |||||
| */ | |||||
| static void* getCurrentModuleInstanceHandle() noexcept; | |||||
| /** WINDOWS ONLY - Sets a new module handle to be used by the library. | |||||
| The parameter type is a void* to avoid being dependent on windows.h, but it actually | |||||
| expects a HINSTANCE value. | |||||
| @see getCurrentModuleInstanceHandle() | |||||
| */ | |||||
| static void setCurrentModuleInstanceHandle (void* newHandle) noexcept; | |||||
| #endif | |||||
| private: | |||||
| Process(); | |||||
| CARLA_DECLARE_NON_COPY_CLASS (Process) | |||||
| }; | |||||
| } | |||||
| #endif // JUCE_PROCESS_H_INCLUDED | |||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_SCOPEDLOCK_H_INCLUDED | |||||
| #define JUCE_SCOPEDLOCK_H_INCLUDED | |||||
| #ifndef WATER_SCOPEDLOCK_H_INCLUDED | |||||
| #define WATER_SCOPEDLOCK_H_INCLUDED | |||||
| #include "../water.h" | #include "../water.h" | ||||
| @@ -235,4 +235,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_SCOPEDLOCK_H_INCLUDED | |||||
| #endif // WATER_SCOPEDLOCK_H_INCLUDED | |||||
| @@ -23,10 +23,11 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_SPINLOCK_H_INCLUDED | |||||
| #define JUCE_SPINLOCK_H_INCLUDED | |||||
| #ifndef WATER_SPINLOCK_H_INCLUDED | |||||
| #define WATER_SPINLOCK_H_INCLUDED | |||||
| #include "../water.h" | |||||
| #include "ScopedLock.h" | |||||
| #include "../memory/Atomic.h" | |||||
| namespace water { | namespace water { | ||||
| @@ -86,7 +87,7 @@ public: | |||||
| /** Releases the lock. */ | /** Releases the lock. */ | ||||
| inline void exit() const noexcept | inline void exit() const noexcept | ||||
| { | { | ||||
| jassert (lock.value == 1); // Agh! Releasing a lock that isn't currently held! | |||||
| CARLA_SAFE_ASSERT_RETURN(lock.value == 1,); | |||||
| lock = 0; | lock = 0; | ||||
| } | } | ||||
| @@ -106,4 +107,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_SPINLOCK_H_INCLUDED | |||||
| #endif // WATER_SPINLOCK_H_INCLUDED | |||||
| @@ -1,5 +1,5 @@ | |||||
| /* | /* | ||||
| * Standalone Juce AudioProcessorGraph | |||||
| * 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 Filipe Coelho <falktx@falktx.com> | ||||
| * | * | ||||
| @@ -34,7 +34,7 @@ static Result getResultForLastError() | |||||
| return Result::fail (String (messageBuffer)); | return Result::fail (String (messageBuffer)); | ||||
| } | } | ||||
| static int64 juce_fileSetPosition (void* handle, int64 pos) | |||||
| static int64 water_fileSetPosition (void* handle, int64 pos) | |||||
| { | { | ||||
| LARGE_INTEGER li; | LARGE_INTEGER li; | ||||
| li.QuadPart = pos; | li.QuadPart = pos; | ||||
| @@ -60,7 +60,7 @@ static Result getResultForErrno() | |||||
| static int getFD (void* handle) noexcept { return (int) (pointer_sized_int) handle; } | static int getFD (void* handle) noexcept { return (int) (pointer_sized_int) handle; } | ||||
| static void* fdToVoidPointer (int fd) noexcept { return (void*) (pointer_sized_int) fd; } | static void* fdToVoidPointer (int fd) noexcept { return (void*) (pointer_sized_int) fd; } | ||||
| static int64 juce_fileSetPosition (void* handle, int64 pos) | |||||
| static int64 water_fileSetPosition (void* handle, int64 pos) | |||||
| { | { | ||||
| if (handle != nullptr && lseek (getFD (handle), pos, SEEK_SET) == pos) | if (handle != nullptr && lseek (getFD (handle), pos, SEEK_SET) == pos) | ||||
| return pos; | return pos; | ||||
| @@ -1,5 +1,5 @@ | |||||
| /* | /* | ||||
| * Standalone Juce AudioProcessorGraph | |||||
| * 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 Filipe Coelho <falktx@falktx.com> | ||||
| * | * | ||||
| @@ -28,47 +28,39 @@ | |||||
| #define static_jassert(expression) static_assert(expression, #expression); | #define static_jassert(expression) static_assert(expression, #expression); | ||||
| #if defined (__arm__) || defined (__arm64__) | |||||
| #define JUCE_ARM 1 | |||||
| #else | |||||
| #define JUCE_INTEL 1 | |||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| // Compiler support | // Compiler support | ||||
| #if (__cplusplus >= 201103L || defined (__GXX_EXPERIMENTAL_CXX0X__)) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 | #if (__cplusplus >= 201103L || defined (__GXX_EXPERIMENTAL_CXX0X__)) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 | ||||
| #define JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS 1 | |||||
| #define WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS 1 | |||||
| #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && ! defined (JUCE_DELETED_FUNCTION) | |||||
| #define JUCE_DELETED_FUNCTION = delete | |||||
| #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && ! defined (WATER_DELETED_FUNCTION) | |||||
| #define WATER_DELETED_FUNCTION = delete | |||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| #if __clang__ | #if __clang__ | ||||
| #if __has_feature (cxx_rvalue_references) | #if __has_feature (cxx_rvalue_references) | ||||
| #define JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS 1 | |||||
| #define WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS 1 | |||||
| #endif | #endif | ||||
| #if __has_feature (cxx_deleted_functions) | #if __has_feature (cxx_deleted_functions) | ||||
| #define JUCE_DELETED_FUNCTION = delete | |||||
| #define WATER_DELETED_FUNCTION = delete | |||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| //============================================================================== | //============================================================================== | ||||
| // Declare some fake versions of nullptr and noexcept, for older compilers: | // Declare some fake versions of nullptr and noexcept, for older compilers: | ||||
| #ifndef JUCE_DELETED_FUNCTION | |||||
| #ifndef WATER_DELETED_FUNCTION | |||||
| /** This macro can be placed after a method declaration to allow the use of | /** This macro can be placed after a method declaration to allow the use of | ||||
| the C++11 feature "= delete" on all compilers. | the C++11 feature "= delete" on all compilers. | ||||
| On newer compilers that support it, it does the C++11 "= delete", but on | On newer compilers that support it, it does the C++11 "= delete", but on | ||||
| older ones it's just an empty definition. | older ones it's just an empty definition. | ||||
| */ | */ | ||||
| #define JUCE_DELETED_FUNCTION | |||||
| #define WATER_DELETED_FUNCTION | |||||
| #endif | #endif | ||||
| #define NEEDS_TRANS(x) (x) | |||||
| //============================================================================== | //============================================================================== | ||||
| namespace water | namespace water | ||||
| @@ -1,5 +1,5 @@ | |||||
| /* | /* | ||||
| * Standalone Juce AudioProcessorGraph | |||||
| * 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 Filipe Coelho <falktx@falktx.com> | ||||
| * | * | ||||
| @@ -80,13 +80,13 @@ void XmlDocument::setEmptyTextElementsIgnored (const bool shouldBeIgnored) noexc | |||||
| namespace XmlIdentifierChars | namespace XmlIdentifierChars | ||||
| { | { | ||||
| static bool isIdentifierCharSlow (const juce_wchar c) noexcept | |||||
| static bool isIdentifierCharSlow (const water_uchar c) noexcept | |||||
| { | { | ||||
| return CharacterFunctions::isLetterOrDigit (c) | return CharacterFunctions::isLetterOrDigit (c) | ||||
| || c == '_' || c == '-' || c == ':' || c == '.'; | || c == '_' || c == '-' || c == ':' || c == '.'; | ||||
| } | } | ||||
| static bool isIdentifierChar (const juce_wchar c) noexcept | |||||
| static bool isIdentifierChar (const water_uchar c) noexcept | |||||
| { | { | ||||
| static const uint32 legalChars[] = { 0, 0x7ff6000, 0x87fffffe, 0x7fffffe, 0 }; | static const uint32 legalChars[] = { 0, 0x7ff6000, 0x87fffffe, 0x7fffffe, 0 }; | ||||
| @@ -169,9 +169,9 @@ String XmlDocument::getFileContents (const String& filename) const | |||||
| return String(); | return String(); | ||||
| } | } | ||||
| juce_wchar XmlDocument::readNextChar() noexcept | |||||
| water_uchar XmlDocument::readNextChar() noexcept | |||||
| { | { | ||||
| const juce_wchar c = input.getAndAdvance(); | |||||
| const water_uchar c = input.getAndAdvance(); | |||||
| if (c == 0) | if (c == 0) | ||||
| { | { | ||||
| @@ -226,7 +226,6 @@ bool XmlDocument::parseHeader() | |||||
| if (headerEnd.isEmpty()) | if (headerEnd.isEmpty()) | ||||
| return false; | return false; | ||||
| #if JUCE_DEBUG | |||||
| const String encoding (String (input, headerEnd) | const String encoding (String (input, headerEnd) | ||||
| .fromFirstOccurrenceOf ("encoding", false, true) | .fromFirstOccurrenceOf ("encoding", false, true) | ||||
| .fromFirstOccurrenceOf ("=", false, false) | .fromFirstOccurrenceOf ("=", false, false) | ||||
| @@ -234,14 +233,13 @@ bool XmlDocument::parseHeader() | |||||
| .upToFirstOccurrenceOf ("\"", false, false).trim()); | .upToFirstOccurrenceOf ("\"", false, false).trim()); | ||||
| /* If you load an XML document with a non-UTF encoding type, it may have been | /* If you load an XML document with a non-UTF encoding type, it may have been | ||||
| loaded wrongly.. Since all the files are read via the normal juce file streams, | |||||
| loaded wrongly.. Since all the files are read via the normal water file streams, | |||||
| they're treated as UTF-8, so by the time it gets to the parser, the encoding will | they're treated as UTF-8, so by the time it gets to the parser, the encoding will | ||||
| have been lost. Best plan is to stick to utf-8 or if you have specific files to | have been lost. Best plan is to stick to utf-8 or if you have specific files to | ||||
| read, use your own code to convert them to a unicode String, and pass that to the | read, use your own code to convert them to a unicode String, and pass that to the | ||||
| XML parser. | XML parser. | ||||
| */ | */ | ||||
| jassert (encoding.isEmpty() || encoding.startsWithIgnoreCase ("utf-")); | |||||
| #endif | |||||
| CARLA_SAFE_ASSERT_RETURN (encoding.isEmpty() || encoding.startsWithIgnoreCase ("utf-"), false); | |||||
| input = headerEnd + 2; | input = headerEnd + 2; | ||||
| skipNextWhiteSpace(); | skipNextWhiteSpace(); | ||||
| @@ -259,7 +257,7 @@ bool XmlDocument::parseDTD() | |||||
| for (int n = 1; n > 0;) | for (int n = 1; n > 0;) | ||||
| { | { | ||||
| const juce_wchar c = readNextChar(); | |||||
| const water_uchar c = readNextChar(); | |||||
| if (outOfData) | if (outOfData) | ||||
| return false; | return false; | ||||
| @@ -329,11 +327,11 @@ void XmlDocument::skipNextWhiteSpace() | |||||
| void XmlDocument::readQuotedString (String& result) | void XmlDocument::readQuotedString (String& result) | ||||
| { | { | ||||
| const juce_wchar quote = readNextChar(); | |||||
| const water_uchar quote = readNextChar(); | |||||
| while (! outOfData) | while (! outOfData) | ||||
| { | { | ||||
| const juce_wchar c = readNextChar(); | |||||
| const water_uchar c = readNextChar(); | |||||
| if (c == quote) | if (c == quote) | ||||
| break; | break; | ||||
| @@ -350,7 +348,7 @@ void XmlDocument::readQuotedString (String& result) | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar character = *input; | |||||
| const water_uchar character = *input; | |||||
| if (character == quote) | if (character == quote) | ||||
| { | { | ||||
| @@ -411,7 +409,7 @@ XmlElement* XmlDocument::readNextElement (const bool alsoParseSubElements) | |||||
| { | { | ||||
| skipNextWhiteSpace(); | skipNextWhiteSpace(); | ||||
| const juce_wchar c = *input; | |||||
| const water_uchar c = *input; | |||||
| // empty tag.. | // empty tag.. | ||||
| if (c == '/' && input[1] == '>') | if (c == '/' && input[1] == '>') | ||||
| @@ -447,7 +445,7 @@ XmlElement* XmlDocument::readNextElement (const bool alsoParseSubElements) | |||||
| { | { | ||||
| skipNextWhiteSpace(); | skipNextWhiteSpace(); | ||||
| const juce_wchar nextChar = *input; | |||||
| const water_uchar nextChar = *input; | |||||
| if (nextChar == '"' || nextChar == '\'') | if (nextChar == '"' || nextChar == '\'') | ||||
| { | { | ||||
| @@ -497,12 +495,12 @@ void XmlDocument::readChildElements (XmlElement& parent) | |||||
| if (*input == '<') | if (*input == '<') | ||||
| { | { | ||||
| const juce_wchar c1 = input[1]; | |||||
| const water_uchar c1 = input[1]; | |||||
| if (c1 == '/') | if (c1 == '/') | ||||
| { | { | ||||
| // our close tag.. | // our close tag.. | ||||
| const int closeTag = input.indexOf ((juce_wchar) '>'); | |||||
| const int closeTag = input.indexOf ((water_uchar) '>'); | |||||
| if (closeTag >= 0) | if (closeTag >= 0) | ||||
| input += closeTag + 1; | input += closeTag + 1; | ||||
| @@ -517,7 +515,7 @@ void XmlDocument::readChildElements (XmlElement& parent) | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c0 = *input; | |||||
| const water_uchar c0 = *input; | |||||
| if (c0 == 0) | if (c0 == 0) | ||||
| { | { | ||||
| @@ -554,7 +552,7 @@ void XmlDocument::readChildElements (XmlElement& parent) | |||||
| for (;;) | for (;;) | ||||
| { | { | ||||
| const juce_wchar c = *input; | |||||
| const water_uchar c = *input; | |||||
| if (c == '<') | if (c == '<') | ||||
| { | { | ||||
| @@ -613,7 +611,7 @@ void XmlDocument::readChildElements (XmlElement& parent) | |||||
| { | { | ||||
| for (;; ++input) | for (;; ++input) | ||||
| { | { | ||||
| juce_wchar nextChar = *input; | |||||
| water_uchar nextChar = *input; | |||||
| if (nextChar == '\r') | if (nextChar == '\r') | ||||
| { | { | ||||
| @@ -726,12 +724,12 @@ void XmlDocument::readEntity (String& result) | |||||
| return; | return; | ||||
| } | } | ||||
| result << (juce_wchar) charCode; | |||||
| result << (water_uchar) charCode; | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| const String::CharPointerType entityNameStart (input); | const String::CharPointerType entityNameStart (input); | ||||
| const int closingSemiColon = input.indexOf ((juce_wchar) ';'); | |||||
| const int closingSemiColon = input.indexOf ((water_uchar) ';'); | |||||
| if (closingSemiColon < 0) | if (closingSemiColon < 0) | ||||
| { | { | ||||
| @@ -757,13 +755,13 @@ String XmlDocument::expandEntity (const String& ent) | |||||
| if (ent[0] == '#') | if (ent[0] == '#') | ||||
| { | { | ||||
| const juce_wchar char1 = ent[1]; | |||||
| const water_uchar char1 = ent[1]; | |||||
| if (char1 == 'x' || char1 == 'X') | if (char1 == 'x' || char1 == 'X') | ||||
| return String::charToString (static_cast<juce_wchar> (ent.substring (2).getHexValue32())); | |||||
| return String::charToString (static_cast<water_uchar> (ent.substring (2).getHexValue32())); | |||||
| if (char1 >= '0' && char1 <= '9') | if (char1 >= '0' && char1 <= '9') | ||||
| return String::charToString (static_cast<juce_wchar> (ent.substring (1).getIntValue())); | |||||
| return String::charToString (static_cast<water_uchar> (ent.substring (1).getIntValue())); | |||||
| setLastError ("illegal escape sequence", false); | setLastError ("illegal escape sequence", false); | ||||
| return String::charToString ('&'); | return String::charToString ('&'); | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_XMLDOCUMENT_H_INCLUDED | |||||
| #define JUCE_XMLDOCUMENT_H_INCLUDED | |||||
| #ifndef WATER_XMLDOCUMENT_H_INCLUDED | |||||
| #define WATER_XMLDOCUMENT_H_INCLUDED | |||||
| #include "../text/StringArray.h" | #include "../text/StringArray.h" | ||||
| @@ -165,7 +165,7 @@ private: | |||||
| bool parseHeader(); | bool parseHeader(); | ||||
| bool parseDTD(); | bool parseDTD(); | ||||
| void skipNextWhiteSpace(); | void skipNextWhiteSpace(); | ||||
| juce_wchar readNextChar() noexcept; | |||||
| water_uchar readNextChar() noexcept; | |||||
| XmlElement* readNextElement (bool alsoParseSubElements); | XmlElement* readNextElement (bool alsoParseSubElements); | ||||
| void readChildElements (XmlElement&); | void readChildElements (XmlElement&); | ||||
| void readQuotedString (String&); | void readQuotedString (String&); | ||||
| @@ -181,4 +181,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_XMLDOCUMENT_H_INCLUDED | |||||
| #endif // WATER_XMLDOCUMENT_H_INCLUDED | |||||
| @@ -31,7 +31,7 @@ | |||||
| namespace water { | namespace water { | ||||
| inline bool isValidXmlNameStartCharacter (const juce_wchar character) noexcept | |||||
| inline bool isValidXmlNameStartCharacter (const water_uchar character) noexcept | |||||
| { | { | ||||
| return character == ':' | return character == ':' | ||||
| || character == '_' | || character == '_' | ||||
| @@ -51,7 +51,7 @@ inline bool isValidXmlNameStartCharacter (const juce_wchar character) noexcept | |||||
| || (character >= 0x10000 && character <= 0xeffff); | || (character >= 0x10000 && character <= 0xeffff); | ||||
| } | } | ||||
| inline bool isValidXmlNameBodyCharacter (const juce_wchar character) noexcept | |||||
| inline bool isValidXmlNameBodyCharacter (const water_uchar character) noexcept | |||||
| { | { | ||||
| return isValidXmlNameStartCharacter (character) | return isValidXmlNameStartCharacter (character) | ||||
| || character == '-' | || character == '-' | ||||
| @@ -134,7 +134,7 @@ XmlElement& XmlElement::operator= (const XmlElement& other) | |||||
| return *this; | return *this; | ||||
| } | } | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| XmlElement::XmlElement (XmlElement&& other) noexcept | XmlElement::XmlElement (XmlElement&& other) noexcept | ||||
| : nextListItem (static_cast<LinkedListPointer<XmlElement>&&> (other.nextListItem)), | : nextListItem (static_cast<LinkedListPointer<XmlElement>&&> (other.nextListItem)), | ||||
| firstChildElement (static_cast<LinkedListPointer<XmlElement>&&> (other.firstChildElement)), | firstChildElement (static_cast<LinkedListPointer<XmlElement>&&> (other.firstChildElement)), | ||||
| @@ -178,7 +178,7 @@ XmlElement::~XmlElement() noexcept | |||||
| namespace XmlOutputFunctions | namespace XmlOutputFunctions | ||||
| { | { | ||||
| #if 0 // (These functions are just used to generate the lookup table used below) | #if 0 // (These functions are just used to generate the lookup table used below) | ||||
| bool isLegalXmlCharSlow (const juce_wchar character) noexcept | |||||
| bool isLegalXmlCharSlow (const water_uchar character) noexcept | |||||
| { | { | ||||
| if ((character >= 'a' && character <= 'z') | if ((character >= 'a' && character <= 'z') | ||||
| || (character >= 'A' && character <= 'Z') | || (character >= 'A' && character <= 'Z') | ||||
| @@ -189,7 +189,7 @@ namespace XmlOutputFunctions | |||||
| do | do | ||||
| { | { | ||||
| if (((juce_wchar) (uint8) *t) == character) | |||||
| if (((water_uchar) (uint8) *t) == character) | |||||
| return true; | return true; | ||||
| } | } | ||||
| while (*++t != 0); | while (*++t != 0); | ||||
| @@ -537,7 +537,7 @@ bool XmlElement::getBoolAttribute (StringRef attributeName, const bool defaultRe | |||||
| { | { | ||||
| if (const XmlAttributeNode* att = getAttribute (attributeName)) | if (const XmlAttributeNode* att = getAttribute (attributeName)) | ||||
| { | { | ||||
| const juce_wchar firstChar = *(att->value.getCharPointer().findEndOfWhitespace()); | |||||
| const water_uchar firstChar = *(att->value.getCharPointer().findEndOfWhitespace()); | |||||
| return firstChar == '1' | return firstChar == '1' | ||||
| || firstChar == 't' | || firstChar == 't' | ||||
| @@ -854,7 +854,7 @@ bool XmlElement::isTextElement() const noexcept | |||||
| return tagName.isEmpty(); | return tagName.isEmpty(); | ||||
| } | } | ||||
| static const String juce_xmltextContentAttributeName ("text"); | |||||
| static const String water_xmltextContentAttributeName ("text"); | |||||
| const String& XmlElement::getText() const noexcept | const String& XmlElement::getText() const noexcept | ||||
| { | { | ||||
| @@ -862,15 +862,13 @@ const String& XmlElement::getText() const noexcept | |||||
| // isn't actually a text element.. If this contains text sub-nodes, you | // isn't actually a text element.. If this contains text sub-nodes, you | ||||
| // probably want to use getAllSubText instead. | // probably want to use getAllSubText instead. | ||||
| return getStringAttribute (juce_xmltextContentAttributeName); | |||||
| return getStringAttribute (water_xmltextContentAttributeName); | |||||
| } | } | ||||
| void XmlElement::setText (const String& newText) | void XmlElement::setText (const String& newText) | ||||
| { | { | ||||
| if (isTextElement()) | |||||
| setAttribute (juce_xmltextContentAttributeName, newText); | |||||
| else | |||||
| jassertfalse; // you can only change the text in a text element, not a normal one. | |||||
| CARLA_SAFE_ASSERT_RETURN(isTextElement(),); | |||||
| setAttribute (water_xmltextContentAttributeName, newText); | |||||
| } | } | ||||
| String XmlElement::getAllSubText() const | String XmlElement::getAllSubText() const | ||||
| @@ -900,7 +898,7 @@ String XmlElement::getChildElementAllSubText (StringRef childTagName, const Stri | |||||
| XmlElement* XmlElement::createTextElement (const String& text) | XmlElement* XmlElement::createTextElement (const String& text) | ||||
| { | { | ||||
| XmlElement* const e = new XmlElement ((int) 0); | XmlElement* const e = new XmlElement ((int) 0); | ||||
| e->setAttribute (juce_xmltextContentAttributeName, text); | |||||
| e->setAttribute (water_xmltextContentAttributeName, text); | |||||
| return e; | return e; | ||||
| } | } | ||||
| @@ -23,8 +23,8 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef JUCE_XMLELEMENT_H_INCLUDED | |||||
| #define JUCE_XMLELEMENT_H_INCLUDED | |||||
| #ifndef WATER_XMLELEMENT_H_INCLUDED | |||||
| #define WATER_XMLELEMENT_H_INCLUDED | |||||
| #include "../containers/LinkedListPointer.h" | #include "../containers/LinkedListPointer.h" | ||||
| #include "../memory/HeapBlock.h" | #include "../memory/HeapBlock.h" | ||||
| @@ -166,7 +166,7 @@ public: | |||||
| /** Creates a (deep) copy of another element. */ | /** Creates a (deep) copy of another element. */ | ||||
| XmlElement& operator= (const XmlElement&); | XmlElement& operator= (const XmlElement&); | ||||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||||
| XmlElement (XmlElement&&) noexcept; | XmlElement (XmlElement&&) noexcept; | ||||
| XmlElement& operator= (XmlElement&&) noexcept; | XmlElement& operator= (XmlElement&&) noexcept; | ||||
| #endif | #endif | ||||
| @@ -742,7 +742,7 @@ private: | |||||
| String value; | String value; | ||||
| private: | private: | ||||
| XmlAttributeNode& operator= (const XmlAttributeNode&) JUCE_DELETED_FUNCTION; | |||||
| XmlAttributeNode& operator= (const XmlAttributeNode&) WATER_DELETED_FUNCTION; | |||||
| }; | }; | ||||
| friend class XmlDocument; | friend class XmlDocument; | ||||
| @@ -766,4 +766,4 @@ private: | |||||
| } | } | ||||
| #endif // JUCE_XMLELEMENT_H_INCLUDED | |||||
| #endif // WATER_XMLELEMENT_H_INCLUDED | |||||
| @@ -57,7 +57,7 @@ endif # HAVE_NTK | |||||
| ifeq ($(LINUX),true) | ifeq ($(LINUX),true) | ||||
| ZYN_LD_FLAGS += -lrt | ZYN_LD_FLAGS += -lrt | ||||
| else | else | ||||
| ZYN_LD_FLAGS += $(MODULEDIR)/juce_core.a | |||||
| ZYN_LD_FLAGS += $(MODULEDIR)/water.a | |||||
| endif | endif | ||||
| else # HAVE_ZYN_UI_DEPS | else # HAVE_ZYN_UI_DEPS | ||||
| ZYN_CXX_FLAGS += -DNO_UI | ZYN_CXX_FLAGS += -DNO_UI | ||||
| @@ -47,7 +47,7 @@ | |||||
| using water::String; | using water::String; | ||||
| using water::StringArray; | using water::StringArray; | ||||
| using water::juce_wchar; | |||||
| using water::water_uchar; | |||||
| // ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
| // Converts a parameter name to an LV2 compatible symbol | // Converts a parameter name to an LV2 compatible symbol | ||||
| @@ -67,7 +67,7 @@ static const String nameToSymbol(const String& name, const uint32_t portIndex) | |||||
| { | { | ||||
| for (int i=0; i < trimmedName.length(); ++i) | for (int i=0; i < trimmedName.length(); ++i) | ||||
| { | { | ||||
| const juce_wchar c = trimmedName[i]; | |||||
| const water_uchar c = trimmedName[i]; | |||||
| if (i == 0 && std::isdigit(c)) | if (i == 0 && std::isdigit(c)) | ||||
| symbol += "_"; | symbol += "_"; | ||||
| @@ -520,7 +520,7 @@ static void test_CarlaMathUtils() noexcept | |||||
| // math functions (extended) | // math functions (extended) | ||||
| // carla_addFloat, carla_copyFloat & carla_zeroFloat tests skipped | // carla_addFloat, carla_copyFloat & carla_zeroFloat tests skipped | ||||
| // mostly unused due to juce::FloatVectorOperations | |||||
| // mostly unused due to water::FloatVectorOperations | |||||
| } | } | ||||
| #endif | #endif | ||||