| @@ -145,7 +145,7 @@ static void carla_engine_init_common() | |||
| #ifdef BUILD_BRIDGE | |||
| 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")) | |||
| @@ -191,12 +191,12 @@ static void carla_engine_init_common() | |||
| if (const char* const binaryDir = std::getenv("ENGINE_OPTION_PATH_BINARIES")) | |||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_PATH_BINARIES, 0, binaryDir); | |||
| 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")) | |||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_PATH_RESOURCES, 0, resourceDir); | |||
| 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")) | |||
| 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; | |||
| afm.registerBasicFormats(); | |||
| String juceFormats; | |||
| String waterFormats; | |||
| for (AudioFormat **it=afm.begin(), **end=afm.end(); it != end; ++it) | |||
| { | |||
| const StringArray& exts((*it)->getFileExtensions()); | |||
| 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 | |||
| } | |||
| @@ -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))) | |||
| { | |||
| kEngine->setLastError("Failed from juce"); | |||
| kEngine->setLastError("Failed from water"); | |||
| 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(frames > 0,); | |||
| // put events in juce buffer | |||
| // put events in water buffer | |||
| { | |||
| midiBuffer.clear(); | |||
| fillWaterMidiBufferFromEngineEvents(midiBuffer, data->events.in); | |||
| } | |||
| // put carla audio in juce buffer | |||
| // put carla audio in water buffer | |||
| { | |||
| int i=0; | |||
| @@ -1826,13 +1826,13 @@ void PatchbayGraph::process(CarlaEngine::ProtectedData* const data, const float* | |||
| 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) | |||
| 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); | |||
| 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); | |||
| // code as used by juce | |||
| // code as used by water | |||
| const int minPriority = sched_get_priority_min(SCHED_RR); | |||
| const int maxPriority = sched_get_priority_max(SCHED_RR); | |||
| 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" | |||
| @@ -65,8 +65,8 @@ public: | |||
| : numChannels (numChannelsToAllocate), | |||
| size (numSamplesToAllocate) | |||
| { | |||
| jassert (size >= 0); | |||
| jassert (numChannels >= 0); | |||
| CARLA_SAFE_ASSERT_RETURN (size >= 0,); | |||
| CARLA_SAFE_ASSERT_RETURN (numChannels >= 0,); | |||
| allocateData(); | |||
| } | |||
| @@ -93,8 +93,9 @@ public: | |||
| size (numSamples), | |||
| 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); | |||
| } | |||
| @@ -123,8 +124,9 @@ public: | |||
| allocatedBytes (0), | |||
| 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); | |||
| } | |||
| @@ -189,7 +191,7 @@ public: | |||
| */ | |||
| ~AudioSampleBuffer() noexcept {} | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| /** Move constructor */ | |||
| AudioSampleBuffer (AudioSampleBuffer&& other) noexcept | |||
| : 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/ElementComparator.h" | |||
| @@ -77,7 +77,7 @@ public: | |||
| 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 | |||
| : data (static_cast<ArrayAllocationBase<ElementType>&&> (other.data)), | |||
| numUsed (other.numUsed) | |||
| @@ -131,7 +131,7 @@ public: | |||
| return *this; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| Array& operator= (Array&& other) noexcept | |||
| { | |||
| deleteAllElements(); | |||
| @@ -313,7 +313,7 @@ public: | |||
| */ | |||
| inline ElementType* end() const noexcept | |||
| { | |||
| #if JUCE_DEBUG | |||
| #ifdef DEBUG | |||
| if (data.elements == nullptr || numUsed <= 0) // (to keep static analysers happy) | |||
| return data.elements; | |||
| #endif | |||
| @@ -371,7 +371,7 @@ public: | |||
| 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. | |||
| @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" | |||
| @@ -60,7 +60,7 @@ public: | |||
| { | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| ArrayAllocationBase (ArrayAllocationBase<ElementType>&& other) noexcept | |||
| : elements (static_cast<HeapBlock<ElementType>&&> (other.elements)), | |||
| 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" | |||
| 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 | |||
| std::sort (i.e. using an operator() to compare the elements) | |||
| */ | |||
| @@ -44,7 +44,7 @@ struct SortFunctionConverter | |||
| private: | |||
| 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" | |||
| @@ -81,7 +81,7 @@ public: | |||
| return *this; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| LinkedListPointer (LinkedListPointer&& other) noexcept | |||
| : 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; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| NamedValueSet::NamedValueSet (NamedValueSet&& other) noexcept | |||
| : values (static_cast<Array<NamedValue>&&> (other.values)) | |||
| { | |||
| @@ -117,7 +117,7 @@ var* NamedValueSet::getVarPointer (const Identifier& name) const noexcept | |||
| return nullptr; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| bool NamedValueSet::set (const Identifier& name, var&& newValue) | |||
| { | |||
| 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 "Variant.h" | |||
| @@ -50,7 +50,7 @@ public: | |||
| /** Replaces this set with a copy of another set. */ | |||
| NamedValueSet& operator= (const NamedValueSet&); | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| NamedValueSet (NamedValueSet&&) noexcept; | |||
| NamedValueSet& operator= (NamedValueSet&&) noexcept; | |||
| #endif | |||
| @@ -68,7 +68,7 @@ public: | |||
| NamedValue (const Identifier& n, const var& v) : name (n), value (v) {} | |||
| 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 | |||
| : name (static_cast<Identifier&&> (other.name)), | |||
| value (static_cast<var&&> (other.value)) | |||
| @@ -124,7 +124,7 @@ public: | |||
| */ | |||
| 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. | |||
| @returns true if a value was changed or added; false if the | |||
| 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" | |||
| @@ -73,7 +73,7 @@ public: | |||
| deleteAllObjects(); | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| OwnedArray (OwnedArray&& other) noexcept | |||
| : data (static_cast<ArrayAllocationBase <ObjectClass*>&&> (other.data)), | |||
| numUsed (other.numUsed) | |||
| @@ -213,7 +213,7 @@ public: | |||
| */ | |||
| inline ObjectClass** end() const noexcept | |||
| { | |||
| #if JUCE_DEBUG | |||
| #ifdef DEBUG | |||
| if (data.elements == nullptr || numUsed <= 0) // (to keep static analysers happy) | |||
| return data.elements; | |||
| #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" | |||
| @@ -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" | |||
| @@ -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; }; | |||
| 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; } | |||
| 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 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 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 | |||
| : type (other.type), | |||
| 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" | |||
| @@ -69,7 +69,7 @@ public: | |||
| var& operator= (const char* value); | |||
| var& operator= (const String& value); | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| var (var&&) noexcept; | |||
| var (String&&); | |||
| 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 "../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; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| File::File (File&& other) noexcept | |||
| : fullPath (static_cast<String&&> (other.fullPath)) | |||
| { | |||
| @@ -196,23 +196,14 @@ String File::parseAbsolutePath (const String& p) | |||
| } | |||
| 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(); | |||
| } | |||
| @@ -399,7 +390,7 @@ int64 File::hashCode64() const { return fullPath.hashCode64(); } | |||
| //============================================================================== | |||
| bool File::isAbsolutePath (StringRef path) | |||
| { | |||
| const juce_wchar firstChar = *(path.text); | |||
| const water_uchar firstChar = *(path.text); | |||
| return firstChar == separator | |||
| #ifdef CARLA_OS_WIN | |||
| @@ -417,7 +408,7 @@ File File::getChildFile (StringRef relativePath) const | |||
| return File (String (r)); | |||
| #ifdef CARLA_OS_WIN | |||
| if (r.indexOf ((juce_wchar) '/') >= 0) | |||
| if (r.indexOf ((water_uchar) '/') >= 0) | |||
| return getChildFile (String (r).replaceCharacter ('/', '\\')); | |||
| #endif | |||
| @@ -426,11 +417,11 @@ File File::getChildFile (StringRef relativePath) const | |||
| while (*r == '.') | |||
| { | |||
| String::CharPointerType lastPos = r; | |||
| const juce_wchar secondChar = *++r; | |||
| const water_uchar secondChar = *++r; | |||
| if (secondChar == '.') // remove "../" | |||
| { | |||
| const juce_wchar thirdChar = *++r; | |||
| const water_uchar thirdChar = *++r; | |||
| if (thirdChar == separator || thirdChar == 0) | |||
| { | |||
| @@ -664,7 +655,7 @@ bool File::hasFileExtension (StringRef possibleSuffix) const | |||
| if (possibleSuffix.isEmpty()) | |||
| 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) | |||
| return hasFileExtension (String (possibleSuffix.text).substring (0, semicolon).trimEnd()) | |||
| @@ -849,7 +840,7 @@ static int countNumberOfSeparators (String::CharPointerType s) | |||
| for (;;) | |||
| { | |||
| const juce_wchar c = s.getAndAdvance(); | |||
| const water_uchar c = s.getAndAdvance(); | |||
| if (c == 0) | |||
| break; | |||
| @@ -881,8 +872,8 @@ String File::getRelativePathFrom (const File& dir) const | |||
| 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 (c1 != c2 | |||
| @@ -959,7 +950,7 @@ bool File::createSymbolicLink (const File& linkFileToCreate, bool overwriteExist | |||
| } | |||
| return true; | |||
| #elif JUCE_MSVC | |||
| #elif _MSVC_VER | |||
| return CreateSymbolicLink (linkFileToCreate.getFullPathName().toUTF8(), | |||
| fullPath.toUTF8(), | |||
| 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 ("\\"); | |||
| bool File::isDirectory() const | |||
| @@ -1210,23 +1201,23 @@ private: | |||
| namespace | |||
| { | |||
| #if CARLA_OS_MAC | |||
| typedef struct stat juce_statStruct; | |||
| #define JUCE_STAT stat | |||
| typedef struct stat water_statStruct; | |||
| #define WATER_STAT stat | |||
| #else | |||
| typedef struct stat64 juce_statStruct; | |||
| #define JUCE_STAT stat64 | |||
| typedef struct stat64 water_statStruct; | |||
| #define WATER_STAT stat64 | |||
| #endif | |||
| bool juce_stat (const String& fileName, juce_statStruct& info) | |||
| bool water_stat (const String& fileName, water_statStruct& info) | |||
| { | |||
| return fileName.isNotEmpty() | |||
| && JUCE_STAT (fileName.toUTF8(), &info) == 0; | |||
| && WATER_STAT (fileName.toUTF8(), &info) == 0; | |||
| } | |||
| #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 | |||
| 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 | |||
| 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) | |||
| { | |||
| 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 (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 ("/"); | |||
| bool File::isDirectory() const | |||
| { | |||
| juce_statStruct info; | |||
| water_statStruct info; | |||
| 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 | |||
| @@ -1288,8 +1279,8 @@ bool File::hasWriteAccess() 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 | |||
| @@ -1347,15 +1338,15 @@ File File::getCurrentWorkingDirectory() | |||
| return File (CharPointer_UTF8 (cwd)); | |||
| } | |||
| File juce_getExecutableFile(); | |||
| File juce_getExecutableFile() | |||
| File water_getExecutableFile(); | |||
| File water_getExecutableFile() | |||
| { | |||
| struct DLAddrReader | |||
| { | |||
| static String getFilename() | |||
| { | |||
| Dl_info exeInfo; | |||
| void* localSymbol = (void*) juce_getExecutableFile; | |||
| void* localSymbol = (void*) water_getExecutableFile; | |||
| dladdr (localSymbol, &exeInfo); | |||
| const CharPointer_UTF8 filename (exeInfo.dli_fname); | |||
| @@ -1394,7 +1385,7 @@ File juce_getExecutableFile() | |||
| #ifdef CARLA_OS_MAC | |||
| 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 | |||
| @@ -1405,7 +1396,7 @@ bool File::isSymbolicLink() const | |||
| File File::getLinkedTarget() const | |||
| { | |||
| if (NSString* dest = getFileLink (fullPath)) | |||
| return getSiblingFile (nsStringToJuce (dest)); | |||
| return getSiblingFile (nsStringToWater (dest)); | |||
| return *this; | |||
| } | |||
| @@ -1416,14 +1407,14 @@ bool File::copyInternal (const File& dest) const | |||
| { | |||
| 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 | |||
| && [fm copyItemAtPath: juceStringToNS (fullPath) | |||
| toPath: juceStringToNS (dest.getFullPathName()) | |||
| && [fm copyItemAtPath: waterStringToNS (fullPath) | |||
| toPath: waterStringToNS (dest.getFullPathName()) | |||
| error: nil]; | |||
| #else | |||
| && [fm copyPath: juceStringToNS (fullPath) | |||
| toPath: juceStringToNS (dest.getFullPathName()) | |||
| && [fm copyPath: waterStringToNS (fullPath) | |||
| toPath: waterStringToNS (dest.getFullPathName()) | |||
| handler: nil]; | |||
| #endif | |||
| } | |||
| @@ -1437,13 +1428,13 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||
| switch (type) | |||
| { | |||
| case userHomeDirectory: resultPath = nsStringToJuce (NSHomeDirectory()); break; | |||
| case userHomeDirectory: resultPath = nsStringToWater (NSHomeDirectory()); break; | |||
| case userDocumentsDirectory: resultPath = "~/Documents"; break; | |||
| case userDesktopDirectory: resultPath = "~/Desktop"; break; | |||
| case tempDirectory: | |||
| { | |||
| File tmp ("~/Library/Caches/" + juce_getExecutableFile().getFileNameWithoutExtension()); | |||
| File tmp ("~/Library/Caches/" + water_getExecutableFile().getFileNameWithoutExtension()); | |||
| tmp.createDirectory(); | |||
| return File (tmp.getFullPathName()); | |||
| } | |||
| @@ -1457,16 +1448,16 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||
| case globalApplicationsDirectory: resultPath = "/Applications"; break; | |||
| 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... | |||
| case currentExecutableFile: | |||
| return juce_getExecutableFile(); | |||
| return water_getExecutableFile(); | |||
| case currentApplicationFile: | |||
| { | |||
| const File exe (juce_getExecutableFile()); | |||
| const File exe (water_getExecutableFile()); | |||
| const File parent (exe.getParentDirectory()); | |||
| return parent.getFullPathName().endsWithIgnoreCase ("Contents/MacOS") | |||
| @@ -1506,7 +1497,7 @@ public: | |||
| { | |||
| @autoreleasepool | |||
| { | |||
| enumerator = [[[NSFileManager defaultManager] enumeratorAtPath: juceStringToNS (directory.getFullPathName())] retain]; | |||
| enumerator = [[[NSFileManager defaultManager] enumeratorAtPath: waterStringToNS (directory.getFullPathName())] retain]; | |||
| } | |||
| } | |||
| @@ -1530,7 +1521,7 @@ public: | |||
| return false; | |||
| [enumerator skipDescendents]; | |||
| filenameFound = nsStringToJuce (file).convertToPrecomposedUnicode(); | |||
| filenameFound = nsStringToWater (file).convertToPrecomposedUnicode(); | |||
| if (wildcardUTF8 == nullptr) | |||
| wildcardUTF8 = wildCard.toUTF8(); | |||
| @@ -1634,12 +1625,12 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||
| case currentExecutableFile: | |||
| case currentApplicationFile: | |||
| return juce_getExecutableFile(); | |||
| return water_getExecutableFile(); | |||
| case hostApplicationPath: | |||
| { | |||
| const File f ("/proc/self/exe"); | |||
| return f.isSymbolicLink() ? f.getLinkedTarget() : juce_getExecutableFile(); | |||
| return f.isSymbolicLink() ? f.getLinkedTarget() : water_getExecutableFile(); | |||
| } | |||
| 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 "../misc/Result.h" | |||
| @@ -89,7 +89,7 @@ public: | |||
| /** Copies from another file object. */ | |||
| File& operator= (const File& otherFile); | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| File (File&&) noexcept; | |||
| File& operator= (File&&) noexcept; | |||
| #endif | |||
| @@ -705,25 +705,6 @@ public: | |||
| */ | |||
| 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. | |||
| */ | |||
| @@ -815,7 +796,7 @@ public: | |||
| /** The system-specific file separator character. | |||
| 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. | |||
| On Windows, this will be '\', on Mac/Linux, it'll be '/' | |||
| @@ -882,7 +863,7 @@ public: | |||
| #endif | |||
| //============================================================================== | |||
| #if JUCE_MAC | |||
| #ifdef CARLA_OS_MAC | |||
| /** OSX ONLY - Finds the OSType of a file from the its resources. */ | |||
| OSType getMacOSType() const; | |||
| @@ -929,4 +910,4 @@ private: | |||
| } | |||
| #endif // JUCE_FILE_H_INCLUDED | |||
| #endif // WATER_FILE_H_INCLUDED | |||
| @@ -27,8 +27,7 @@ | |||
| namespace water { | |||
| int64 juce_fileSetPosition (void* handle, int64 pos); | |||
| static int64 water_fileSetPosition (void* handle, int64 pos); | |||
| //============================================================================== | |||
| FileInputStream::FileInputStream (const File& f) | |||
| @@ -79,7 +78,7 @@ bool FileInputStream::setPosition (int64 pos) | |||
| jassert (openedOk()); | |||
| if (pos != currentPosition) | |||
| currentPosition = juce_fileSetPosition (fileHandle, pos); | |||
| currentPosition = water_fileSetPosition (fileHandle, 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 "../streams/InputStream.h" | |||
| @@ -95,4 +95,4 @@ private: | |||
| } | |||
| #endif // JUCE_FILEINPUTSTREAM_H_INCLUDED | |||
| #endif // WATER_FILEINPUTSTREAM_H_INCLUDED | |||
| @@ -27,7 +27,7 @@ | |||
| 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) | |||
| @@ -60,7 +60,7 @@ bool FileOutputStream::setPosition (int64 newPosition) | |||
| if (newPosition != currentPosition) | |||
| { | |||
| flushBuffer(); | |||
| currentPosition = juce_fileSetPosition (fileHandle, newPosition); | |||
| currentPosition = water_fileSetPosition (fileHandle, newPosition); | |||
| } | |||
| 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 "../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 "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" | |||
| @@ -254,16 +254,16 @@ int numElementsInArray (Type (&array)[N]) | |||
| //============================================================================== | |||
| // 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. */ | |||
| 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)); | |||
| } | |||
| template <> | |||
| inline float juce_hypot (float a, float b) noexcept | |||
| inline float water_hypot (float a, float b) noexcept | |||
| { | |||
| return hypotf (a, b); | |||
| } | |||
| @@ -304,19 +304,19 @@ inline double radiansToDegrees (double radians) noexcept { return radians * (1 | |||
| platform-independent function for it. | |||
| */ | |||
| template <typename NumericType> | |||
| bool juce_isfinite (NumericType) noexcept | |||
| bool water_isfinite (NumericType) noexcept | |||
| { | |||
| return true; // Integer types are always finite | |||
| } | |||
| template <> | |||
| inline bool juce_isfinite (float value) noexcept | |||
| inline bool water_isfinite (float value) noexcept | |||
| { | |||
| return std::isfinite (value); | |||
| } | |||
| template <> | |||
| inline bool juce_isfinite (double value) noexcept | |||
| inline bool water_isfinite (double value) noexcept | |||
| { | |||
| 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" | |||
| @@ -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" | |||
| @@ -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" | |||
| @@ -133,7 +133,7 @@ public: | |||
| static bool isBigEndian() noexcept; | |||
| private: | |||
| ByteOrder() JUCE_DELETED_FUNCTION; | |||
| ByteOrder() WATER_DELETED_FUNCTION; | |||
| CARLA_DECLARE_NON_COPY_CLASS (ByteOrder) | |||
| }; | |||
| @@ -147,9 +147,9 @@ inline uint16 ByteOrder::swap (uint16 n) noexcept | |||
| inline uint32 ByteOrder::swap (uint32 n) noexcept | |||
| { | |||
| #if JUCE_MAC | |||
| #ifdef CARLA_OS_MAC | |||
| 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)); | |||
| return n; | |||
| #else | |||
| @@ -159,7 +159,7 @@ inline uint32 ByteOrder::swap (uint32 n) noexcept | |||
| inline uint64 ByteOrder::swap (uint64 value) noexcept | |||
| { | |||
| #if JUCE_MAC | |||
| #ifdef CARLA_OS_MAC | |||
| return OSSwapInt64 (value); | |||
| #else | |||
| 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 "../maths/MathsFunctions.h" | |||
| @@ -99,7 +99,7 @@ public: | |||
| std::free (data); | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| HeapBlock (HeapBlock&& other) noexcept | |||
| : 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" | |||
| @@ -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; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| MemoryBlock::MemoryBlock (MemoryBlock&& other) noexcept | |||
| : data (static_cast<HeapBlock<char>&&> (other.data)), | |||
| size (other.size) | |||
| @@ -339,7 +339,7 @@ void MemoryBlock::loadFromHexString (StringRef hex) | |||
| for (;;) | |||
| { | |||
| const juce_wchar c = t.getAndAdvance(); | |||
| const water_uchar c = t.getAndAdvance(); | |||
| if (c >= '0' && c <= '9') { byte |= c - '0'; 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" | |||
| @@ -68,7 +68,7 @@ public: | |||
| */ | |||
| MemoryBlock& operator= (const MemoryBlock&); | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| MemoryBlock (MemoryBlock&&) noexcept; | |||
| MemoryBlock& operator= (MemoryBlock&&) noexcept; | |||
| #endif | |||
| @@ -221,34 +221,6 @@ public: | |||
| int getBitRange (size_t bitRangeStart, | |||
| 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: | |||
| //============================================================================== | |||
| 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" | |||
| @@ -300,7 +300,7 @@ public: | |||
| return *this; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| /** Takes-over the object from another pointer. */ | |||
| ReferenceCountedObjectPtr (ReferenceCountedObjectPtr&& other) noexcept | |||
| : 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" | |||
| @@ -157,9 +157,9 @@ private: | |||
| // There's no need to assign to a SharedResourcePointer because every | |||
| // 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" | |||
| @@ -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" | |||
| @@ -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; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| MidiMessage::MidiMessage (MidiMessage&& other) noexcept | |||
| : timeStamp (other.timeStamp), size (other.size) | |||
| { | |||
| @@ -322,31 +322,6 @@ uint8* MidiMessage::allocateSpace (int bytes) | |||
| 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 | |||
| { | |||
| const uint8* const data = getRawData(); | |||
| @@ -1035,120 +1010,4 @@ bool MidiMessage::isMidiNoteBlack (int noteNumber) noexcept | |||
| 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" | |||
| @@ -113,7 +113,7 @@ public: | |||
| /** Copies this message from another one. */ | |||
| MidiMessage& operator= (const MidiMessage& other); | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| MidiMessage (MidiMessage&&) noexcept; | |||
| MidiMessage& operator= (MidiMessage&&) noexcept; | |||
| #endif | |||
| @@ -129,12 +129,6 @@ public: | |||
| */ | |||
| 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. | |||
| @@ -342,13 +336,13 @@ public: | |||
| //============================================================================== | |||
| /** Returns true if the message is a program (patch) change message. | |||
| @see getProgramChangeNumber, getGMInstrumentName | |||
| @see getProgramChangeNumber | |||
| */ | |||
| bool isProgramChange() const noexcept; | |||
| /** Returns the new program number of a program change message. | |||
| If the message isn't a program change, the value returned is undefined. | |||
| @see isProgramChange, getGMInstrumentName | |||
| @see isProgramChange | |||
| */ | |||
| int getProgramChangeNumber() const noexcept; | |||
| @@ -356,7 +350,7 @@ public: | |||
| @param channel the midi channel, in the range 1 to 16 | |||
| @param programNumber the midi program number, 0 to 127 | |||
| @see isProgramChange, getGMInstrumentName | |||
| @see isProgramChange | |||
| */ | |||
| 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. */ | |||
| 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. */ | |||
| static uint8 floatValueToMidiByte (float valueBetween0and1) noexcept; | |||
| @@ -918,7 +890,6 @@ public: | |||
| private: | |||
| //============================================================================== | |||
| #ifndef DOXYGEN | |||
| union PackedData | |||
| { | |||
| uint8* allocatedData; | |||
| @@ -928,7 +899,6 @@ private: | |||
| PackedData packedData; | |||
| double timeStamp; | |||
| int size; | |||
| #endif | |||
| inline bool isHeapAllocated() const noexcept { return size > (int) sizeof (packedData); } | |||
| 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 "../containers/Array.h" | |||
| @@ -55,7 +55,7 @@ public: | |||
| /** Replaces this sequence with another one. */ | |||
| MidiMessageSequence& operator= (const MidiMessageSequence&); | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| MidiMessageSequence (MidiMessageSequence&& other) noexcept | |||
| : 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; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| Result::Result (Result&& other) noexcept | |||
| : 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" | |||
| @@ -100,7 +100,7 @@ public: | |||
| Result (const Result&); | |||
| Result& operator= (const Result&); | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| Result (Result&&) noexcept; | |||
| Result& operator= (Result&&) noexcept; | |||
| #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 | |||
| return (uint32) timeGetTime(); | |||
| @@ -90,7 +90,7 @@ int64 Time::currentTimeMillis() noexcept | |||
| uint32 Time::getMillisecondCounter() noexcept | |||
| { | |||
| const uint32 now = juce_millisecondsSinceStartup(); | |||
| const uint32 now = water_millisecondsSinceStartup(); | |||
| 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" | |||
| @@ -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) 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" | |||
| @@ -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) 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) 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 "../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) 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) 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 "../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 "../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" | |||
| @@ -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" | |||
| @@ -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; | |||
| } | |||
| bool MemoryOutputStream::appendUTF8Char (juce_wchar c) | |||
| bool MemoryOutputStream::appendUTF8Char (water_uchar 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 "../memory/MemoryBlock.h" | |||
| @@ -94,7 +94,7 @@ public: | |||
| void preallocate (size_t bytesToPreallocate); | |||
| /** 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. */ | |||
| 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 { | |||
| #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() | |||
| : newLineString (NewLine::getDefault()) | |||
| { | |||
| #if JUCE_DEBUG | |||
| danglingStreamChecker.activeStreams.add (this); | |||
| #endif | |||
| } | |||
| OutputStream::~OutputStream() | |||
| { | |||
| #if JUCE_DEBUG | |||
| danglingStreamChecker.activeStreams.removeFirstMatchingValue (this); | |||
| #endif | |||
| } | |||
| //============================================================================== | |||
| @@ -195,7 +166,7 @@ bool OutputStream::writeText (const String& text, const bool asUTF16, | |||
| for (;;) | |||
| { | |||
| const juce_wchar c = src.getAndAdvance(); | |||
| const water_uchar c = src.getAndAdvance(); | |||
| if (c == 0) | |||
| 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" | |||
| @@ -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 "../memory/Atomic.h" | |||
| @@ -84,12 +84,12 @@ public: | |||
| inline bool isEmpty() const noexcept { return *data == 0; } | |||
| /** 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; | |||
| if (byte >= 0) | |||
| return (juce_wchar) (uint8) byte; | |||
| return (water_uchar) (uint8) byte; | |||
| uint32 n = (uint32) (uint8) byte; | |||
| uint32 mask = 0x7f; | |||
| @@ -116,7 +116,7 @@ public: | |||
| n |= (nextByte & 0x3f); | |||
| } | |||
| return (juce_wchar) n; | |||
| return (water_uchar) n; | |||
| } | |||
| /** Moves this pointer along to the next character in the string. */ | |||
| @@ -127,7 +127,7 @@ public: | |||
| if (n < 0) | |||
| { | |||
| juce_wchar bit = 0x40; | |||
| water_uchar bit = 0x40; | |||
| while ((n & bit) != 0 && bit > 0x8) | |||
| { | |||
| @@ -152,12 +152,12 @@ public: | |||
| /** Returns the character that this pointer is currently pointing to, and then | |||
| advances the pointer to point to the next character. */ | |||
| juce_wchar getAndAdvance() noexcept | |||
| water_uchar getAndAdvance() noexcept | |||
| { | |||
| const signed char byte = (signed char) *data++; | |||
| if (byte >= 0) | |||
| return (juce_wchar) (uint8) byte; | |||
| return (water_uchar) (uint8) byte; | |||
| uint32 n = (uint32) (uint8) byte; | |||
| uint32 mask = 0x7f; | |||
| @@ -185,7 +185,7 @@ public: | |||
| n |= (nextByte & 0x3f); | |||
| } | |||
| return (juce_wchar) n; | |||
| return (water_uchar) n; | |||
| } | |||
| /** 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. */ | |||
| juce_wchar operator[] (int characterIndex) const noexcept | |||
| water_uchar operator[] (int characterIndex) const noexcept | |||
| { | |||
| CharPointer_UTF8 p (*this); | |||
| p += characterIndex; | |||
| @@ -289,7 +289,7 @@ public: | |||
| /** Returns the number of bytes that would be needed to represent the given | |||
| 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; | |||
| const uint32 c = (uint32) charToWrite; | |||
| @@ -317,7 +317,7 @@ public: | |||
| { | |||
| size_t count = 0; | |||
| while (juce_wchar n = text.getAndAdvance()) | |||
| while (water_uchar n = text.getAndAdvance()) | |||
| count += getBytesRequiredFor (n); | |||
| return count; | |||
| @@ -330,7 +330,7 @@ public: | |||
| } | |||
| /** 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; | |||
| @@ -442,13 +442,13 @@ public: | |||
| } | |||
| /** 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); | |||
| } | |||
| /** 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) | |||
| : CharacterFunctions::indexOfChar (*this, charToFind); | |||
| @@ -468,9 +468,9 @@ public: | |||
| bool isLowerCase() const noexcept { return CharacterFunctions::isLowerCase (operator*()) != 0; } | |||
| /** 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. */ | |||
| 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. */ | |||
| int getIntValue32() const noexcept { return atoi (data); } | |||
| @@ -491,7 +491,7 @@ public: | |||
| CharPointer_UTF8 findEndOfWhitespace() const noexcept { return CharacterFunctions::findEndOfWhitespace (*this); } | |||
| /** 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; | |||
| } | |||
| @@ -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 | |||
| return iswupper ((wint_t) character) != 0; | |||
| @@ -50,7 +50,7 @@ bool CharacterFunctions::isUpperCase (const juce_wchar character) noexcept | |||
| #endif | |||
| } | |||
| bool CharacterFunctions::isLowerCase (const juce_wchar character) noexcept | |||
| bool CharacterFunctions::isLowerCase (const water_uchar character) noexcept | |||
| { | |||
| #ifdef CARLA_OS_WIN | |||
| return iswlower ((wint_t) character) != 0; | |||
| @@ -65,7 +65,7 @@ bool CharacterFunctions::isWhitespace (const char character) noexcept | |||
| 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; | |||
| } | |||
| @@ -75,7 +75,7 @@ bool CharacterFunctions::isDigit (const char character) noexcept | |||
| 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; | |||
| } | |||
| @@ -86,7 +86,7 @@ bool CharacterFunctions::isLetter (const char character) noexcept | |||
| || (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; | |||
| } | |||
| @@ -98,7 +98,7 @@ bool CharacterFunctions::isLetterOrDigit (const char character) noexcept | |||
| || (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; | |||
| } | |||
| @@ -108,12 +108,12 @@ bool CharacterFunctions::isPrintable (const char character) noexcept | |||
| 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; | |||
| } | |||
| int CharacterFunctions::getHexDigitValue (const juce_wchar digit) noexcept | |||
| int CharacterFunctions::getHexDigitValue (const water_uchar digit) noexcept | |||
| { | |||
| unsigned int d = (unsigned int) digit - '0'; | |||
| if (d < (unsigned int) 10) | |||
| @@ -158,17 +158,17 @@ double CharacterFunctions::mulexp10 (const double value, int exponent) noexcept | |||
| 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) | |||
| return (juce_wchar) c; | |||
| return (water_uchar) c; | |||
| static const uint16 lookup[] = { 0x20AC, 0x0007, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, | |||
| 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0007, 0x017D, 0x0007, | |||
| 0x0007, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, | |||
| 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 <algorithm> | |||
| namespace water { | |||
| /** A platform-independent 32-bit unicode character type. */ | |||
| typedef uint32 juce_wchar; | |||
| typedef uint32 water_uchar; | |||
| //============================================================================== | |||
| /** | |||
| @@ -49,34 +49,34 @@ class CharacterFunctions | |||
| public: | |||
| //============================================================================== | |||
| /** 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. */ | |||
| static juce_wchar toLowerCase (juce_wchar character) noexcept; | |||
| static water_uchar toLowerCase (water_uchar character) noexcept; | |||
| /** 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. */ | |||
| static bool isLowerCase (juce_wchar character) noexcept; | |||
| static bool isLowerCase (water_uchar character) noexcept; | |||
| /** Checks whether a character is whitespace. */ | |||
| static bool isWhitespace (char character) noexcept; | |||
| /** 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. */ | |||
| static bool isDigit (char character) noexcept; | |||
| /** 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. */ | |||
| static bool isLetter (char character) noexcept; | |||
| /** 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. */ | |||
| static bool isLetterOrDigit (char character) noexcept; | |||
| /** 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, | |||
| a punctuation character or a space. | |||
| @@ -86,13 +86,13 @@ public: | |||
| /** Checks whether a character is a printable character, i.e. alphabetic, numeric, | |||
| 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. */ | |||
| static int getHexDigitValue (juce_wchar digit) noexcept; | |||
| static int getHexDigitValue (water_uchar digit) noexcept; | |||
| /** 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. | |||
| @@ -110,7 +110,7 @@ public: | |||
| const int maxSignificantDigits = 15 + 2; | |||
| text = text.findEndOfWhitespace(); | |||
| juce_wchar c = *text; | |||
| water_uchar c = *text; | |||
| switch (c) | |||
| { | |||
| @@ -250,7 +250,7 @@ public: | |||
| for (;;) | |||
| { | |||
| const juce_wchar c = s.getAndAdvance(); | |||
| const water_uchar c = s.getAndAdvance(); | |||
| if (c >= '0' && c <= '9') | |||
| v = v * 10 + (IntType) (c - '0'); | |||
| @@ -312,7 +312,7 @@ public: | |||
| template <typename DestCharPointerType, typename SrcCharPointerType> | |||
| static void copyAll (DestCharPointerType& dest, SrcCharPointerType src) noexcept | |||
| { | |||
| while (juce_wchar c = src.getAndAdvance()) | |||
| while (water_uchar c = src.getAndAdvance()) | |||
| dest.write (c); | |||
| dest.writeNull(); | |||
| @@ -329,7 +329,7 @@ public: | |||
| for (;;) | |||
| { | |||
| const juce_wchar c = src.getAndAdvance(); | |||
| const water_uchar c = src.getAndAdvance(); | |||
| const size_t bytesNeeded = DestCharPointerType::getBytesRequiredFor (c); | |||
| maxBytes -= bytesNeeded; | |||
| @@ -352,7 +352,7 @@ public: | |||
| { | |||
| while (--maxChars > 0) | |||
| { | |||
| const juce_wchar c = src.getAndAdvance(); | |||
| const water_uchar c = src.getAndAdvance(); | |||
| if (c == 0) | |||
| break; | |||
| @@ -363,7 +363,7 @@ public: | |||
| } | |||
| /** 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)) | |||
| return diff < 0 ? -1 : 1; | |||
| @@ -377,7 +377,7 @@ public: | |||
| { | |||
| for (;;) | |||
| { | |||
| const juce_wchar c1 = s1.getAndAdvance(); | |||
| const water_uchar c1 = s1.getAndAdvance(); | |||
| if (int diff = compare (c1, s2.getAndAdvance())) | |||
| return diff; | |||
| @@ -395,7 +395,7 @@ public: | |||
| { | |||
| while (--maxChars >= 0) | |||
| { | |||
| const juce_wchar c1 = s1.getAndAdvance(); | |||
| const water_uchar c1 = s1.getAndAdvance(); | |||
| if (int diff = compare (c1, s2.getAndAdvance())) | |||
| return diff; | |||
| @@ -408,7 +408,7 @@ public: | |||
| } | |||
| /** 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; | |||
| } | |||
| @@ -419,7 +419,7 @@ public: | |||
| { | |||
| for (;;) | |||
| { | |||
| const juce_wchar c1 = s1.getAndAdvance(); | |||
| const water_uchar c1 = s1.getAndAdvance(); | |||
| if (int diff = compareIgnoreCase (c1, s2.getAndAdvance())) | |||
| return diff; | |||
| @@ -437,7 +437,7 @@ public: | |||
| { | |||
| while (--maxChars >= 0) | |||
| { | |||
| const juce_wchar c1 = s1.getAndAdvance(); | |||
| const water_uchar c1 = s1.getAndAdvance(); | |||
| if (int diff = compareIgnoreCase (c1, s2.getAndAdvance())) | |||
| return diff; | |||
| @@ -491,11 +491,11 @@ public: | |||
| null terminator. | |||
| */ | |||
| 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) | |||
| { | |||
| const juce_wchar c = *textToSearch; | |||
| const water_uchar c = *textToSearch; | |||
| if (c == charToLookFor || c == 0) | |||
| break; | |||
| @@ -530,7 +530,7 @@ public: | |||
| Returns -1 if the character is not found. | |||
| */ | |||
| 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; | |||
| @@ -550,7 +550,7 @@ public: | |||
| Returns -1 if the character is not found. | |||
| */ | |||
| 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); | |||
| int i = 0; | |||
| @@ -586,11 +586,11 @@ public: | |||
| template <typename Type, typename BreakType> | |||
| static Type findEndOfToken (Type text, const BreakType breakCharacters, const Type quoteCharacters) | |||
| { | |||
| juce_wchar currentQuoteChar = 0; | |||
| water_uchar currentQuoteChar = 0; | |||
| while (! text.isEmpty()) | |||
| { | |||
| const juce_wchar c = text.getAndAdvance(); | |||
| const water_uchar c = text.getAndAdvance(); | |||
| 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) {} | |||
| #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::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" | |||
| @@ -70,7 +70,7 @@ public: | |||
| /** Creates a copy of another identifier. */ | |||
| Identifier& operator= (const Identifier& other) noexcept; | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| /** Creates a copy of another identifier. */ | |||
| 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" | |||
| @@ -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 | |||
| { | |||
| public: | |||
| StringHolder() JUCE_DELETED_FUNCTION; | |||
| StringHolder() WATER_DELETED_FUNCTION; | |||
| typedef String::CharPointerType CharPointerType; | |||
| typedef String::CharPointerType::CharType CharType; | |||
| @@ -242,7 +242,7 @@ String& String::operator= (const String& other) noexcept | |||
| return *this; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| String::String (String&& other) noexcept : text (other.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, | |||
| 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. | |||
| 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) | |||
| @@ -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, | |||
| 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. | |||
| 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)) {} | |||
| @@ -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 (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))); | |||
| CharPointerType t (result.text); | |||
| @@ -481,7 +473,7 @@ size_t String::getByteOffsetOfEnd() const noexcept | |||
| 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))); | |||
| return text [index]; | |||
| @@ -547,10 +539,10 @@ static int stringCompareRight (String::CharPointerType s1, String::CharPointerTy | |||
| { | |||
| for (int bias = 0;;) | |||
| { | |||
| const juce_wchar c1 = s1.getAndAdvance(); | |||
| const water_uchar c1 = s1.getAndAdvance(); | |||
| const bool isDigit1 = CharacterFunctions::isDigit (c1); | |||
| const juce_wchar c2 = s2.getAndAdvance(); | |||
| const water_uchar c2 = s2.getAndAdvance(); | |||
| const bool isDigit2 = CharacterFunctions::isDigit (c2); | |||
| if (! (isDigit1 || isDigit2)) return bias; | |||
| @@ -568,10 +560,10 @@ static int stringCompareLeft (String::CharPointerType s1, String::CharPointerTyp | |||
| { | |||
| for (;;) | |||
| { | |||
| const juce_wchar c1 = s1.getAndAdvance(); | |||
| const water_uchar c1 = s1.getAndAdvance(); | |||
| const bool isDigit1 = CharacterFunctions::isDigit (c1); | |||
| const juce_wchar c2 = s2.getAndAdvance(); | |||
| const water_uchar c2 = s2.getAndAdvance(); | |||
| const bool isDigit2 = CharacterFunctions::isDigit (c2); | |||
| if (! (isDigit1 || isDigit2)) return 0; | |||
| @@ -608,8 +600,8 @@ static int naturalStringCompare (String::CharPointerType s1, String::CharPointer | |||
| 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) | |||
| { | |||
| @@ -703,7 +695,7 @@ String& String::operator+= (const char ch) | |||
| return operator+= (asString); | |||
| } | |||
| String& String::operator+= (const juce_wchar ch) | |||
| String& String::operator+= (const water_uchar 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 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 char* const 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* 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); | |||
| } | |||
| 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); | |||
| @@ -791,7 +783,7 @@ int String::indexOfChar (const int startIndex, const juce_wchar character) const | |||
| return -1; | |||
| } | |||
| int String::lastIndexOfChar (const juce_wchar character) const noexcept | |||
| int String::lastIndexOfChar (const water_uchar character) const noexcept | |||
| { | |||
| CharPointerType t (text); | |||
| int last = -1; | |||
| @@ -936,7 +928,7 @@ bool String::contains (StringRef other) const noexcept | |||
| 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; | |||
| } | |||
| @@ -1008,7 +1000,7 @@ struct WildCardMatcher | |||
| { | |||
| for (;;) | |||
| { | |||
| const juce_wchar wc = wildcard.getAndAdvance(); | |||
| const water_uchar wc = wildcard.getAndAdvance(); | |||
| if (wc == '*') | |||
| 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) | |||
| || (ignoreCase && CharacterFunctions::toLowerCase (wc) == CharacterFunctions::toLowerCase (tc)); | |||
| @@ -1057,7 +1049,7 @@ String String::repeatedString (StringRef stringToRepeat, int numberOfTimesToRepe | |||
| 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); | |||
| @@ -1084,9 +1076,9 @@ String String::paddedLeft (const juce_wchar padCharacter, int minimumLength) con | |||
| 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; | |||
| CharPointerType end (text); | |||
| @@ -1209,7 +1201,7 @@ public: | |||
| dest = result.getCharPointer(); | |||
| } | |||
| void write (juce_wchar c) | |||
| void write (water_uchar c) | |||
| { | |||
| bytesWritten += String::CharPointerType::getBytesRequiredFor (c); | |||
| @@ -1232,7 +1224,7 @@ private: | |||
| 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)) | |||
| return *this; | |||
| @@ -1241,7 +1233,7 @@ String String::replaceCharacter (const juce_wchar charToReplace, const juce_wcha | |||
| for (;;) | |||
| { | |||
| juce_wchar c = builder.source.getAndAdvance(); | |||
| water_uchar c = builder.source.getAndAdvance(); | |||
| if (c == charToReplace) | |||
| c = charToInsert; | |||
| @@ -1265,7 +1257,7 @@ String String::replaceCharacters (StringRef charactersToReplace, StringRef chara | |||
| for (;;) | |||
| { | |||
| juce_wchar c = builder.source.getAndAdvance(); | |||
| water_uchar c = builder.source.getAndAdvance(); | |||
| const int index = charactersToReplace.text.indexOf (c); | |||
| if (index >= 0) | |||
| @@ -1291,16 +1283,18 @@ bool String::startsWithIgnoreCase (StringRef other) const noexcept | |||
| 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; | |||
| } | |||
| 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()) | |||
| return false; | |||
| @@ -1350,7 +1344,7 @@ String String::toUpperCase() const | |||
| for (;;) | |||
| { | |||
| const juce_wchar c = builder.source.toUpperCase(); | |||
| const water_uchar c = builder.source.toUpperCase(); | |||
| builder.write (c); | |||
| if (c == 0) | |||
| @@ -1368,7 +1362,7 @@ String String::toLowerCase() const | |||
| for (;;) | |||
| { | |||
| const juce_wchar c = builder.source.toLowerCase(); | |||
| const water_uchar c = builder.source.toLowerCase(); | |||
| builder.write (c); | |||
| 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 | |||
| @@ -1502,7 +1496,7 @@ String String::upToLastOccurrenceOf (StringRef sub, | |||
| bool String::isQuotedString() const | |||
| { | |||
| const juce_wchar trimmedStart = trimStart()[0]; | |||
| const water_uchar trimmedStart = trimStart()[0]; | |||
| return trimmedStart == '"' | |||
| || trimmedStart == '\''; | |||
| @@ -1515,7 +1509,7 @@ String String::unquoted() const | |||
| if (len == 0) | |||
| 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 dropAtEnd = (lastChar == '"' || lastChar == '\'') ? 1 : 0; | |||
| @@ -1627,7 +1621,7 @@ String String::retainCharacters (StringRef charactersToRetain) const | |||
| for (;;) | |||
| { | |||
| juce_wchar c = builder.source.getAndAdvance(); | |||
| water_uchar c = builder.source.getAndAdvance(); | |||
| if (charactersToRetain.text.indexOf (c) >= 0) | |||
| builder.write (c); | |||
| @@ -1649,7 +1643,7 @@ String String::removeCharacters (StringRef charactersToRemove) const | |||
| for (;;) | |||
| { | |||
| juce_wchar c = builder.source.getAndAdvance(); | |||
| water_uchar c = builder.source.getAndAdvance(); | |||
| if (charactersToRemove.text.indexOf (c) < 0) | |||
| builder.write (c); | |||
| @@ -1727,7 +1721,7 @@ String String::createStringFromData (const void* const unknownData, int size) | |||
| return String(); | |||
| if (size == 1) | |||
| return charToString ((juce_wchar) data[0]); | |||
| return charToString ((water_uchar) data[0]); | |||
| 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) | |||
| { | |||
| 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)) | |||
| dest.write ((juce_wchar) ' '); | |||
| dest.write ((water_uchar) ' '); | |||
| } | |||
| 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); } | |||
| //============================================================================== | |||
| static const juce_wchar emptyChar = 0; | |||
| static const water_uchar emptyChar = 0; | |||
| template <class CharPointerType_Src, class CharPointerType_Dest> | |||
| struct StringEncodingConverter | |||
| @@ -1886,7 +1880,7 @@ struct StringEncodingConverter | |||
| void* const newSpace = addBytesToPointer (text.getAddress(), (int) endOffset); | |||
| 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); | |||
| zeromem (addBytesToPointer (newSpace, extraBytesNeeded - bytesToClear), bytesToClear); | |||
| #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 "../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 | |||
| 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. */ | |||
| String (const String& other) noexcept; | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| String (String&& other) noexcept; | |||
| #endif | |||
| @@ -109,7 +109,7 @@ public: | |||
| //============================================================================== | |||
| /** Creates a string from a single character. */ | |||
| static String charToString (juce_wchar character); | |||
| static String charToString (water_uchar character); | |||
| /** Destructor. */ | |||
| ~String() noexcept; | |||
| @@ -136,7 +136,7 @@ public: | |||
| /** Replaces this string's contents with another string. */ | |||
| String& operator= (const String& other) noexcept; | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| String& operator= (String&& other) noexcept; | |||
| #endif | |||
| @@ -157,7 +157,7 @@ public: | |||
| /** Appends a character at the end of this string. */ | |||
| String& operator+= (char characterToAppend); | |||
| /** 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. | |||
| @@ -301,7 +301,7 @@ public: | |||
| If the character is 0, this will always return false. | |||
| 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. | |||
| 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. | |||
| 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. | |||
| 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. | |||
| 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. | |||
| Uses a case-insensitive comparison. | |||
| @@ -420,7 +420,7 @@ public: | |||
| @returns the index of the first occurrence of the character in this | |||
| 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. | |||
| Uses a case-sensitive comparison. | |||
| @@ -429,7 +429,7 @@ public: | |||
| @returns the index of the first occurrence of the character in this | |||
| 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 | |||
| passed-in to this method. | |||
| @@ -483,7 +483,7 @@ public: | |||
| 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. | |||
| */ | |||
| 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). | |||
| Uses a case-sensitive comparison. | |||
| @@ -529,12 +529,12 @@ public: | |||
| then to use that to iterate the string. | |||
| @see getCharPointer | |||
| */ | |||
| juce_wchar operator[] (int index) const noexcept; | |||
| water_uchar operator[] (int index) const noexcept; | |||
| /** Returns the final character of the string. | |||
| 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. | |||
| @@ -704,8 +704,8 @@ public: | |||
| bool ignoreCase = false) const; | |||
| /** 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. | |||
| @@ -790,12 +790,12 @@ public: | |||
| /** 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. | |||
| */ | |||
| 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 | |||
| 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. | |||
| @@ -1061,7 +1061,7 @@ public: | |||
| void swapWith (String& other) noexcept; | |||
| //============================================================================== | |||
| #if JUCE_MAC | |||
| #ifdef CARLA_OS_MAC | |||
| /** OSX ONLY - Creates a String from an OSX CFString. */ | |||
| static String fromCFString (CFStringRef cfString); | |||
| @@ -1102,7 +1102,7 @@ String operator+ (const char* string1, const String& string2); | |||
| /** Concatenates two strings. */ | |||
| String operator+ (char string1, const String& string2); | |||
| /** Concatenates two strings. */ | |||
| String operator+ (juce_wchar string1, const String& string2); | |||
| String operator+ (water_uchar string1, const String& string2); | |||
| /** Concatenates two strings. */ | |||
| String operator+ (String string1, const String& string2); | |||
| @@ -1111,13 +1111,13 @@ String operator+ (String string1, const char* string2); | |||
| /** Concatenates two strings. */ | |||
| String operator+ (String string1, char characterToAppend); | |||
| /** 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. */ | |||
| String& operator<< (String& string1, char characterToAppend); | |||
| /** 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. */ | |||
| 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; | |||
| //============================================================================== | |||
| /** 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. | |||
| */ | |||
| template <class traits> | |||
| @@ -1185,4 +1185,4 @@ OutputStream& operator<< (OutputStream& stream, StringRef stringToWrite); | |||
| #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 | |||
| : strings (static_cast<Array <String>&&> (other.strings)) | |||
| { | |||
| @@ -69,7 +69,7 @@ StringArray& StringArray::operator= (const StringArray& other) | |||
| return *this; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| StringArray& StringArray::operator= (StringArray&& other) noexcept | |||
| { | |||
| strings = static_cast<Array<String>&&> (other.strings); | |||
| @@ -125,7 +125,7 @@ void StringArray::add (const String& newString) | |||
| strings.add (newString); | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| void StringArray::add (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 "../containers/Array.h" | |||
| @@ -47,7 +47,7 @@ public: | |||
| /** Creates a copy of another string array */ | |||
| StringArray (const StringArray&); | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| StringArray (StringArray&&) noexcept; | |||
| #endif | |||
| @@ -80,7 +80,7 @@ public: | |||
| /** Copies the contents of another string array into this one */ | |||
| StringArray& operator= (const StringArray&); | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| StringArray& operator= (StringArray&&) noexcept; | |||
| #endif | |||
| @@ -159,7 +159,7 @@ public: | |||
| /** Appends a string at the end of the array. */ | |||
| 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. */ | |||
| void add (String&& stringToAdd); | |||
| #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" | |||
| @@ -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" | |||
| @@ -103,7 +103,7 @@ public: | |||
| int length() const noexcept { return (int) text.length(); } | |||
| /** 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. */ | |||
| 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> | |||
| #endif | |||
| #define JUCE_USE_VFORK 1 | |||
| namespace water { | |||
| #ifdef CARLA_OS_WIN | |||
| @@ -172,11 +170,7 @@ public: | |||
| argv.add (nullptr); | |||
| #if JUCE_USE_VFORK | |||
| const pid_t result = vfork(); | |||
| #else | |||
| const pid_t result = fork(); | |||
| #endif | |||
| if (result < 0) | |||
| { | |||
| @@ -185,23 +179,6 @@ public: | |||
| } | |||
| 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())) | |||
| _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" | |||
| @@ -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" | |||
| @@ -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 { | |||
| @@ -86,7 +87,7 @@ public: | |||
| /** Releases the lock. */ | |||
| 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; | |||
| } | |||
| @@ -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) 2017 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| @@ -34,7 +34,7 @@ static Result getResultForLastError() | |||
| return Result::fail (String (messageBuffer)); | |||
| } | |||
| static int64 juce_fileSetPosition (void* handle, int64 pos) | |||
| static int64 water_fileSetPosition (void* handle, int64 pos) | |||
| { | |||
| LARGE_INTEGER li; | |||
| li.QuadPart = pos; | |||
| @@ -60,7 +60,7 @@ static Result getResultForErrno() | |||
| 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 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) | |||
| 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) 2017 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| @@ -28,47 +28,39 @@ | |||
| #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 | |||
| #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 | |||
| #if __clang__ | |||
| #if __has_feature (cxx_rvalue_references) | |||
| #define JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS 1 | |||
| #define WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS 1 | |||
| #endif | |||
| #if __has_feature (cxx_deleted_functions) | |||
| #define JUCE_DELETED_FUNCTION = delete | |||
| #define WATER_DELETED_FUNCTION = delete | |||
| #endif | |||
| #endif | |||
| //============================================================================== | |||
| // 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 | |||
| the C++11 feature "= delete" on all compilers. | |||
| On newer compilers that support it, it does the C++11 "= delete", but on | |||
| older ones it's just an empty definition. | |||
| */ | |||
| #define JUCE_DELETED_FUNCTION | |||
| #define WATER_DELETED_FUNCTION | |||
| #endif | |||
| #define NEEDS_TRANS(x) (x) | |||
| //============================================================================== | |||
| 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) 2017 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| @@ -80,13 +80,13 @@ void XmlDocument::setEmptyTextElementsIgnored (const bool shouldBeIgnored) noexc | |||
| namespace XmlIdentifierChars | |||
| { | |||
| static bool isIdentifierCharSlow (const juce_wchar c) noexcept | |||
| static bool isIdentifierCharSlow (const water_uchar c) noexcept | |||
| { | |||
| return CharacterFunctions::isLetterOrDigit (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 }; | |||
| @@ -169,9 +169,9 @@ String XmlDocument::getFileContents (const String& filename) const | |||
| 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) | |||
| { | |||
| @@ -226,7 +226,6 @@ bool XmlDocument::parseHeader() | |||
| if (headerEnd.isEmpty()) | |||
| return false; | |||
| #if JUCE_DEBUG | |||
| const String encoding (String (input, headerEnd) | |||
| .fromFirstOccurrenceOf ("encoding", false, true) | |||
| .fromFirstOccurrenceOf ("=", false, false) | |||
| @@ -234,14 +233,13 @@ bool XmlDocument::parseHeader() | |||
| .upToFirstOccurrenceOf ("\"", false, false).trim()); | |||
| /* 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 | |||
| 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 | |||
| XML parser. | |||
| */ | |||
| jassert (encoding.isEmpty() || encoding.startsWithIgnoreCase ("utf-")); | |||
| #endif | |||
| CARLA_SAFE_ASSERT_RETURN (encoding.isEmpty() || encoding.startsWithIgnoreCase ("utf-"), false); | |||
| input = headerEnd + 2; | |||
| skipNextWhiteSpace(); | |||
| @@ -259,7 +257,7 @@ bool XmlDocument::parseDTD() | |||
| for (int n = 1; n > 0;) | |||
| { | |||
| const juce_wchar c = readNextChar(); | |||
| const water_uchar c = readNextChar(); | |||
| if (outOfData) | |||
| return false; | |||
| @@ -329,11 +327,11 @@ void XmlDocument::skipNextWhiteSpace() | |||
| void XmlDocument::readQuotedString (String& result) | |||
| { | |||
| const juce_wchar quote = readNextChar(); | |||
| const water_uchar quote = readNextChar(); | |||
| while (! outOfData) | |||
| { | |||
| const juce_wchar c = readNextChar(); | |||
| const water_uchar c = readNextChar(); | |||
| if (c == quote) | |||
| break; | |||
| @@ -350,7 +348,7 @@ void XmlDocument::readQuotedString (String& result) | |||
| for (;;) | |||
| { | |||
| const juce_wchar character = *input; | |||
| const water_uchar character = *input; | |||
| if (character == quote) | |||
| { | |||
| @@ -411,7 +409,7 @@ XmlElement* XmlDocument::readNextElement (const bool alsoParseSubElements) | |||
| { | |||
| skipNextWhiteSpace(); | |||
| const juce_wchar c = *input; | |||
| const water_uchar c = *input; | |||
| // empty tag.. | |||
| if (c == '/' && input[1] == '>') | |||
| @@ -447,7 +445,7 @@ XmlElement* XmlDocument::readNextElement (const bool alsoParseSubElements) | |||
| { | |||
| skipNextWhiteSpace(); | |||
| const juce_wchar nextChar = *input; | |||
| const water_uchar nextChar = *input; | |||
| if (nextChar == '"' || nextChar == '\'') | |||
| { | |||
| @@ -497,12 +495,12 @@ void XmlDocument::readChildElements (XmlElement& parent) | |||
| if (*input == '<') | |||
| { | |||
| const juce_wchar c1 = input[1]; | |||
| const water_uchar c1 = input[1]; | |||
| if (c1 == '/') | |||
| { | |||
| // our close tag.. | |||
| const int closeTag = input.indexOf ((juce_wchar) '>'); | |||
| const int closeTag = input.indexOf ((water_uchar) '>'); | |||
| if (closeTag >= 0) | |||
| input += closeTag + 1; | |||
| @@ -517,7 +515,7 @@ void XmlDocument::readChildElements (XmlElement& parent) | |||
| for (;;) | |||
| { | |||
| const juce_wchar c0 = *input; | |||
| const water_uchar c0 = *input; | |||
| if (c0 == 0) | |||
| { | |||
| @@ -554,7 +552,7 @@ void XmlDocument::readChildElements (XmlElement& parent) | |||
| for (;;) | |||
| { | |||
| const juce_wchar c = *input; | |||
| const water_uchar c = *input; | |||
| if (c == '<') | |||
| { | |||
| @@ -613,7 +611,7 @@ void XmlDocument::readChildElements (XmlElement& parent) | |||
| { | |||
| for (;; ++input) | |||
| { | |||
| juce_wchar nextChar = *input; | |||
| water_uchar nextChar = *input; | |||
| if (nextChar == '\r') | |||
| { | |||
| @@ -726,12 +724,12 @@ void XmlDocument::readEntity (String& result) | |||
| return; | |||
| } | |||
| result << (juce_wchar) charCode; | |||
| result << (water_uchar) charCode; | |||
| } | |||
| else | |||
| { | |||
| const String::CharPointerType entityNameStart (input); | |||
| const int closingSemiColon = input.indexOf ((juce_wchar) ';'); | |||
| const int closingSemiColon = input.indexOf ((water_uchar) ';'); | |||
| if (closingSemiColon < 0) | |||
| { | |||
| @@ -757,13 +755,13 @@ String XmlDocument::expandEntity (const String& ent) | |||
| if (ent[0] == '#') | |||
| { | |||
| const juce_wchar char1 = ent[1]; | |||
| const water_uchar char1 = ent[1]; | |||
| 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') | |||
| 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); | |||
| 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" | |||
| @@ -165,7 +165,7 @@ private: | |||
| bool parseHeader(); | |||
| bool parseDTD(); | |||
| void skipNextWhiteSpace(); | |||
| juce_wchar readNextChar() noexcept; | |||
| water_uchar readNextChar() noexcept; | |||
| XmlElement* readNextElement (bool alsoParseSubElements); | |||
| void readChildElements (XmlElement&); | |||
| void readQuotedString (String&); | |||
| @@ -181,4 +181,4 @@ private: | |||
| } | |||
| #endif // JUCE_XMLDOCUMENT_H_INCLUDED | |||
| #endif // WATER_XMLDOCUMENT_H_INCLUDED | |||
| @@ -31,7 +31,7 @@ | |||
| namespace water { | |||
| inline bool isValidXmlNameStartCharacter (const juce_wchar character) noexcept | |||
| inline bool isValidXmlNameStartCharacter (const water_uchar character) noexcept | |||
| { | |||
| return character == ':' | |||
| || character == '_' | |||
| @@ -51,7 +51,7 @@ inline bool isValidXmlNameStartCharacter (const juce_wchar character) noexcept | |||
| || (character >= 0x10000 && character <= 0xeffff); | |||
| } | |||
| inline bool isValidXmlNameBodyCharacter (const juce_wchar character) noexcept | |||
| inline bool isValidXmlNameBodyCharacter (const water_uchar character) noexcept | |||
| { | |||
| return isValidXmlNameStartCharacter (character) | |||
| || character == '-' | |||
| @@ -134,7 +134,7 @@ XmlElement& XmlElement::operator= (const XmlElement& other) | |||
| return *this; | |||
| } | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| XmlElement::XmlElement (XmlElement&& other) noexcept | |||
| : nextListItem (static_cast<LinkedListPointer<XmlElement>&&> (other.nextListItem)), | |||
| firstChildElement (static_cast<LinkedListPointer<XmlElement>&&> (other.firstChildElement)), | |||
| @@ -178,7 +178,7 @@ XmlElement::~XmlElement() noexcept | |||
| namespace XmlOutputFunctions | |||
| { | |||
| #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') | |||
| || (character >= 'A' && character <= 'Z') | |||
| @@ -189,7 +189,7 @@ namespace XmlOutputFunctions | |||
| do | |||
| { | |||
| if (((juce_wchar) (uint8) *t) == character) | |||
| if (((water_uchar) (uint8) *t) == character) | |||
| return true; | |||
| } | |||
| while (*++t != 0); | |||
| @@ -537,7 +537,7 @@ bool XmlElement::getBoolAttribute (StringRef attributeName, const bool defaultRe | |||
| { | |||
| 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' | |||
| || firstChar == 't' | |||
| @@ -854,7 +854,7 @@ bool XmlElement::isTextElement() const noexcept | |||
| return tagName.isEmpty(); | |||
| } | |||
| static const String juce_xmltextContentAttributeName ("text"); | |||
| static const String water_xmltextContentAttributeName ("text"); | |||
| 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 | |||
| // probably want to use getAllSubText instead. | |||
| return getStringAttribute (juce_xmltextContentAttributeName); | |||
| return getStringAttribute (water_xmltextContentAttributeName); | |||
| } | |||
| 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 | |||
| @@ -900,7 +898,7 @@ String XmlElement::getChildElementAllSubText (StringRef childTagName, const Stri | |||
| XmlElement* XmlElement::createTextElement (const String& text) | |||
| { | |||
| XmlElement* const e = new XmlElement ((int) 0); | |||
| e->setAttribute (juce_xmltextContentAttributeName, text); | |||
| e->setAttribute (water_xmltextContentAttributeName, text); | |||
| 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 "../memory/HeapBlock.h" | |||
| @@ -166,7 +166,7 @@ public: | |||
| /** Creates a (deep) copy of another element. */ | |||
| XmlElement& operator= (const XmlElement&); | |||
| #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS | |||
| XmlElement (XmlElement&&) noexcept; | |||
| XmlElement& operator= (XmlElement&&) noexcept; | |||
| #endif | |||
| @@ -742,7 +742,7 @@ private: | |||
| String value; | |||
| private: | |||
| XmlAttributeNode& operator= (const XmlAttributeNode&) JUCE_DELETED_FUNCTION; | |||
| XmlAttributeNode& operator= (const XmlAttributeNode&) WATER_DELETED_FUNCTION; | |||
| }; | |||
| 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) | |||
| ZYN_LD_FLAGS += -lrt | |||
| else | |||
| ZYN_LD_FLAGS += $(MODULEDIR)/juce_core.a | |||
| ZYN_LD_FLAGS += $(MODULEDIR)/water.a | |||
| endif | |||
| else # HAVE_ZYN_UI_DEPS | |||
| ZYN_CXX_FLAGS += -DNO_UI | |||
| @@ -47,7 +47,7 @@ | |||
| using water::String; | |||
| using water::StringArray; | |||
| using water::juce_wchar; | |||
| using water::water_uchar; | |||
| // ----------------------------------------------------------------------- | |||
| // 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) | |||
| { | |||
| const juce_wchar c = trimmedName[i]; | |||
| const water_uchar c = trimmedName[i]; | |||
| if (i == 0 && std::isdigit(c)) | |||
| symbol += "_"; | |||
| @@ -520,7 +520,7 @@ static void test_CarlaMathUtils() noexcept | |||
| // math functions (extended) | |||
| // carla_addFloat, carla_copyFloat & carla_zeroFloat tests skipped | |||
| // mostly unused due to juce::FloatVectorOperations | |||
| // mostly unused due to water::FloatVectorOperations | |||
| } | |||
| #endif | |||