| @@ -231,7 +231,7 @@ public: | |||
| @param objectToLookFor the object to look for | |||
| @returns the index at which the object was found, or -1 if it's not found | |||
| */ | |||
| int indexOf (const ObjectClass* const objectToLookFor) const noexcept | |||
| int indexOf (const ObjectClass* objectToLookFor) const noexcept | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| ObjectClass* const* e = data.elements.getData(); | |||
| @@ -249,7 +249,7 @@ public: | |||
| @param objectToLookFor the object to look for | |||
| @returns true if the object is in the array | |||
| */ | |||
| bool contains (const ObjectClass* const objectToLookFor) const noexcept | |||
| bool contains (const ObjectClass* objectToLookFor) const noexcept | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| ObjectClass* const* e = data.elements.getData(); | |||
| @@ -271,16 +271,17 @@ public: | |||
| Also be careful not to add the same object to the array more than once, | |||
| as this will obviously cause deletion of dangling pointers. | |||
| @param newObject the new object to add to the array | |||
| @param newObject the new object to add to the array | |||
| @returns the new object that was added | |||
| @see set, insert, addIfNotAlreadyThere, addSorted | |||
| */ | |||
| ObjectClass* add (ObjectClass* const newObject) noexcept | |||
| ObjectClass* add (ObjectClass* newObject) noexcept | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| data.ensureAllocatedSize (numUsed + 1); | |||
| jassert (data.elements != nullptr); | |||
| data.elements [numUsed++] = const_cast <ObjectClass*> (newObject); | |||
| return const_cast <ObjectClass*> (newObject); | |||
| data.elements [numUsed++] = newObject; | |||
| return newObject; | |||
| } | |||
| /** Inserts a new object into the array at the given index. | |||
| @@ -298,34 +299,31 @@ public: | |||
| @param indexToInsertAt the index at which the new element should be inserted | |||
| @param newObject the new object to add to the array | |||
| @returns the new object that was added | |||
| @see add, addSorted, addIfNotAlreadyThere, set | |||
| */ | |||
| void insert (int indexToInsertAt, | |||
| ObjectClass* const newObject) noexcept | |||
| ObjectClass* insert (int indexToInsertAt, ObjectClass* newObject) noexcept | |||
| { | |||
| if (indexToInsertAt >= 0) | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| if (indexToInsertAt < 0) | |||
| return add (newObject); | |||
| if (indexToInsertAt > numUsed) | |||
| indexToInsertAt = numUsed; | |||
| const ScopedLockType lock (getLock()); | |||
| data.ensureAllocatedSize (numUsed + 1); | |||
| jassert (data.elements != nullptr); | |||
| if (indexToInsertAt > numUsed) | |||
| indexToInsertAt = numUsed; | |||
| ObjectClass** const e = data.elements + indexToInsertAt; | |||
| const int numToMove = numUsed - indexToInsertAt; | |||
| data.ensureAllocatedSize (numUsed + 1); | |||
| jassert (data.elements != nullptr); | |||
| if (numToMove > 0) | |||
| memmove (e + 1, e, sizeof (ObjectClass*) * (size_t) numToMove); | |||
| ObjectClass** const e = data.elements + indexToInsertAt; | |||
| const int numToMove = numUsed - indexToInsertAt; | |||
| *e = const_cast <ObjectClass*> (newObject); | |||
| ++numUsed; | |||
| } | |||
| else | |||
| { | |||
| add (newObject); | |||
| } | |||
| if (numToMove > 0) | |||
| memmove (e + 1, e, sizeof (ObjectClass*) * (size_t) numToMove); | |||
| *e = newObject; | |||
| ++numUsed; | |||
| return newObject; | |||
| } | |||
| /** Inserts an array of values into this array at a given position. | |||
| @@ -374,13 +372,16 @@ public: | |||
| If the array already contains a matching object, nothing will be done. | |||
| @param newObject the new object to add to the array | |||
| @returns the new object that was added | |||
| */ | |||
| void addIfNotAlreadyThere (ObjectClass* const newObject) noexcept | |||
| ObjectClass* addIfNotAlreadyThere (ObjectClass* newObject) noexcept | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| if (! contains (newObject)) | |||
| add (newObject); | |||
| return newObject; | |||
| } | |||
| /** Replaces an object in the array with a different one. | |||
| @@ -396,9 +397,7 @@ public: | |||
| @param deleteOldElement whether to delete the object that's being replaced with the new one | |||
| @see add, insert, remove | |||
| */ | |||
| void set (const int indexToChange, | |||
| const ObjectClass* const newObject, | |||
| const bool deleteOldElement = true) | |||
| ObjectClass* set (int indexToChange, ObjectClass* newObject, bool deleteOldElement = true) | |||
| { | |||
| if (indexToChange >= 0) | |||
| { | |||
| @@ -417,12 +416,12 @@ public: | |||
| toDelete.release(); | |||
| } | |||
| data.elements [indexToChange] = const_cast <ObjectClass*> (newObject); | |||
| data.elements [indexToChange] = newObject; | |||
| } | |||
| else | |||
| { | |||
| data.ensureAllocatedSize (numUsed + 1); | |||
| data.elements [numUsed++] = const_cast <ObjectClass*> (newObject); | |||
| data.elements [numUsed++] = newObject; | |||
| } | |||
| } | |||
| } | |||
| @@ -431,6 +430,8 @@ public: | |||
| jassertfalse; // you're trying to set an object at a negative index, which doesn't have | |||
| // any effect - but since the object is not being added, it may be leaking.. | |||
| } | |||
| return newObject; | |||
| } | |||
| /** Adds elements from another array to the end of this array. | |||
| @@ -581,8 +582,7 @@ public: | |||
| @param deleteObject whether to delete the object that is removed | |||
| @see removeObject, removeRange | |||
| */ | |||
| void remove (const int indexToRemove, | |||
| const bool deleteObject = true) | |||
| void remove (int indexToRemove, bool deleteObject = true) | |||
| { | |||
| ScopedPointer<ObjectClass> toDelete; | |||
| @@ -617,7 +617,7 @@ public: | |||
| @param indexToRemove the index of the element to remove | |||
| @see remove, removeObject, removeRange | |||
| */ | |||
| ObjectClass* removeAndReturn (const int indexToRemove) | |||
| ObjectClass* removeAndReturn (int indexToRemove) | |||
| { | |||
| ObjectClass* removedItem = nullptr; | |||
| const ScopedLockType lock (getLock()); | |||
| @@ -648,8 +648,7 @@ public: | |||
| @param deleteObject whether to delete the object (if it's found) | |||
| @see remove, removeRange | |||
| */ | |||
| void removeObject (const ObjectClass* const objectToRemove, | |||
| const bool deleteObject = true) | |||
| void removeObject (const ObjectClass* objectToRemove, bool deleteObject = true) | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| ObjectClass** const e = data.elements.getData(); | |||
| @@ -677,9 +676,7 @@ public: | |||
| @param deleteObjects whether to delete the objects that get removed | |||
| @see remove, removeObject | |||
| */ | |||
| void removeRange (int startIndex, | |||
| const int numberToRemove, | |||
| const bool deleteObjects = true) | |||
| void removeRange (int startIndex, int numberToRemove, bool deleteObjects = true) | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| const int endIndex = jlimit (0, numUsed, startIndex + numberToRemove); | |||
| @@ -719,7 +716,7 @@ public: | |||
| @see remove, removeObject, removeRange | |||
| */ | |||
| void removeLast (int howManyToRemove = 1, | |||
| const bool deleteObjects = true) | |||
| bool deleteObjects = true) | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| @@ -734,8 +731,8 @@ public: | |||
| If either of the indexes passed in is out-of-range, nothing will happen, | |||
| otherwise the two objects at these positions will be exchanged. | |||
| */ | |||
| void swap (const int index1, | |||
| const int index2) noexcept | |||
| void swap (int index1, | |||
| int index2) noexcept | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| @@ -760,8 +757,7 @@ public: | |||
| @param newIndex the index at which you'd like this object to end up. If this | |||
| is less than zero, it will be moved to the end of the array | |||
| */ | |||
| void move (const int currentIndex, | |||
| int newIndex) noexcept | |||
| void move (int currentIndex, int newIndex) noexcept | |||
| { | |||
| if (currentIndex != newIndex) | |||
| { | |||
| @@ -859,7 +855,7 @@ public: | |||
| */ | |||
| template <class ElementComparator> | |||
| void sort (ElementComparator& comparator, | |||
| const bool retainOrderOfEquivalentItems = false) const noexcept | |||
| bool retainOrderOfEquivalentItems = false) const noexcept | |||
| { | |||
| (void) comparator; // if you pass in an object with a static compareElements() method, this | |||
| // avoids getting warning messages about the parameter being unused | |||