| @@ -2679,9 +2679,9 @@ BigInteger::~BigInteger() | |||||
| void BigInteger::swapWith (BigInteger& other) throw() | void BigInteger::swapWith (BigInteger& other) throw() | ||||
| { | { | ||||
| values.swapWith (other.values); | values.swapWith (other.values); | ||||
| swapVariables (numValues, other.numValues); | |||||
| swapVariables (highestBit, other.highestBit); | |||||
| swapVariables (negative, other.negative); | |||||
| std::swap (numValues, other.numValues); | |||||
| std::swap (highestBit, other.highestBit); | |||||
| std::swap (negative, other.negative); | |||||
| } | } | ||||
| BigInteger& BigInteger::operator= (const BigInteger& other) | BigInteger& BigInteger::operator= (const BigInteger& other) | ||||
| @@ -3366,7 +3366,7 @@ const BigInteger BigInteger::simpleGCD (BigInteger* m, BigInteger* n) | |||||
| while (! m->isZero()) | while (! m->isZero()) | ||||
| { | { | ||||
| if (n->compareAbsolute (*m) > 0) | if (n->compareAbsolute (*m) > 0) | ||||
| swapVariables (m, n); | |||||
| std::swap (m, n); | |||||
| *m -= *n; | *m -= *n; | ||||
| } | } | ||||
| @@ -3711,7 +3711,7 @@ void MemoryBlock::ensureSize (const size_t minimumSize, const bool initialiseToZ | |||||
| void MemoryBlock::swapWith (MemoryBlock& other) throw() | void MemoryBlock::swapWith (MemoryBlock& other) throw() | ||||
| { | { | ||||
| swapVariables (size, other.size); | |||||
| std::swap (size, other.size); | |||||
| data.swapWith (other.data); | data.swapWith (other.data); | ||||
| } | } | ||||
| @@ -4518,8 +4518,8 @@ DynamicObject* var::getObject() const { return type->toObject (value); } | |||||
| void var::swapWith (var& other) throw() | void var::swapWith (var& other) throw() | ||||
| { | { | ||||
| swapVariables (type, other.type); | |||||
| swapVariables (value, other.value); | |||||
| std::swap (type, other.type); | |||||
| std::swap (value, other.value); | |||||
| } | } | ||||
| var& var::operator= (const var& newValue) { type->cleanUp (value); type = newValue.type; type->createCopy (value, newValue.value); return *this; } | var& var::operator= (const var& newValue) { type->cleanUp (value); type = newValue.type; type->createCopy (value, newValue.value); return *this; } | ||||
| @@ -6250,7 +6250,7 @@ void BlowFish::encrypt (uint32& data1, uint32& data2) const throw() | |||||
| { | { | ||||
| l ^= p[i]; | l ^= p[i]; | ||||
| r ^= F(l); | r ^= F(l); | ||||
| swapVariables (l, r); | |||||
| std::swap (l, r); | |||||
| } | } | ||||
| data1 = r ^ p[17]; | data1 = r ^ p[17]; | ||||
| @@ -6266,7 +6266,7 @@ void BlowFish::decrypt (uint32& data1, uint32& data2) const throw() | |||||
| { | { | ||||
| l ^= p[i]; | l ^= p[i]; | ||||
| r ^= F(l); | r ^= F(l); | ||||
| swapVariables (l, r); | |||||
| std::swap (l, r); | |||||
| } | } | ||||
| data1 = r ^ p[0]; | data1 = r ^ p[0]; | ||||
| @@ -11707,7 +11707,7 @@ String::String (const String& other) throw() | |||||
| void String::swapWith (String& other) throw() | void String::swapWith (String& other) throw() | ||||
| { | { | ||||
| swapVariables (text, other.text); | |||||
| std::swap (text, other.text); | |||||
| } | } | ||||
| String& String::operator= (const String& other) throw() | String& String::operator= (const String& other) throw() | ||||
| @@ -27673,7 +27673,7 @@ MidiBuffer& MidiBuffer::operator= (const MidiBuffer& other) throw() | |||||
| void MidiBuffer::swapWith (MidiBuffer& other) throw() | void MidiBuffer::swapWith (MidiBuffer& other) throw() | ||||
| { | { | ||||
| data.swapWith (other.data); | data.swapWith (other.data); | ||||
| swapVariables <int> (bytesUsed, other.bytesUsed); | |||||
| std::swap (bytesUsed, other.bytesUsed); | |||||
| } | } | ||||
| MidiBuffer::~MidiBuffer() | MidiBuffer::~MidiBuffer() | ||||
| @@ -49930,7 +49930,7 @@ void Slider::setMinAndMaxValues (double newMinValue, double newMaxValue, bool se | |||||
| || style == ThreeValueHorizontal || style == ThreeValueVertical); | || style == ThreeValueHorizontal || style == ThreeValueVertical); | ||||
| if (newMaxValue < newMinValue) | if (newMaxValue < newMinValue) | ||||
| swapVariables (newMaxValue, newMinValue); | |||||
| std::swap (newMaxValue, newMinValue); | |||||
| newMinValue = constrainedValue (newMinValue); | newMinValue = constrainedValue (newMinValue); | ||||
| newMaxValue = constrainedValue (newMaxValue); | newMaxValue = constrainedValue (newMaxValue); | ||||
| @@ -56132,13 +56132,13 @@ private: | |||||
| int rowStart = firstSelected->getRowNumberInTree(); | int rowStart = firstSelected->getRowNumberInTree(); | ||||
| int rowEnd = lastSelected->getRowNumberInTree(); | int rowEnd = lastSelected->getRowNumberInTree(); | ||||
| if (rowStart > rowEnd) | if (rowStart > rowEnd) | ||||
| swapVariables (rowStart, rowEnd); | |||||
| std::swap (rowStart, rowEnd); | |||||
| int ourRow = item->getRowNumberInTree(); | int ourRow = item->getRowNumberInTree(); | ||||
| int otherEnd = ourRow < rowEnd ? rowStart : rowEnd; | int otherEnd = ourRow < rowEnd ? rowStart : rowEnd; | ||||
| if (ourRow > otherEnd) | if (ourRow > otherEnd) | ||||
| swapVariables (ourRow, otherEnd); | |||||
| std::swap (ourRow, otherEnd); | |||||
| for (int i = ourRow; i <= otherEnd; ++i) | for (int i = ourRow; i <= otherEnd; ++i) | ||||
| owner.getItemOnRow (i)->setSelected (true, false); | owner.getItemOnRow (i)->setSelected (true, false); | ||||
| @@ -64347,7 +64347,7 @@ void TabbedButtonBar::resized() | |||||
| int length = getHeight(); | int length = getHeight(); | ||||
| if (orientation == TabsAtTop || orientation == TabsAtBottom) | if (orientation == TabsAtTop || orientation == TabsAtBottom) | ||||
| swapVariables (depth, length); | |||||
| std::swap (depth, length); | |||||
| const int overlap = getLookAndFeel().getTabButtonOverlap (depth) | const int overlap = getLookAndFeel().getTabButtonOverlap (depth) | ||||
| + getLookAndFeel().getTabButtonSpaceAroundImage() * 2; | + getLookAndFeel().getTabButtonSpaceAroundImage() * 2; | ||||
| @@ -67131,7 +67131,7 @@ void LookAndFeel::positionDocumentWindowButtons (DocumentWindow&, | |||||
| } | } | ||||
| if (positionTitleBarButtonsOnLeft) | if (positionTitleBarButtonsOnLeft) | ||||
| swapVariables (minimiseButton, maximiseButton); | |||||
| std::swap (minimiseButton, maximiseButton); | |||||
| if (maximiseButton != 0) | if (maximiseButton != 0) | ||||
| { | { | ||||
| @@ -67267,7 +67267,7 @@ void LookAndFeel::createTabButtonShape (Path& p, | |||||
| if (orientation == TabbedButtonBar::TabsAtLeft | if (orientation == TabbedButtonBar::TabsAtLeft | ||||
| || orientation == TabbedButtonBar::TabsAtRight) | || orientation == TabbedButtonBar::TabsAtRight) | ||||
| { | { | ||||
| swapVariables (length, depth); | |||||
| std::swap (length, depth); | |||||
| } | } | ||||
| const float indent = (float) getTabButtonOverlap ((int) depth); | const float indent = (float) getTabButtonOverlap ((int) depth); | ||||
| @@ -67355,7 +67355,7 @@ void LookAndFeel::drawTabButtonText (Graphics& g, | |||||
| if (orientation == TabbedButtonBar::TabsAtLeft | if (orientation == TabbedButtonBar::TabsAtLeft | ||||
| || orientation == TabbedButtonBar::TabsAtRight) | || orientation == TabbedButtonBar::TabsAtRight) | ||||
| { | { | ||||
| swapVariables (length, depth); | |||||
| std::swap (length, depth); | |||||
| } | } | ||||
| Font font (depth * 0.6f); | Font font (depth * 0.6f); | ||||
| @@ -67426,7 +67426,7 @@ void LookAndFeel::drawTabButton (Graphics& g, | |||||
| if (orientation == TabbedButtonBar::TabsAtLeft | if (orientation == TabbedButtonBar::TabsAtLeft | ||||
| || orientation == TabbedButtonBar::TabsAtRight) | || orientation == TabbedButtonBar::TabsAtRight) | ||||
| { | { | ||||
| swapVariables (length, depth); | |||||
| std::swap (length, depth); | |||||
| } | } | ||||
| Path tabShape; | Path tabShape; | ||||
| @@ -68761,7 +68761,7 @@ void OldSchoolLookAndFeel::positionDocumentWindowButtons (DocumentWindow&, | |||||
| } | } | ||||
| if (positionTitleBarButtonsOnLeft) | if (positionTitleBarButtonsOnLeft) | ||||
| swapVariables (minimiseButton, maximiseButton); | |||||
| std::swap (minimiseButton, maximiseButton); | |||||
| if (maximiseButton != 0) | if (maximiseButton != 0) | ||||
| { | { | ||||
| @@ -75677,7 +75677,7 @@ void MidiKeyboardComponent::resized() | |||||
| if (w > 0 && h > 0) | if (w > 0 && h > 0) | ||||
| { | { | ||||
| if (orientation != horizontalKeyboard) | if (orientation != horizontalKeyboard) | ||||
| swapVariables (w, h); | |||||
| std::swap (w, h); | |||||
| blackNoteLength = roundToInt (h * 0.7f); | blackNoteLength = roundToInt (h * 0.7f); | ||||
| @@ -80370,8 +80370,8 @@ bool RelativePointPath::operator!= (const RelativePointPath& other) const throw( | |||||
| void RelativePointPath::swapWith (RelativePointPath& other) throw() | void RelativePointPath::swapWith (RelativePointPath& other) throw() | ||||
| { | { | ||||
| elements.swapWithArray (other.elements); | elements.swapWithArray (other.elements); | ||||
| swapVariables (usesNonZeroWinding, other.usesNonZeroWinding); | |||||
| swapVariables (containsDynamicPoints, other.containsDynamicPoints); | |||||
| std::swap (usesNonZeroWinding, other.usesNonZeroWinding); | |||||
| std::swap (containsDynamicPoints, other.containsDynamicPoints); | |||||
| } | } | ||||
| void RelativePointPath::createPath (Path& path, Expression::Scope* scope) const | void RelativePointPath::createPath (Path& path, Expression::Scope* scope) const | ||||
| @@ -81994,7 +81994,7 @@ EdgeTable::EdgeTable (const Rectangle<int>& bounds_, | |||||
| if (y1 > y2) | if (y1 > y2) | ||||
| { | { | ||||
| swapVariables (y1, y2); | |||||
| std::swap (y1, y2); | |||||
| direction = 1; | direction = 1; | ||||
| } | } | ||||
| @@ -253218,7 +253218,7 @@ MidiOutput* MidiOutput::openDevice (int index) | |||||
| { | { | ||||
| MidiOutHandle* const han = MidiOutHandle::activeHandles.getUnchecked(i); | MidiOutHandle* const han = MidiOutHandle::activeHandles.getUnchecked(i); | ||||
| if (han != 0 && han->deviceId == deviceId) | |||||
| if (han->deviceId == deviceId) | |||||
| { | { | ||||
| han->refCount++; | han->refCount++; | ||||
| @@ -73,7 +73,7 @@ namespace JuceDummyNamespace {} | |||||
| */ | */ | ||||
| #define JUCE_MAJOR_VERSION 1 | #define JUCE_MAJOR_VERSION 1 | ||||
| #define JUCE_MINOR_VERSION 53 | #define JUCE_MINOR_VERSION 53 | ||||
| #define JUCE_BUILDNUMBER 65 | |||||
| #define JUCE_BUILDNUMBER 66 | |||||
| /** Current Juce version number. | /** Current Juce version number. | ||||
| @@ -784,6 +784,7 @@ namespace JuceDummyNamespace {} | |||||
| #include <cstring> | #include <cstring> | ||||
| #include <cstdio> | #include <cstdio> | ||||
| #include <iostream> | #include <iostream> | ||||
| #include <vector> | |||||
| #if JUCE_USE_INTRINSICS | #if JUCE_USE_INTRINSICS | ||||
| #include <intrin.h> | #include <intrin.h> | ||||
| @@ -1235,14 +1236,11 @@ inline bool isPositiveAndNotGreaterThan (const int valueToTest, const int upperL | |||||
| } | } | ||||
| #endif | #endif | ||||
| /** Handy function to swap two values over. | |||||
| */ | |||||
| /** Handy function to swap two values. */ | |||||
| template <typename Type> | template <typename Type> | ||||
| inline void swapVariables (Type& variable1, Type& variable2) | inline void swapVariables (Type& variable1, Type& variable2) | ||||
| { | { | ||||
| const Type tempVal = variable1; | |||||
| variable1 = variable2; | |||||
| variable2 = tempVal; | |||||
| std::swap (variable1, variable2); | |||||
| } | } | ||||
| #if JUCE_VC6 | #if JUCE_VC6 | ||||
| @@ -6091,7 +6089,7 @@ public: | |||||
| */ | */ | ||||
| void swapWith (HeapBlock <ElementType>& other) throw() | void swapWith (HeapBlock <ElementType>& other) throw() | ||||
| { | { | ||||
| swapVariables (data, other.data); | |||||
| std::swap (data, other.data); | |||||
| } | } | ||||
| /** This fills the block with zeros, up to the number of elements specified. | /** This fills the block with zeros, up to the number of elements specified. | ||||
| @@ -6187,7 +6185,7 @@ public: | |||||
| void swapWith (ArrayAllocationBase <ElementType, TypeOfCriticalSectionToUse>& other) throw() | void swapWith (ArrayAllocationBase <ElementType, TypeOfCriticalSectionToUse>& other) throw() | ||||
| { | { | ||||
| elements.swapWith (other.elements); | elements.swapWith (other.elements); | ||||
| swapVariables (numAllocated, other.numAllocated); | |||||
| std::swap (numAllocated, other.numAllocated); | |||||
| } | } | ||||
| HeapBlock <ElementType> elements; | HeapBlock <ElementType> elements; | ||||
| @@ -6250,7 +6248,7 @@ static void sortArray (ElementComparator& comparator, | |||||
| { | { | ||||
| if (comparator.compareElements (array[i], array [i + 1]) > 0) | if (comparator.compareElements (array[i], array [i + 1]) > 0) | ||||
| { | { | ||||
| swapVariables (array[i], array[i + 1]); | |||||
| std::swap (array[i], array[i + 1]); | |||||
| if (i > firstElement) | if (i > firstElement) | ||||
| i -= 2; | i -= 2; | ||||
| @@ -6278,14 +6276,14 @@ static void sortArray (ElementComparator& comparator, | |||||
| if (comparator.compareElements (array[k], array [maxIndex]) > 0) | if (comparator.compareElements (array[k], array [maxIndex]) > 0) | ||||
| maxIndex = k; | maxIndex = k; | ||||
| swapVariables (array[j], array[maxIndex]); | |||||
| std::swap (array[j], array[maxIndex]); | |||||
| --j; | --j; | ||||
| } | } | ||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| const int mid = firstElement + (size >> 1); | const int mid = firstElement + (size >> 1); | ||||
| swapVariables (array[mid], array[firstElement]); | |||||
| std::swap (array[mid], array[firstElement]); | |||||
| int i = firstElement; | int i = firstElement; | ||||
| int j = lastElement + 1; | int j = lastElement + 1; | ||||
| @@ -6303,10 +6301,10 @@ static void sortArray (ElementComparator& comparator, | |||||
| if (j < i) | if (j < i) | ||||
| break; | break; | ||||
| swapVariables (array[i], array[j]); | |||||
| std::swap (array[i], array[j]); | |||||
| } | } | ||||
| swapVariables (array[j], array[firstElement]); | |||||
| std::swap (array[j], array[firstElement]); | |||||
| if (j - 1 - firstElement >= lastElement - i) | if (j - 1 - firstElement >= lastElement - i) | ||||
| { | { | ||||
| @@ -6980,6 +6978,7 @@ public: | |||||
| bool operator== (const OtherArrayType& other) const | bool operator== (const OtherArrayType& other) const | ||||
| { | { | ||||
| const ScopedLockType lock (getLock()); | const ScopedLockType lock (getLock()); | ||||
| const typename OtherArrayType::ScopedLockType lock2 (other.getLock()); | |||||
| if (numUsed != other.numUsed) | if (numUsed != other.numUsed) | ||||
| return false; | return false; | ||||
| @@ -7121,6 +7120,22 @@ public: | |||||
| return data.elements; | return data.elements; | ||||
| } | } | ||||
| /** Returns a pointer to the first element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ElementType* begin() const throw() | |||||
| { | |||||
| return data.elements; | |||||
| } | |||||
| /** Returns a pointer to the element which follows the last element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ElementType* end() const throw() | |||||
| { | |||||
| return data.elements + numUsed; | |||||
| } | |||||
| /** Finds the index of the first element which matches the value passed in. | /** Finds the index of the first element which matches the value passed in. | ||||
| This will search the array for the given object, and return the index | This will search the array for the given object, and return the index | ||||
| @@ -9755,6 +9770,22 @@ public: | |||||
| return data.elements; | return data.elements; | ||||
| } | } | ||||
| /** Returns a pointer to the first element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ObjectClass** begin() const throw() | |||||
| { | |||||
| return data.elements; | |||||
| } | |||||
| /** Returns a pointer to the element which follows the last element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ObjectClass** end() const throw() | |||||
| { | |||||
| return data.elements + numUsed; | |||||
| } | |||||
| /** Finds the index of an object which might be in the array. | /** Finds the index of an object which might be in the array. | ||||
| @param objectToLookFor the object to look for | @param objectToLookFor the object to look for | ||||
| @@ -10513,7 +10544,7 @@ public: | |||||
| // this happens, you must have done something dodgy! | // this happens, you must have done something dodgy! | ||||
| jassert (object != other.object); | jassert (object != other.object); | ||||
| swapVariables (object, other.object); | |||||
| std::swap (object, other.object); | |||||
| } | } | ||||
| private: | private: | ||||
| @@ -10848,7 +10879,7 @@ public: | |||||
| const ScopedLockType lock2 (otherHashMap.getLock()); | const ScopedLockType lock2 (otherHashMap.getLock()); | ||||
| slots.swapWithArray (otherHashMap.slots); | slots.swapWithArray (otherHashMap.slots); | ||||
| swapVariables (totalNumItems, otherHashMap.totalNumItems); | |||||
| std::swap (totalNumItems, otherHashMap.totalNumItems); | |||||
| } | } | ||||
| /** Returns the CriticalSection that locks this structure. | /** Returns the CriticalSection that locks this structure. | ||||
| @@ -13832,6 +13863,22 @@ public: | |||||
| : static_cast <ObjectClass*> (0); | : static_cast <ObjectClass*> (0); | ||||
| } | } | ||||
| /** Returns a pointer to the first element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ObjectClass** begin() const throw() | |||||
| { | |||||
| return data.elements; | |||||
| } | |||||
| /** Returns a pointer to the element which follows the last element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ObjectClass** end() const throw() | |||||
| { | |||||
| return data.elements + numUsed; | |||||
| } | |||||
| /** Finds the index of the first occurrence of an object in the array. | /** Finds the index of the first occurrence of an object in the array. | ||||
| @param objectToLookFor the object to look for | @param objectToLookFor the object to look for | ||||
| @@ -14233,8 +14280,8 @@ public: | |||||
| if (isPositiveAndBelow (index1, numUsed) | if (isPositiveAndBelow (index1, numUsed) | ||||
| && isPositiveAndBelow (index2, numUsed)) | && isPositiveAndBelow (index2, numUsed)) | ||||
| { | { | ||||
| swapVariables (data.elements [index1], | |||||
| data.elements [index2]); | |||||
| std::swap (data.elements [index1], | |||||
| data.elements [index2]); | |||||
| } | } | ||||
| } | } | ||||
| @@ -14294,7 +14341,7 @@ public: | |||||
| const ScopedLockType lock2 (otherArray.getLock()); | const ScopedLockType lock2 (otherArray.getLock()); | ||||
| data.swapWith (otherArray.data); | data.swapWith (otherArray.data); | ||||
| swapVariables (numUsed, otherArray.numUsed); | |||||
| std::swap (numUsed, otherArray.numUsed); | |||||
| } | } | ||||
| /** Compares this array to another one. | /** Compares this array to another one. | ||||
| @@ -14666,6 +14713,22 @@ public: | |||||
| return numUsed > 0 ? data.elements [numUsed - 1] : ElementType(); | return numUsed > 0 ? data.elements [numUsed - 1] : ElementType(); | ||||
| } | } | ||||
| /** Returns a pointer to the first element in the set. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ElementType* begin() const throw() | |||||
| { | |||||
| return data.elements; | |||||
| } | |||||
| /** Returns a pointer to the element which follows the last element in the set. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ElementType* end() const throw() | |||||
| { | |||||
| return data.elements + numUsed; | |||||
| } | |||||
| /** Finds the index of the first element which matches the value passed in. | /** Finds the index of the first element which matches the value passed in. | ||||
| This will search the set for the given object, and return the index | This will search the set for the given object, and return the index | ||||
| @@ -20412,7 +20475,7 @@ public: | |||||
| void swapWith (OptionalScopedPointer<ObjectType>& other) throw() | void swapWith (OptionalScopedPointer<ObjectType>& other) throw() | ||||
| { | { | ||||
| object.swapWith (other.object); | object.swapWith (other.object); | ||||
| swapVariables (shouldDelete, other.shouldDelete); | |||||
| std::swap (shouldDelete, other.shouldDelete); | |||||
| } | } | ||||
| private: | private: | ||||
| @@ -21490,8 +21553,8 @@ private: | |||||
| @see LocalisedStrings | @see LocalisedStrings | ||||
| */ | */ | ||||
| #define TRANS(stringLiteral) \ | |||||
| LocalisedStrings::translateWithCurrentMappings (stringLiteral) | |||||
| #define TRANS(stringLiteral) \ | |||||
| JUCE_NAMESPACE::LocalisedStrings::translateWithCurrentMappings (stringLiteral) | |||||
| /** | /** | ||||
| Used to convert strings to localised foreign-language versions. | Used to convert strings to localised foreign-language versions. | ||||
| @@ -141,6 +141,7 @@ public: | |||||
| bool operator== (const OtherArrayType& other) const | bool operator== (const OtherArrayType& other) const | ||||
| { | { | ||||
| const ScopedLockType lock (getLock()); | const ScopedLockType lock (getLock()); | ||||
| const typename OtherArrayType::ScopedLockType lock2 (other.getLock()); | |||||
| if (numUsed != other.numUsed) | if (numUsed != other.numUsed) | ||||
| return false; | return false; | ||||
| @@ -284,6 +285,23 @@ public: | |||||
| return data.elements; | return data.elements; | ||||
| } | } | ||||
| //============================================================================== | |||||
| /** Returns a pointer to the first element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ElementType* begin() const throw() | |||||
| { | |||||
| return data.elements; | |||||
| } | |||||
| /** Returns a pointer to the element which follows the last element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ElementType* end() const throw() | |||||
| { | |||||
| return data.elements + numUsed; | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Finds the index of the first element which matches the value passed in. | /** Finds the index of the first element which matches the value passed in. | ||||
| @@ -158,6 +158,23 @@ public: | |||||
| return data.elements; | return data.elements; | ||||
| } | } | ||||
| //============================================================================== | |||||
| /** Returns a pointer to the first element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ObjectClass** begin() const throw() | |||||
| { | |||||
| return data.elements; | |||||
| } | |||||
| /** Returns a pointer to the element which follows the last element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ObjectClass** end() const throw() | |||||
| { | |||||
| return data.elements + numUsed; | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Finds the index of an object which might be in the array. | /** Finds the index of an object which might be in the array. | ||||
| @@ -171,6 +171,23 @@ public: | |||||
| : static_cast <ObjectClass*> (0); | : static_cast <ObjectClass*> (0); | ||||
| } | } | ||||
| //============================================================================== | |||||
| /** Returns a pointer to the first element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ObjectClass** begin() const throw() | |||||
| { | |||||
| return data.elements; | |||||
| } | |||||
| /** Returns a pointer to the element which follows the last element in the array. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ObjectClass** end() const throw() | |||||
| { | |||||
| return data.elements + numUsed; | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Finds the index of the first occurrence of an object in the array. | /** Finds the index of the first occurrence of an object in the array. | ||||
| @@ -574,8 +591,8 @@ public: | |||||
| if (isPositiveAndBelow (index1, numUsed) | if (isPositiveAndBelow (index1, numUsed) | ||||
| && isPositiveAndBelow (index2, numUsed)) | && isPositiveAndBelow (index2, numUsed)) | ||||
| { | { | ||||
| swapVariables (data.elements [index1], | |||||
| data.elements [index2]); | |||||
| std::swap (data.elements [index1], | |||||
| data.elements [index2]); | |||||
| } | } | ||||
| } | } | ||||
| @@ -636,7 +653,7 @@ public: | |||||
| const ScopedLockType lock2 (otherArray.getLock()); | const ScopedLockType lock2 (otherArray.getLock()); | ||||
| data.swapWith (otherArray.data); | data.swapWith (otherArray.data); | ||||
| swapVariables (numUsed, otherArray.numUsed); | |||||
| std::swap (numUsed, otherArray.numUsed); | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -224,6 +224,23 @@ public: | |||||
| return numUsed > 0 ? data.elements [numUsed - 1] : ElementType(); | return numUsed > 0 ? data.elements [numUsed - 1] : ElementType(); | ||||
| } | } | ||||
| //============================================================================== | |||||
| /** Returns a pointer to the first element in the set. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ElementType* begin() const throw() | |||||
| { | |||||
| return data.elements; | |||||
| } | |||||
| /** Returns a pointer to the element which follows the last element in the set. | |||||
| This method is provided for compatibility with standard C++ iteration mechanisms. | |||||
| */ | |||||
| inline ElementType* end() const throw() | |||||
| { | |||||
| return data.elements + numUsed; | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Finds the index of the first element which matches the value passed in. | /** Finds the index of the first element which matches the value passed in. | ||||
| @@ -26,7 +26,6 @@ | |||||
| #ifndef __JUCE_SPARSESET_JUCEHEADER__ | #ifndef __JUCE_SPARSESET_JUCEHEADER__ | ||||
| #define __JUCE_SPARSESET_JUCEHEADER__ | #define __JUCE_SPARSESET_JUCEHEADER__ | ||||
| #include "juce_ArrayAllocationBase.h" | |||||
| #include "../maths/juce_Range.h" | #include "../maths/juce_Range.h" | ||||
| #include "../threads/juce_CriticalSection.h" | #include "../threads/juce_CriticalSection.h" | ||||
| @@ -33,7 +33,7 @@ | |||||
| */ | */ | ||||
| #define JUCE_MAJOR_VERSION 1 | #define JUCE_MAJOR_VERSION 1 | ||||
| #define JUCE_MINOR_VERSION 53 | #define JUCE_MINOR_VERSION 53 | ||||
| #define JUCE_BUILDNUMBER 65 | |||||
| #define JUCE_BUILDNUMBER 66 | |||||
| /** Current Juce version number. | /** Current Juce version number. | ||||
| @@ -96,6 +96,7 @@ | |||||
| #include <cstring> | #include <cstring> | ||||
| #include <cstdio> | #include <cstdio> | ||||
| #include <iostream> | #include <iostream> | ||||
| #include <vector> | |||||
| #if JUCE_USE_INTRINSICS | #if JUCE_USE_INTRINSICS | ||||
| #include <intrin.h> | #include <intrin.h> | ||||
| @@ -30,7 +30,7 @@ | |||||
| #include "juce_Line.h" | #include "juce_Line.h" | ||||
| #include "juce_Rectangle.h" | #include "juce_Rectangle.h" | ||||
| #include "../contexts/juce_Justification.h" | #include "../contexts/juce_Justification.h" | ||||
| #include "../../../containers/juce_Array.h" | |||||
| #include "../../../containers/juce_ArrayAllocationBase.h" | |||||
| #include "../../../io/streams/juce_InputStream.h" | #include "../../../io/streams/juce_InputStream.h" | ||||
| #include "../../../io/streams/juce_OutputStream.h" | #include "../../../io/streams/juce_OutputStream.h" | ||||
| class Image; | class Image; | ||||