| 
				
				
				
				 | 
			
			 | 
			@@ -0,0 +1,989 @@ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/buffers/AudioSampleBuffer.h b/source/modules/water/buffers/AudioSampleBuffer.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 1716c5efd..8ae1e6388 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/buffers/AudioSampleBuffer.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/buffers/AudioSampleBuffer.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -205,39 +205,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     ~AudioSampleBuffer() noexcept {}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    /** Move constructor */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    AudioSampleBuffer (AudioSampleBuffer&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        : numChannels (other.numChannels),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-          size (other.size),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-          allocatedBytes (other.allocatedBytes),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-          channels (other.channels),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-          allocatedData (static_cast<HeapBlock<char>&&> (other.allocatedData)),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-          isClear (other.isClear)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        std::memcpy (preallocatedChannelSpace, other.preallocatedChannelSpace, sizeof (preallocatedChannelSpace));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.numChannels = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.size = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.allocatedBytes = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    /** Move assignment */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    AudioSampleBuffer& operator= (AudioSampleBuffer&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        numChannels = other.numChannels;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        size = other.size;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        allocatedBytes = other.allocatedBytes;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        channels = other.channels;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        allocatedData = static_cast<HeapBlock<char>&&> (other.allocatedData);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        isClear = other.isClear;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        memcpy (preallocatedChannelSpace, other.preallocatedChannelSpace, sizeof (preallocatedChannelSpace));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.numChannels = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.size = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.allocatedBytes = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Returns the number of channels of audio data that this buffer contains.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         @see getSampleData
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/containers/Array.h b/source/modules/water/containers/Array.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index a03857e55..e4367c9f2 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/containers/Array.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/containers/Array.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -81,15 +81,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			             new (data.elements + i) ElementType (other.data.elements[i]);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    Array (Array<ElementType>&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        : data (static_cast<ArrayAllocationBase<ElementType>&&> (other.data)),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-          numUsed (other.numUsed)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.numUsed = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Initalises from a null-terminated C array of values.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         @param values   the array to copy from
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -137,17 +128,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    Array& operator= (Array&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        deleteAllElements();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        data = static_cast<ArrayAllocationBase<ElementType>&&> (other.data);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        numUsed = other.numUsed;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.numUsed = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Compares this array to another one.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         Two arrays are considered equal if they both contain the same set of
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -380,22 +360,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         return true;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #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
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        @see set, insert, addIfNotAlreadyThere, addSorted, addUsingDefaultSort, addArray
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    bool add (ElementType&& newElement) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        if (! data.ensureAllocatedSize (static_cast<size_t>(numUsed + 1)))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            return false;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        new (data.elements + numUsed++) ElementType (static_cast<ElementType&&> (newElement));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        return true;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Inserts a new element into the array at a given position.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         If the index is less than 0 or greater than the size of the array, the
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/containers/ArrayAllocationBase.h b/source/modules/water/containers/ArrayAllocationBase.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index f3049d8e5..878ad81fc 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/containers/ArrayAllocationBase.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/containers/ArrayAllocationBase.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -44,29 +44,6 @@ namespace water { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 template <class ElementType>
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 class ArrayAllocationBase
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-private:
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 5
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    template <typename T>
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    struct IsTriviallyCopyable : std::integral_constant<bool, false> {};
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #else
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    template <typename T>
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    using IsTriviallyCopyable = std::is_trivially_copyable<T>;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    template <typename T>
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    using TriviallyCopyableVoid = typename std::enable_if<IsTriviallyCopyable<T>::value, void>::type;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    template <typename T>
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    using TriviallyCopyableBool = typename std::enable_if<IsTriviallyCopyable<T>::value, bool>::type;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    template <typename T>
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    using NonTriviallyCopyableVoid = typename std::enable_if<! IsTriviallyCopyable<T>::value, void>::type;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    template <typename T>
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    using NonTriviallyCopyableBool = typename std::enable_if<! IsTriviallyCopyable<T>::value, bool>::type;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif // WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 public:
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Creates an empty array. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -81,19 +58,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    ArrayAllocationBase (ArrayAllocationBase<ElementType>&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        : elements (static_cast<HeapBlock<ElementType>&&> (other.elements)),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-          numAllocated (other.numAllocated) {}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    ArrayAllocationBase& operator= (ArrayAllocationBase<ElementType>&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        elements = static_cast<HeapBlock<ElementType>&&> (other.elements);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        numAllocated = other.numAllocated;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Changes the amount of storage allocated.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -102,12 +66,7 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         @param numNewElements  the number of elements that are needed
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    template <typename T = ElementType> TriviallyCopyableBool<T>
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #else
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    bool
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    setAllocatedSize (const size_t numNewElements) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+    bool setAllocatedSize (const size_t numNewElements) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         if (numAllocated != numNewElements)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -127,43 +86,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         return true;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    template <typename T = ElementType>
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    NonTriviallyCopyableBool<T> setAllocatedSize (const size_t numNewElements) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        if (numAllocated == numNewElements)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            return true;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        if (numNewElements > 0)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            HeapBlock<ElementType> newElements;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            if (! newElements.malloc (numNewElements))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-                return false;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            size_t i = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            for (; i < numAllocated && i < numNewElements; ++i)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-                new (newElements + i) ElementType (std::move (elements[i]));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-                elements[i].~ElementType();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            for (; i < numNewElements; ++i)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-                new (newElements + i) ElementType ();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            elements = std::move (newElements);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        else
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            elements.free();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        numAllocated = numNewElements;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        return true;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Increases the amount of storage allocated if it is less than a given amount.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         This will retain any data currently held in the array, but will add
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -198,12 +120,7 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         std::swap (numAllocated, other.numAllocated);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    template <typename T = ElementType> TriviallyCopyableVoid<T>
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #else
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    void
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    moveMemory (ElementType* target, const ElementType* source, const size_t numElements) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+    void moveMemory (ElementType* target, const ElementType* source, const size_t numElements) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         CARLA_SAFE_ASSERT_RETURN(target != nullptr,);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         CARLA_SAFE_ASSERT_RETURN(source != nullptr,);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -213,42 +130,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         std::memmove (target, source, ((size_t) numElements) * sizeof (ElementType));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    template <typename T = ElementType>
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    NonTriviallyCopyableVoid<T> moveMemory (ElementType* target, const ElementType* source, const size_t numElements) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        CARLA_SAFE_ASSERT_RETURN(target != nullptr,);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        CARLA_SAFE_ASSERT_RETURN(source != nullptr,);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        CARLA_SAFE_ASSERT_RETURN(target != source,);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        CARLA_SAFE_ASSERT_RETURN(numElements != 0,);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        if (target > source)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            for (size_t i = 0; i < numElements; ++i)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-                moveElement (target, std::move (*source));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-                ++target;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-                ++source;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        else
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            for (size_t i = 0; i < numElements; ++i)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-                moveElement (target, std::move (*source));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-                --target;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-                --source;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    void moveElement (ElementType* destination, const ElementType&& source)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        destination->~ElementType();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        new (destination) ElementType (std::move (source));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     HeapBlock<ElementType> elements;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     size_t numAllocated;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/containers/LinkedListPointer.h b/source/modules/water/containers/LinkedListPointer.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index c71d52d23..ed75fc268 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/containers/LinkedListPointer.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/containers/LinkedListPointer.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -81,23 +81,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    LinkedListPointer (LinkedListPointer&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        : item (other.item)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.item = nullptr;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    LinkedListPointer& operator= (LinkedListPointer&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        wassert (this != &other); // hopefully the compiler should make this situation impossible!
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        item = other.item;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.item = nullptr;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Returns the item which this pointer points to. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     inline operator ObjectType*() const noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/containers/NamedValueSet.cpp b/source/modules/water/containers/NamedValueSet.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 9302e1691..7543af158 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/containers/NamedValueSet.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/containers/NamedValueSet.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -44,19 +44,6 @@ NamedValueSet& NamedValueSet::operator= (const NamedValueSet& other) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-NamedValueSet::NamedValueSet (NamedValueSet&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    : values (static_cast<Array<NamedValue>&&> (other.values))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-NamedValueSet& NamedValueSet::operator= (NamedValueSet&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    other.values.swapWith (values);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 NamedValueSet::~NamedValueSet() noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -117,23 +104,6 @@ var* NamedValueSet::getVarPointer (const Identifier& name) const noexcept | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return nullptr;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-bool NamedValueSet::set (const Identifier& name, var&& newValue)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    if (var* const v = getVarPointer (name))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        if (v->equalsWithSameType (newValue))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            return false;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        *v = static_cast<var&&> (newValue);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        return true;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    values.add (NamedValue (name, static_cast<var&&> (newValue)));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return true;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 bool NamedValueSet::set (const Identifier& name, const var& newValue)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     if (var* const v = getVarPointer (name))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/containers/NamedValueSet.h b/source/modules/water/containers/NamedValueSet.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 7d0caa02e..ea4ef421d 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/containers/NamedValueSet.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/containers/NamedValueSet.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -50,11 +50,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Replaces this set with a copy of another set. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     NamedValueSet& operator= (const NamedValueSet&);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    NamedValueSet (NamedValueSet&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    NamedValueSet& operator= (NamedValueSet&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Destructor. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     ~NamedValueSet() noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -68,27 +63,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         NamedValue (const Identifier& n, const var& v) : name (n), value (v) {}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         NamedValue (const NamedValue& other) : name (other.name), value (other.value) {}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        NamedValue (NamedValue&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        : name (static_cast<Identifier&&> (other.name)),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-          value (static_cast<var&&> (other.value))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        NamedValue (Identifier&& n, var&& v) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        : name (static_cast<Identifier&&> (n)),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-          value (static_cast<var&&> (v))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        NamedValue& operator= (NamedValue&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            name = static_cast<Identifier&&> (other.name);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            value = static_cast<var&&> (other.value);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-            return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-     #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         bool operator== (const NamedValue& other) const noexcept   { return name == other.name && value == other.value; }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         bool operator!= (const NamedValue& other) const noexcept   { return ! operator== (other); }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -124,14 +98,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     bool set (const Identifier& name, const var& newValue);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #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.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    bool set (const Identifier& name, var&& newValue);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Returns true if the set contains an item with the specified name. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     bool contains (const Identifier& name) const noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/containers/OwnedArray.h b/source/modules/water/containers/OwnedArray.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 1a90100cd..ffa89203f 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/containers/OwnedArray.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/containers/OwnedArray.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -73,25 +73,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         deleteAllObjects();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    OwnedArray (OwnedArray&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        : data (static_cast<ArrayAllocationBase <ObjectClass*>&&> (other.data)),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-          numUsed (other.numUsed)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.numUsed = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    OwnedArray& operator= (OwnedArray&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        deleteAllObjects();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        data = static_cast<ArrayAllocationBase <ObjectClass*>&&> (other.data);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        numUsed = other.numUsed;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.numUsed = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Clears the array, optionally deleting the objects inside it first. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     void clear (bool deleteObjects = true)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/containers/Variant.cpp b/source/modules/water/containers/Variant.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index a93dba9fb..0472b10e3 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/containers/Variant.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/containers/Variant.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -265,34 +265,6 @@ 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 WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-var::var (var&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    : type (other.type),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-      value (other.value)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    other.type = &VariantType_Void::instance;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-var& var::operator= (var&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    swapWith (other);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-var::var (String&& v)  : type (&VariantType_String::instance)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    new (value.stringValue) String (static_cast<String&&> (v));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-var& var::operator= (String&& v)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    type->cleanUp (value);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    type = &VariantType_String::instance;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    new (value.stringValue) String (static_cast<String&&> (v));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 bool var::equals (const var& other) const noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/containers/Variant.h b/source/modules/water/containers/Variant.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 0e181712a..c1472a733 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/containers/Variant.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/containers/Variant.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -69,13 +69,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     var& operator= (const char* value);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     var& operator= (const String& value);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    var (var&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    var (String&&);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    var& operator= (var&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    var& operator= (String&&);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     void swapWith (var& other) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Returns a var object that can be used where you need the javascript "undefined" value. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/files/File.cpp b/source/modules/water/files/File.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 2ce0f6f8e..8c74854f0 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/files/File.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/files/File.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -86,19 +86,6 @@ File& File::operator= (const File& other) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-File::File (File&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    : fullPath (static_cast<String&&> (other.fullPath))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-File& File::operator= (File&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    fullPath = static_cast<String&&> (other.fullPath);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 bool File::isNull() const
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return fullPath.isEmpty();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/files/File.h b/source/modules/water/files/File.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 1fa1a7c3e..2c8077963 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/files/File.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/files/File.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -89,11 +89,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Copies from another file object. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     File& operator= (const File& otherFile);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    File (File&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    File& operator= (File&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Checks whether the file actually exists.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/memory/HeapBlock.h b/source/modules/water/memory/HeapBlock.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index b8c232e11..98656e872 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/memory/HeapBlock.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/memory/HeapBlock.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -94,20 +94,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         std::free (data);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    HeapBlock (HeapBlock&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        : data (other.data)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.data = nullptr;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    HeapBlock& operator= (HeapBlock&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        std::swap (data, other.data);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Returns a raw pointer to the allocated data.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         This may be a null pointer if the data hasn't yet been allocated, or if it has been
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/memory/MemoryBlock.cpp b/source/modules/water/memory/MemoryBlock.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 6e83b8dfc..8b380da88 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/memory/MemoryBlock.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/memory/MemoryBlock.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -87,22 +87,6 @@ MemoryBlock& MemoryBlock::operator= (const MemoryBlock& other) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-MemoryBlock::MemoryBlock (MemoryBlock&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    : data (static_cast<HeapBlock<char>&&> (other.data)),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-      size (other.size)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-MemoryBlock& MemoryBlock::operator= (MemoryBlock&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    data = static_cast<HeapBlock<char>&&> (other.data);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    size = other.size;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 bool MemoryBlock::operator== (const MemoryBlock& other) const noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/memory/MemoryBlock.h b/source/modules/water/memory/MemoryBlock.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 4383139d6..701120cfa 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/memory/MemoryBlock.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/memory/MemoryBlock.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -68,11 +68,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     MemoryBlock& operator= (const MemoryBlock&);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    MemoryBlock (MemoryBlock&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    MemoryBlock& operator= (MemoryBlock&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Compares two memory blocks.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         @returns true only if the two blocks are the same size and have identical contents.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/memory/ReferenceCountedObject.h b/source/modules/water/memory/ReferenceCountedObject.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 4f5a256ee..b23ed914d 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/memory/ReferenceCountedObject.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/memory/ReferenceCountedObject.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -301,22 +301,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    /** Takes-over the object from another pointer. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    ReferenceCountedObjectPtr (ReferenceCountedObjectPtr&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        : referencedObject (other.referencedObject)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        other.referencedObject = nullptr;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    /** Takes-over the object from another pointer. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    ReferenceCountedObjectPtr& operator= (ReferenceCountedObjectPtr&& other)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        std::swap (referencedObject, other.referencedObject);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Destructor.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         This will decrement the object's reference-count, which will cause the
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         object to be deleted when the ref-count hits zero.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/midi/MidiMessage.cpp b/source/modules/water/midi/MidiMessage.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 21c90f508..a4354222e 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/midi/MidiMessage.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/midi/MidiMessage.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -286,24 +286,6 @@ MidiMessage& MidiMessage::operator= (const MidiMessage& other) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-MidiMessage::MidiMessage (MidiMessage&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   : timeStamp (other.timeStamp), size (other.size)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    packedData.allocatedData = other.packedData.allocatedData;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    other.size = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-MidiMessage& MidiMessage::operator= (MidiMessage&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    packedData.allocatedData = other.packedData.allocatedData;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    timeStamp = other.timeStamp;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    size = other.size;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    other.size = 0;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 MidiMessage::~MidiMessage() noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     if (isHeapAllocated())
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/midi/MidiMessage.h b/source/modules/water/midi/MidiMessage.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 07f15c467..6b78d55f8 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/midi/MidiMessage.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/midi/MidiMessage.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -113,11 +113,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Copies this message from another one. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     MidiMessage& operator= (const MidiMessage& other);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    MidiMessage (MidiMessage&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    MidiMessage& operator= (MidiMessage&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Returns a pointer to the raw midi data.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         @see getRawDataSize
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/midi/MidiMessageSequence.h b/source/modules/water/midi/MidiMessageSequence.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index f85f5fd05..bfe27d061 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/midi/MidiMessageSequence.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/midi/MidiMessageSequence.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -55,18 +55,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Replaces this sequence with another one. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     MidiMessageSequence& operator= (const MidiMessageSequence&);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    MidiMessageSequence (MidiMessageSequence&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        : list (static_cast<OwnedArray<MidiEventHolder>&&> (other.list))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    MidiMessageSequence& operator= (MidiMessageSequence&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        list = static_cast<OwnedArray<MidiEventHolder>&&> (other.list);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-        return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Destructor. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     ~MidiMessageSequence();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/misc/Result.cpp b/source/modules/water/misc/Result.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index b8706e771..49f1f85e1 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/misc/Result.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/misc/Result.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -45,19 +45,6 @@ Result& Result::operator= (const Result& other) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-Result::Result (Result&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    : errorMessage (static_cast<String&&> (other.errorMessage))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-Result& Result::operator= (Result&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    errorMessage = static_cast<String&&> (other.errorMessage);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 bool Result::operator== (const Result& other) const noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return errorMessage == other.errorMessage;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/misc/Result.h b/source/modules/water/misc/Result.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index ab4cf9bf1..495a19fc9 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/misc/Result.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/misc/Result.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -100,11 +100,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     Result (const Result&);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     Result& operator= (const Result&);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    Result (Result&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    Result& operator= (Result&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     bool operator== (const Result& other) const noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     bool operator!= (const Result& other) const noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/text/Identifier.cpp b/source/modules/water/text/Identifier.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index e542d6eeb..3f1850369 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/text/Identifier.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/text/Identifier.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -32,16 +32,6 @@ Identifier::~Identifier() noexcept {} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 Identifier::Identifier (const Identifier& other) noexcept  : name (other.name) {}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-Identifier::Identifier (Identifier&& other) noexcept : name (static_cast<String&&> (other.name)) {}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-Identifier& Identifier::operator= (Identifier&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    name = static_cast<String&&> (other.name);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 Identifier& Identifier::operator= (const Identifier& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     name = other.name;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/text/Identifier.h b/source/modules/water/text/Identifier.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index a044b3a3a..ab768cd10 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/text/Identifier.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/text/Identifier.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -70,14 +70,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Creates a copy of another identifier. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     Identifier& operator= (const Identifier& other) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    /** Creates a copy of another identifier. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    Identifier (Identifier&& other) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    /** Creates a copy of another identifier. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    Identifier& operator= (Identifier&& other) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Destructor */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     ~Identifier() noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/text/String.cpp b/source/modules/water/text/String.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 51b20bc25..1dd593468 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/text/String.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/text/String.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -247,19 +247,6 @@ String& String::operator= (const String& other) noexcept | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-String::String (String&& other) noexcept   : text (other.text)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    other.text = &(emptyString.text);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-String& String::operator= (String&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    std::swap (text, other.text);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 inline String::PreallocationBytes::PreallocationBytes (const size_t num) noexcept : numBytes (num) {}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 String::String (const PreallocationBytes& preallocationSize)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/text/String.h b/source/modules/water/text/String.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 0a0ba99f1..ffa8ecf3b 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/text/String.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/text/String.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -56,10 +56,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Creates a copy of another string. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     String (const String& other) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    String (String&& other) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Creates a string from a zero-terminated ascii text string.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         The string passed-in must not contain any characters with a value above 127, because
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -139,10 +135,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Replaces this string's contents with another string. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     String& operator= (const String& other) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    String& operator= (String&& other) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Appends another string at the end of this one. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     String& operator+= (const String& stringToAppend);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Appends another string at the end of this one. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/text/StringArray.cpp b/source/modules/water/text/StringArray.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index c0fddb5db..36856f4a7 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/text/StringArray.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/text/StringArray.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -36,13 +36,6 @@ StringArray::StringArray (const StringArray& other) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-StringArray::StringArray (StringArray&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    : strings (static_cast<Array <String>&&> (other.strings))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 StringArray::StringArray (const String& firstValue)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     strings.add (firstValue);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -69,14 +62,6 @@ StringArray& StringArray::operator= (const StringArray& other) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-StringArray& StringArray::operator= (StringArray&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    strings = static_cast<Array<String>&&> (other.strings);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 StringArray::~StringArray()
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -125,13 +110,6 @@ bool StringArray::add (const String& newString) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return strings.add (newString);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-bool StringArray::add (String&& stringToAdd)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return strings.add (static_cast<String&&> (stringToAdd));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 bool StringArray::insert (const int index, const String& newString)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return strings.insert (index, newString);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/text/StringArray.h b/source/modules/water/text/StringArray.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 57ed5d300..d7244a066 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/text/StringArray.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/text/StringArray.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -47,10 +47,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Creates a copy of another string array */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     StringArray (const StringArray&);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    StringArray (StringArray&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Creates an array containing a single string. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     explicit StringArray (const String& firstValue);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -80,10 +76,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Copies the contents of another string array into this one */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     StringArray& operator= (const StringArray&);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    StringArray& operator= (StringArray&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Swaps the contents of this and another StringArray. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     void swapWith (StringArray&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -159,11 +151,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Appends a string at the end of the array. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     bool add (const String& stringToAdd);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    /** Appends a string at the end of the array. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    bool add (String&& stringToAdd);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Inserts a string into the array.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         This will insert a string into the array at the given index, moving
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/water.h b/source/modules/water/water.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 33b908c27..d8305a0ee 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/water.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/water.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -32,18 +32,12 @@ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 // Compiler support
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 #if (__cplusplus >= 201103L || defined (__GXX_EXPERIMENTAL_CXX0X__)) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 405
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			- #define WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS 1
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && ! defined (WATER_DELETED_FUNCTION)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   #define WATER_DELETED_FUNCTION = delete
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 #ifdef __clang__
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			- #if __has_feature (cxx_implicit_moves) && __clang_major__ >= 9
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-  #define WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS 1
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			- #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  #if __has_feature (cxx_deleted_functions)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   #define WATER_DELETED_FUNCTION = delete
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/xml/XmlElement.cpp b/source/modules/water/xml/XmlElement.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index 2de0fa34e..92bfecc7e 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/xml/XmlElement.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/xml/XmlElement.cpp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -133,31 +133,6 @@ XmlElement& XmlElement::operator= (const XmlElement& other) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#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)),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-      attributes        (static_cast<LinkedListPointer<XmlAttributeNode>&&> (other.attributes)),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-      tagName           (static_cast<String&&> (other.tagName))
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-XmlElement& XmlElement::operator= (XmlElement&& other) noexcept
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    wassert (this != &other); // hopefully the compiler should make this situation impossible!
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    removeAllAttributes();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    deleteAllChildElements();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    nextListItem      = static_cast<LinkedListPointer<XmlElement>&&> (other.nextListItem);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    firstChildElement = static_cast<LinkedListPointer<XmlElement>&&> (other.firstChildElement);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    attributes        = static_cast<LinkedListPointer<XmlAttributeNode>&&> (other.attributes);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    tagName           = static_cast<String&&> (other.tagName);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    return *this;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 void XmlElement::copyChildrenAndAttributesFrom (const XmlElement& other)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     wassert (firstChildElement.get() == nullptr);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			diff --git a/source/modules/water/xml/XmlElement.h b/source/modules/water/xml/XmlElement.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			index d27b7d98d..273d28e4c 100644 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			--- a/source/modules/water/xml/XmlElement.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			+++ b/source/modules/water/xml/XmlElement.h | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			@@ -166,11 +166,6 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Creates a (deep) copy of another element. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     XmlElement& operator= (const XmlElement&);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #if WATER_COMPILER_SUPPORTS_MOVE_SEMANTICS
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    XmlElement (XmlElement&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-    XmlElement& operator= (XmlElement&&) noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-   #endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			-
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     /** Deleting an XmlElement will also delete all of its child elements. */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     ~XmlElement() noexcept;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 |