diff --git a/build/linux/platform_specific_code/juce_linux_SystemStats.cpp b/build/linux/platform_specific_code/juce_linux_SystemStats.cpp
index 14ac470d21..bfa06be34a 100644
--- a/build/linux/platform_specific_code/juce_linux_SystemStats.cpp
+++ b/build/linux/platform_specific_code/juce_linux_SystemStats.cpp
@@ -100,6 +100,16 @@ const String SystemStats::getOperatingSystemName() throw()
return T("Linux");
}
+bool SystemStats::isOperatingSystem64Bit() throw()
+{
+#if JUCE_64BIT
+ return true;
+#else
+ //xxx not sure how to find this out?..
+ return false;
+#endif
+}
+
static const String getCpuInfo (const char* key, bool lastOne = false) throw()
{
String info;
diff --git a/build/linux/platform_specific_code/juce_linux_Windowing.cpp b/build/linux/platform_specific_code/juce_linux_Windowing.cpp
index 950ad32e06..c79fcec3d0 100644
--- a/build/linux/platform_specific_code/juce_linux_Windowing.cpp
+++ b/build/linux/platform_specific_code/juce_linux_Windowing.cpp
@@ -940,7 +940,8 @@ public:
{
jassert (x >= 0 && y >= 0 && x < ww && y < wh); // should only be called for points that are actually inside the bounds
- if (x < 0 || y < 0 || x >= ww || y >= wh)
+ if (((unsigned int) x) >= (unsigned int) ww
+ || ((unsigned int) y) >= (unsigned int) wh)
return false;
bool inFront = false;
diff --git a/build/macosx/platform_specific_code/juce_mac_CoreAudio.cpp b/build/macosx/platform_specific_code/juce_mac_CoreAudio.cpp
index 7ca3e8b9d3..385ca08c56 100644
--- a/build/macosx/platform_specific_code/juce_mac_CoreAudio.cpp
+++ b/build/macosx/platform_specific_code/juce_mac_CoreAudio.cpp
@@ -396,7 +396,7 @@ public:
if (types != 0)
{
- if (index >= 0 && index < num)
+ if (((unsigned int) index) < num)
{
OSType id = types[index];
AudioDeviceSetProperty (deviceID, 0, 0, input, kAudioDevicePropertyDataSource, sizeof (id), &id);
diff --git a/build/macosx/platform_specific_code/juce_mac_CoreMidi.cpp b/build/macosx/platform_specific_code/juce_mac_CoreMidi.cpp
index 44508b2904..c4ce297b09 100644
--- a/build/macosx/platform_specific_code/juce_mac_CoreMidi.cpp
+++ b/build/macosx/platform_specific_code/juce_mac_CoreMidi.cpp
@@ -254,7 +254,7 @@ MidiOutput* MidiOutput::openDevice (int index)
{
MidiOutput* mo = 0;
- if (index >= 0 && index < (int) MIDIGetNumberOfDestinations())
+ if (((unsigned int) index) < (unsigned int) MIDIGetNumberOfDestinations())
{
MIDIEndpointRef endPoint = MIDIGetDestination (index);
@@ -496,7 +496,7 @@ MidiInput* MidiInput::openDevice (int index, MidiInputCallback* callback)
{
MidiInput* mi = 0;
- if (index >= 0 && index < (int) MIDIGetNumberOfSources())
+ if (((unsigned int) index) < (unsigned int) MIDIGetNumberOfSources())
{
MIDIEndpointRef endPoint = MIDIGetSource (index);
diff --git a/build/macosx/platform_specific_code/juce_mac_SystemStats.cpp b/build/macosx/platform_specific_code/juce_mac_SystemStats.cpp
index 7a0c2f3058..49e120ef69 100644
--- a/build/macosx/platform_specific_code/juce_mac_SystemStats.cpp
+++ b/build/macosx/platform_specific_code/juce_mac_SystemStats.cpp
@@ -126,6 +126,16 @@ const String SystemStats::getOperatingSystemName() throw()
return T("Mac OS X");
}
+bool SystemStats::isOperatingSystem64Bit() throw()
+{
+#if JUCE_64BIT
+ return true;
+#else
+ //xxx not sure how to find this out?..
+ return false;
+#endif
+}
+
//==============================================================================
void SystemStats::initialiseStats() throw()
{
diff --git a/build/macosx/platform_specific_code/juce_mac_Windowing.cpp b/build/macosx/platform_specific_code/juce_mac_Windowing.cpp
index cfddf553ce..7191ab7257 100644
--- a/build/macosx/platform_specific_code/juce_mac_Windowing.cpp
+++ b/build/macosx/platform_specific_code/juce_mac_Windowing.cpp
@@ -594,8 +594,8 @@ public:
bool contains (int x, int y, bool trueIfInAChildWindow) const
{
- if (x < 0 || y < 0
- || x >= component->getWidth() || y >= component->getHeight()
+ if (((unsigned int) x) >= (unsigned int) component->getWidth()
+ || ((unsigned int) y) >= (unsigned int) component->getHeight()
|| ! IsValidWindowPtr (windowRef))
return false;
diff --git a/build/win32/platform_specific_code/juce_win32_AudioCDReader.cpp b/build/win32/platform_specific_code/juce_win32_AudioCDReader.cpp
index ea121c2db3..89caeeb21d 100644
--- a/build/win32/platform_specific_code/juce_win32_AudioCDReader.cpp
+++ b/build/win32/platform_specific_code/juce_win32_AudioCDReader.cpp
@@ -1708,7 +1708,7 @@ AudioCDReader* AudioCDReader::createReaderForCD (const int deviceIndex)
CDDeviceInfo list[8];
const int num = FindCDDevices (list, 8);
- if (deviceIndex >= 0 && deviceIndex < num)
+ if (((unsigned int) deviceIndex) < (unsigned int) num)
{
CDDeviceHandle* const handle = openHandle (&(list[deviceIndex]));
diff --git a/build/win32/platform_specific_code/juce_win32_SystemStats.cpp b/build/win32/platform_specific_code/juce_win32_SystemStats.cpp
index 39a050e905..430a04e76d 100644
--- a/build/win32/platform_specific_code/juce_win32_SystemStats.cpp
+++ b/build/win32/platform_specific_code/juce_win32_SystemStats.cpp
@@ -348,6 +348,23 @@ const String SystemStats::getOperatingSystemName() throw()
return name;
}
+bool SystemStats::isOperatingSystem64Bit() throw()
+{
+#ifdef _WIN64
+ return true;
+#else
+ typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
+
+ LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress (GetModuleHandle ("kernel32"), "IsWow64Process");
+
+ BOOL isWow64 = FALSE;
+
+ return (fnIsWow64Process != 0)
+ && fnIsWow64Process (GetCurrentProcess(), &isWow64)
+ && (isWow64 != FALSE);
+#endif
+}
+
//==============================================================================
int SystemStats::getMemorySizeInMegabytes() throw()
{
diff --git a/build/win32/platform_specific_code/juce_win32_Windowing.cpp b/build/win32/platform_specific_code/juce_win32_Windowing.cpp
index ef17556f3c..bcb91c028b 100644
--- a/build/win32/platform_specific_code/juce_win32_Windowing.cpp
+++ b/build/win32/platform_specific_code/juce_win32_Windowing.cpp
@@ -1429,9 +1429,8 @@ private:
}
else if (! isDragging)
{
- if (x >= 0 && y >= 0
- && x < component->getWidth()
- && y < component->getHeight())
+ if (((unsigned int) x) < (unsigned int) component->getWidth()
+ && ((unsigned int) y) < (unsigned int) component->getHeight())
{
RECT r;
GetWindowRect (hwnd, &r);
diff --git a/build/win32/vc8/JUCE.vcproj b/build/win32/vc8/JUCE.vcproj
index d8a5ae3bf5..f74513feeb 100644
--- a/build/win32/vc8/JUCE.vcproj
+++ b/build/win32/vc8/JUCE.vcproj
@@ -5783,6 +5783,10 @@
RelativePath="..\..\..\src\juce_core\threads\juce_ScopedReadLock.h"
>
+
+
diff --git a/docs/JUCE changelist.txt b/docs/JUCE changelist.txt
index ca588d6cb9..d111620344 100644
--- a/docs/JUCE changelist.txt
+++ b/docs/JUCE changelist.txt
@@ -1,7 +1,12 @@
==============================================================================
- JUCE version 1.45
+ JUCE version 1.46
+
+==============================================================================
+Changelist for version 1.46
+
+- new class: ScopedTryLock
==============================================================================
Changelist for version 1.45
diff --git a/extras/audio plugin host/src/plugins/juce_KnownPluginList.cpp b/extras/audio plugin host/src/plugins/juce_KnownPluginList.cpp
index 37c9e9dadf..e33f6d9fd3 100644
--- a/extras/audio plugin host/src/plugins/juce_KnownPluginList.cpp
+++ b/extras/audio plugin host/src/plugins/juce_KnownPluginList.cpp
@@ -307,5 +307,5 @@ int KnownPluginList::getIndexChosenByMenu (const int menuResultCode) const
{
const int i = menuResultCode - menuIdBase;
- return (i >= 0 && i < types.size()) ? i : -1;
+ return (((unsigned int) i) < (unsigned int) types.size()) ? i : -1;
}
diff --git a/extras/audio plugin host/src/plugins/juce_PluginListComponent.cpp b/extras/audio plugin host/src/plugins/juce_PluginListComponent.cpp
index e188e630de..7cc45d7672 100644
--- a/extras/audio plugin host/src/plugins/juce_PluginListComponent.cpp
+++ b/extras/audio plugin host/src/plugins/juce_PluginListComponent.cpp
@@ -201,7 +201,7 @@ void PluginListComponent::buttonClicked (Button* b)
}
}
-bool PluginListComponent::isInterestedInFileDrag (const StringArray& files)
+bool PluginListComponent::isInterestedInFileDrag (const StringArray& /*files*/)
{
return true;
}
diff --git a/extras/audio plugin host/src/plugins/vst/juce_VSTPluginInstance.cpp b/extras/audio plugin host/src/plugins/vst/juce_VSTPluginInstance.cpp
index af4f0ce8bc..92bba8b3c4 100644
--- a/extras/audio plugin host/src/plugins/vst/juce_VSTPluginInstance.cpp
+++ b/extras/audio plugin host/src/plugins/vst/juce_VSTPluginInstance.cpp
@@ -2411,7 +2411,7 @@ int VSTPluginInstance::getNumParameters()
float VSTPluginInstance::getParameter (int index)
{
- if (effect != 0 && index >= 0 && index < effect->numParams)
+ if (effect != 0 && ((unsigned int) index) < (unsigned int) effect->numParams)
{
try
{
@@ -2428,7 +2428,7 @@ float VSTPluginInstance::getParameter (int index)
void VSTPluginInstance::setParameter (int index, float newValue)
{
- if (effect != 0 && index >= 0 && index < effect->numParams)
+ if (effect != 0 && ((unsigned int) index) < (unsigned int) effect->numParams)
{
try
{
diff --git a/extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.cpp b/extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.cpp
index aac2bb736a..8ed299888b 100644
--- a/extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.cpp
+++ b/extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.cpp
@@ -661,7 +661,7 @@ public:
while (i.getNextEvent (midiEventData, midiEventSize, midiEventPosition))
{
- jassert (midiEventPosition >= 0 && midiEventPosition < (int) numSamples);
+ jassert (((unsigned int) midiEventPosition) < (unsigned int) numSamples);
diff --git a/extras/the jucer/src/properties/jucer_JustificationProperty.h b/extras/the jucer/src/properties/jucer_JustificationProperty.h
index 99072151aa..59fa42bc61 100644
--- a/extras/the jucer/src/properties/jucer_JustificationProperty.h
+++ b/extras/the jucer/src/properties/jucer_JustificationProperty.h
@@ -85,7 +85,7 @@ public:
Justification::bottomLeft,
Justification::bottomRight };
- if (newIndex >= 0 && newIndex < numElementsInArray (types)
+ if (((unsigned int) newIndex) < (unsigned int) numElementsInArray (types)
&& types [newIndex] != getJustification().getFlags())
{
setJustification (Justification (types [newIndex]));
diff --git a/src/juce_appframework/audio/dsp/juce_AudioSampleBuffer.cpp b/src/juce_appframework/audio/dsp/juce_AudioSampleBuffer.cpp
index 3e47c37e22..91d1dffe2e 100644
--- a/src/juce_appframework/audio/dsp/juce_AudioSampleBuffer.cpp
+++ b/src/juce_appframework/audio/dsp/juce_AudioSampleBuffer.cpp
@@ -64,7 +64,7 @@ AudioSampleBuffer::AudioSampleBuffer (float** dataToReferTo,
const int numChannels_,
const int numSamples) throw()
{
- jassert (numChannels_ >= 0 && numChannels_ <= maxNumAudioSampleBufferChannels);
+ jassert (((unsigned int) numChannels_) <= (unsigned int) maxNumAudioSampleBufferChannels);
numChannels = numChannels_;
size = numSamples;
@@ -134,8 +134,8 @@ AudioSampleBuffer::~AudioSampleBuffer() throw()
float* AudioSampleBuffer::getSampleData (const int channelNumber,
const int sampleOffset) const throw()
{
- jassert (channelNumber >= 0 && channelNumber < numChannels);
- jassert (sampleOffset >= 0 && sampleOffset < size);
+ jassert (((unsigned int) channelNumber) < (unsigned int) numChannels);
+ jassert (((unsigned int) sampleOffset) < (unsigned int) size);
return channels [channelNumber] + sampleOffset;
}
@@ -211,8 +211,7 @@ void AudioSampleBuffer::clear() throw()
void AudioSampleBuffer::clear (const int startSample,
const int numSamples) throw()
{
- jassert (startSample >= 0);
- jassert (startSample + numSamples <= size);
+ jassert (startSample >= 0 && startSample + numSamples <= size);
for (int i = 0; i < numChannels; ++i)
zeromem (channels [i] + startSample, numSamples * sizeof (float));
@@ -222,7 +221,7 @@ void AudioSampleBuffer::clear (const int channel,
const int startSample,
const int numSamples) throw()
{
- jassert (channel >= 0 && channel < numChannels);
+ jassert (((unsigned int) channel) < (unsigned int) numChannels);
jassert (startSample >= 0 && startSample + numSamples <= size);
zeromem (channels [channel] + startSample, numSamples * sizeof (float));
@@ -233,7 +232,7 @@ void AudioSampleBuffer::applyGain (const int channel,
int numSamples,
const float gain) throw()
{
- jassert (channel >= 0 && channel < numChannels);
+ jassert (((unsigned int) channel) < (unsigned int) numChannels);
jassert (startSample >= 0 && startSample + numSamples <= size);
if (gain != 1.0f)
@@ -264,7 +263,7 @@ void AudioSampleBuffer::applyGainRamp (const int channel,
}
else
{
- jassert (channel >= 0 && channel < numChannels);
+ jassert (((unsigned int) channel) < (unsigned int) numChannels);
jassert (startSample >= 0 && startSample + numSamples <= size);
const float increment = (endGain - startGain) / numSamples;
@@ -295,9 +294,9 @@ void AudioSampleBuffer::addFrom (const int destChannel,
const float gain) throw()
{
jassert (&source != this);
- jassert (destChannel >= 0 && destChannel < numChannels);
+ jassert (((unsigned int) destChannel) < (unsigned int) numChannels);
jassert (destStartSample >= 0 && destStartSample + numSamples <= size);
- jassert (sourceChannel >= 0 && sourceChannel < source.numChannels);
+ jassert (((unsigned int) sourceChannel) < (unsigned int) source.numChannels);
jassert (sourceStartSample >= 0 && sourceStartSample + numSamples <= source.size);
if (gain != 0.0f && numSamples > 0)
@@ -324,7 +323,7 @@ void AudioSampleBuffer::addFrom (const int destChannel,
int numSamples,
const float gain) throw()
{
- jassert (destChannel >= 0 && destChannel < numChannels);
+ jassert (((unsigned int) destChannel) < (unsigned int) numChannels);
jassert (destStartSample >= 0 && destStartSample + numSamples <= size);
jassert (source != 0);
@@ -352,7 +351,7 @@ void AudioSampleBuffer::addFromWithRamp (const int destChannel,
float startGain,
const float endGain) throw()
{
- jassert (destChannel >= 0 && destChannel < numChannels);
+ jassert (((unsigned int) destChannel) < (unsigned int) numChannels);
jassert (destStartSample >= 0 && destStartSample + numSamples <= size);
jassert (source != 0);
@@ -388,9 +387,9 @@ void AudioSampleBuffer::copyFrom (const int destChannel,
int numSamples) throw()
{
jassert (&source != this);
- jassert (destChannel >= 0 && destChannel < numChannels);
+ jassert (((unsigned int) destChannel) < (unsigned int) numChannels);
jassert (destStartSample >= 0 && destStartSample + numSamples <= size);
- jassert (sourceChannel >= 0 && sourceChannel < source.numChannels);
+ jassert (((unsigned int) sourceChannel) < (unsigned int) source.numChannels);
jassert (sourceStartSample >= 0 && sourceStartSample + numSamples <= source.size);
if (numSamples > 0)
@@ -406,7 +405,7 @@ void AudioSampleBuffer::copyFrom (const int destChannel,
const float* source,
int numSamples) throw()
{
- jassert (destChannel >= 0 && destChannel < numChannels);
+ jassert (((unsigned int) destChannel) < (unsigned int) numChannels);
jassert (destStartSample >= 0 && destStartSample + numSamples <= size);
jassert (source != 0);
@@ -424,7 +423,7 @@ void AudioSampleBuffer::findMinMax (const int channel,
float& minVal,
float& maxVal) const throw()
{
- jassert (channel >= 0 && channel < numChannels);
+ jassert (((unsigned int) channel) < (unsigned int) numChannels);
jassert (startSample >= 0 && startSample + numSamples <= size);
if (numSamples <= 0)
@@ -459,7 +458,7 @@ float AudioSampleBuffer::getMagnitude (const int channel,
const int startSample,
const int numSamples) const throw()
{
- jassert (channel >= 0 && channel < numChannels);
+ jassert (((unsigned int) channel) < (unsigned int) numChannels);
jassert (startSample >= 0 && startSample + numSamples <= size);
float mn, mx;
@@ -483,7 +482,7 @@ float AudioSampleBuffer::getRMSLevel (const int channel,
const int startSample,
const int numSamples) const throw()
{
- jassert (channel >= 0 && channel < numChannels);
+ jassert (((unsigned int) channel) < (unsigned int) numChannels);
jassert (startSample >= 0 && startSample + numSamples <= size);
if (numSamples <= 0 || channel < 0 || channel >= numChannels)
diff --git a/src/juce_appframework/audio/midi/juce_MidiFile.cpp b/src/juce_appframework/audio/midi/juce_MidiFile.cpp
index 378900f01f..76cc08becb 100644
--- a/src/juce_appframework/audio/midi/juce_MidiFile.cpp
+++ b/src/juce_appframework/audio/midi/juce_MidiFile.cpp
@@ -74,7 +74,7 @@ int MidiFile::getNumTracks() const throw()
const MidiMessageSequence* MidiFile::getTrack (const int index) const throw()
{
- return (index >= 0 && index < numTracks) ? tracks[index] : 0;
+ return (((unsigned int) index) < (unsigned int) numTracks) ? tracks[index] : 0;
}
void MidiFile::addTrack (const MidiMessageSequence& trackSequence) throw()
diff --git a/src/juce_appframework/audio/midi/juce_MidiKeyboardState.cpp b/src/juce_appframework/audio/midi/juce_MidiKeyboardState.cpp
index 4424c6628a..c7132d957f 100644
--- a/src/juce_appframework/audio/midi/juce_MidiKeyboardState.cpp
+++ b/src/juce_appframework/audio/midi/juce_MidiKeyboardState.cpp
@@ -60,24 +60,24 @@ bool MidiKeyboardState::isNoteOn (const int midiChannel, const int n) const thro
{
jassert (midiChannel >= 0 && midiChannel <= 16);
- return n >= 0 && n < 128
+ return ((unsigned int) n) < 128
&& (noteStates[n] & (1 << (midiChannel - 1))) != 0;
}
bool MidiKeyboardState::isNoteOnForChannels (const int midiChannelMask, const int n) const throw()
{
- return n >= 0 && n < 128
+ return ((unsigned int) n) < 128
&& (noteStates[n] & midiChannelMask) != 0;
}
void MidiKeyboardState::noteOn (const int midiChannel, const int midiNoteNumber, const float velocity)
{
jassert (midiChannel >= 0 && midiChannel <= 16);
- jassert (midiNoteNumber >= 0 && midiNoteNumber < 128);
+ jassert (((unsigned int) midiNoteNumber) < 128);
const ScopedLock sl (lock);
- if (midiNoteNumber >= 0 && midiNoteNumber < 128)
+ if (((unsigned int) midiNoteNumber) < 128)
{
const int timeNow = (int) Time::getMillisecondCounter();
eventsToAdd.addEvent (MidiMessage::noteOn (midiChannel, midiNoteNumber, velocity), timeNow);
@@ -89,7 +89,7 @@ void MidiKeyboardState::noteOn (const int midiChannel, const int midiNoteNumber,
void MidiKeyboardState::noteOnInternal (const int midiChannel, const int midiNoteNumber, const float velocity)
{
- if (midiNoteNumber >= 0 && midiNoteNumber < 128)
+ if (((unsigned int) midiNoteNumber) < 128)
{
noteStates [midiNoteNumber] |= (1 << (midiChannel - 1));
diff --git a/src/juce_appframework/audio/midi/juce_MidiMessage.cpp b/src/juce_appframework/audio/midi/juce_MidiMessage.cpp
index b5b9abda8f..9cef12993e 100644
--- a/src/juce_appframework/audio/midi/juce_MidiMessage.cpp
+++ b/src/juce_appframework/audio/midi/juce_MidiMessage.cpp
@@ -380,8 +380,8 @@ const MidiMessage MidiMessage::aftertouchChange (const int channel,
const int aftertouchValue) throw()
{
jassert (channel > 0 && channel <= 16);
- jassert (noteNum >= 0 && noteNum <= 127);
- jassert (aftertouchValue >= 0 && aftertouchValue <= 127);
+ jassert (((unsigned int) noteNum) <= 127);
+ jassert (((unsigned int) aftertouchValue) <= 127);
return MidiMessage (0xa0 | jlimit (0, 15, channel - 1),
noteNum & 0x7f,
@@ -404,7 +404,7 @@ const MidiMessage MidiMessage::channelPressureChange (const int channel,
const int pressure) throw()
{
jassert (channel > 0 && channel <= 16);
- jassert (pressure >= 0 && pressure <= 127);
+ jassert (((unsigned int) pressure) <= 127);
return MidiMessage (0xd0 | jlimit (0, 15, channel - 1),
pressure & 0x7f);
@@ -443,7 +443,7 @@ const MidiMessage MidiMessage::pitchWheel (const int channel,
const int position) throw()
{
jassert (channel > 0 && channel <= 16);
- jassert (position >= 0 && position <= 0x3fff);
+ jassert (((unsigned int) position) <= 0x3fff);
return MidiMessage (0xe0 | jlimit (0, 15, channel - 1),
position & 127,
@@ -493,7 +493,7 @@ const MidiMessage MidiMessage::noteOn (const int channel,
const uint8 velocity) throw()
{
jassert (channel > 0 && channel <= 16);
- jassert (noteNumber >= 0 && noteNumber <= 127);
+ jassert (((unsigned int) noteNumber) <= 127);
return MidiMessage (0x90 | jlimit (0, 15, channel - 1),
noteNumber & 127,
@@ -504,7 +504,7 @@ const MidiMessage MidiMessage::noteOff (const int channel,
const int noteNumber) throw()
{
jassert (channel > 0 && channel <= 16);
- jassert (noteNumber >= 0 && noteNumber <= 127);
+ jassert (((unsigned int) noteNumber) <= 127);
return MidiMessage (0x80 | jlimit (0, 15, channel - 1), noteNumber & 127, 0);
}
@@ -1010,7 +1010,7 @@ const String MidiMessage::getMidiNoteName (int note,
"F", "Gb", "G", "Ab", "A",
"Bb", "B" };
- if (note >= 0 && note < 128)
+ if (((unsigned int) note) < 128)
{
const String s ((useSharps) ? sharpNoteNames [note % 12]
: flatNoteNames [note % 12]);
@@ -1059,8 +1059,8 @@ const String MidiMessage::getGMInstrumentName (int n) throw()
"Applause", "Gunshot"
};
- return (n >= 0 && n < 128) ? names[n]
- : (const char*)0;
+ return (((unsigned int) n) < 128) ? names[n]
+ : (const char*)0;
}
const String MidiMessage::getGMInstrumentBankName (int n) throw()
@@ -1073,8 +1073,8 @@ const String MidiMessage::getGMInstrumentBankName (int n) throw()
"Synth Effects", "Ethnic", "Percussive", "Sound Effects"
};
- return (n >= 0 && n <= 15) ? names[n]
- : (const char*)0;
+ return (((unsigned int) n) <= 15) ? names[n]
+ : (const char*)0;
}
const String MidiMessage::getRhythmInstrumentName (int n) throw()
@@ -1124,8 +1124,8 @@ const String MidiMessage::getControllerName (int n) throw()
"Poly Operation"
};
- return (n >= 0 && n < 128) ? names[n]
- : (const char*)0;
+ return (((unsigned int) n) < 128) ? names[n]
+ : (const char*)0;
}
END_JUCE_NAMESPACE
diff --git a/src/juce_appframework/audio/midi/juce_MidiMessageSequence.cpp b/src/juce_appframework/audio/midi/juce_MidiMessageSequence.cpp
index 0e10068b37..42506d2b6b 100644
--- a/src/juce_appframework/audio/midi/juce_MidiMessageSequence.cpp
+++ b/src/juce_appframework/audio/midi/juce_MidiMessageSequence.cpp
@@ -135,10 +135,10 @@ double MidiMessageSequence::getEndTime() const
double MidiMessageSequence::getEventTime (const int index) const
{
- if (index < 0 || index >= list.size())
- return 0.0;
- else
+ if (((unsigned int) index) < (unsigned int) list.size())
return list.getUnchecked (index)->message.getTimeStamp();
+
+ return 0.0;
}
//==============================================================================
@@ -161,7 +161,7 @@ void MidiMessageSequence::addEvent (const MidiMessage& newMessage,
void MidiMessageSequence::deleteEvent (const int index,
const bool deleteMatchingNoteUp)
{
- if (index >= 0 && index < list.size())
+ if (((unsigned int) index) < (unsigned int) list.size())
{
if (deleteMatchingNoteUp)
deleteEvent (getIndexOfMatchingKeyUp (index), false);
diff --git a/src/juce_appframework/audio/processors/juce_AudioProcessor.cpp b/src/juce_appframework/audio/processors/juce_AudioProcessor.cpp
index e72d14f397..992d3b1d88 100644
--- a/src/juce_appframework/audio/processors/juce_AudioProcessor.cpp
+++ b/src/juce_appframework/audio/processors/juce_AudioProcessor.cpp
@@ -110,7 +110,7 @@ void AudioProcessor::setParameterNotifyingHost (const int parameterIndex,
void AudioProcessor::sendParamChangeMessageToListeners (const int parameterIndex, const float newValue)
{
- jassert (parameterIndex >= 0 && parameterIndex < getNumParameters());
+ jassert (((unsigned int) parameterIndex) < (unsigned int) getNumParameters());
for (int i = listeners.size(); --i >= 0;)
{
@@ -125,7 +125,7 @@ void AudioProcessor::sendParamChangeMessageToListeners (const int parameterIndex
void AudioProcessor::beginParameterChangeGesture (int parameterIndex)
{
- jassert (parameterIndex >= 0 && parameterIndex < getNumParameters());
+ jassert (((unsigned int) parameterIndex) < (unsigned int) getNumParameters());
#ifdef JUCE_DEBUG
// This means you've called beginParameterChangeGesture twice in succession without a matching
@@ -146,7 +146,7 @@ void AudioProcessor::beginParameterChangeGesture (int parameterIndex)
void AudioProcessor::endParameterChangeGesture (int parameterIndex)
{
- jassert (parameterIndex >= 0 && parameterIndex < getNumParameters());
+ jassert (((unsigned int) parameterIndex) < (unsigned int) getNumParameters());
#ifdef JUCE_DEBUG
// This means you've called endParameterChangeGesture without having previously called
diff --git a/src/juce_appframework/gui/components/controls/juce_ComboBox.cpp b/src/juce_appframework/gui/components/controls/juce_ComboBox.cpp
index 80c497f02f..c3a253984b 100644
--- a/src/juce_appframework/gui/components/controls/juce_ComboBox.cpp
+++ b/src/juce_appframework/gui/components/controls/juce_ComboBox.cpp
@@ -286,7 +286,7 @@ void ComboBox::setSelectedItemIndex (const int index,
{
if (currentIndex != index || label->getText() != getItemText (currentIndex))
{
- if (index >= 0 && index < getNumItems())
+ if (((unsigned int) index) < (unsigned int) getNumItems())
currentIndex = index;
else
currentIndex = -1;
diff --git a/src/juce_appframework/gui/components/controls/juce_ListBox.cpp b/src/juce_appframework/gui/components/controls/juce_ListBox.cpp
index fcff08e239..30b0691a28 100644
--- a/src/juce_appframework/gui/components/controls/juce_ListBox.cpp
+++ b/src/juce_appframework/gui/components/controls/juce_ListBox.cpp
@@ -470,7 +470,7 @@ void ListBox::selectRowInternal (const int row,
if ((! isRowSelected (row))
|| (deselectOthersFirst && getNumSelectedRows() > 1))
{
- if (row >= 0 && row < totalItems)
+ if (((unsigned int) row) < (unsigned int) totalItems)
{
if (deselectOthersFirst)
selected.clear();
@@ -616,7 +616,7 @@ int ListBox::getNumSelectedRows() const
int ListBox::getSelectedRow (const int index) const
{
- return (index >= 0 && index < selected.size())
+ return (((unsigned int) index) < (unsigned int) selected.size())
? selected [index] : -1;
}
@@ -633,11 +633,11 @@ int ListBox::getLastRowSelected() const
//==============================================================================
int ListBox::getRowContainingPosition (const int x, const int y) const throw()
{
- if (x >= 0 && x < getWidth())
+ if (((unsigned int) x) < (unsigned int) getWidth())
{
const int row = (viewport->getViewPositionY() + y - viewport->getY()) / rowHeight;
- if (row >= 0 && row < totalItems)
+ if (((unsigned int) row) < (unsigned int) totalItems)
return row;
}
diff --git a/src/juce_appframework/gui/components/controls/juce_TableHeaderComponent.cpp b/src/juce_appframework/gui/components/controls/juce_TableHeaderComponent.cpp
index c4292c2119..b089881bf1 100644
--- a/src/juce_appframework/gui/components/controls/juce_TableHeaderComponent.cpp
+++ b/src/juce_appframework/gui/components/controls/juce_TableHeaderComponent.cpp
@@ -212,7 +212,7 @@ void TableHeaderComponent::setColumnWidth (const int columnId, const int newWidt
{
const int index = getIndexOfColumnId (columnId, true) + 1;
- if (index >= 0 && index < numColumns)
+ if (((unsigned int) index) < (unsigned int) numColumns)
{
const int x = getColumnPosition (index).getX();
@@ -879,7 +879,7 @@ void TableHeaderComponent::handleAsyncUpdate()
int TableHeaderComponent::getResizeDraggerAt (const int mouseX) const throw()
{
- if (mouseX >= 0 && mouseX < getWidth())
+ if (((unsigned int) mouseX) < (unsigned int) getWidth())
{
const int draggableDistance = 3;
int x = 0;
diff --git a/src/juce_appframework/gui/components/controls/juce_TreeView.cpp b/src/juce_appframework/gui/components/controls/juce_TreeView.cpp
index 7f2aa64738..a1f8078f97 100644
--- a/src/juce_appframework/gui/components/controls/juce_TreeView.cpp
+++ b/src/juce_appframework/gui/components/controls/juce_TreeView.cpp
@@ -802,7 +802,7 @@ void TreeViewItem::removeSubItem (const int index, const bool deleteItem)
if (ownerView != 0)
ownerView->nodeAlterationLock.enter();
- if (index >= 0 && index < subItems.size())
+ if (((unsigned int) index) < (unsigned int) subItems.size())
{
subItems.remove (index, deleteItem);
treeHasChanged();
@@ -1127,7 +1127,7 @@ TreeViewItem* TreeViewItem::getItemOnRow (int index) throw()
TreeViewItem* TreeViewItem::findItemRecursively (int y) throw()
{
- if (y >= 0 && y < totalHeight)
+ if (((unsigned int) y) < (unsigned int) totalHeight)
{
const int h = itemHeight;
diff --git a/src/juce_appframework/gui/components/filebrowser/juce_FileSearchPathListComponent.cpp b/src/juce_appframework/gui/components/filebrowser/juce_FileSearchPathListComponent.cpp
index 597dce365c..c0602a7e12 100644
--- a/src/juce_appframework/gui/components/filebrowser/juce_FileSearchPathListComponent.cpp
+++ b/src/juce_appframework/gui/components/filebrowser/juce_FileSearchPathListComponent.cpp
@@ -150,7 +150,7 @@ void FileSearchPathListComponent::paintListBoxItem (int rowNumber, Graphics& g,
void FileSearchPathListComponent::deleteKeyPressed (int row)
{
- if (row >= 0 && row < path.getNumPaths())
+ if (((unsigned int) row) < (unsigned int) path.getNumPaths())
{
path.remove (row);
changed();
@@ -263,7 +263,7 @@ void FileSearchPathListComponent::buttonClicked (Button* button)
}
else if (button == downButton)
{
- if (currentRow >= 0 && currentRow < path.getNumPaths()-1)
+ if (currentRow >= 0 && currentRow < path.getNumPaths() - 1)
{
const File f (path[currentRow]);
path.remove (currentRow);
diff --git a/src/juce_appframework/gui/components/juce_Component.cpp b/src/juce_appframework/gui/components/juce_Component.cpp
index b14f4950c9..5281c5c837 100644
--- a/src/juce_appframework/gui/components/juce_Component.cpp
+++ b/src/juce_appframework/gui/components/juce_Component.cpp
@@ -1103,7 +1103,8 @@ void Component::getInterceptsMouseClicks (bool& allowsClicksOnThisComponent,
bool Component::contains (const int x, const int y)
{
- if (x >= 0 && y >= 0 && x < getWidth() && y < getHeight()
+ if (((unsigned int) x) < (unsigned int) getWidth()
+ && ((unsigned int) y) < (unsigned int) getHeight()
&& hitTest (x, y))
{
if (parentComponent_ != 0)
@@ -1146,7 +1147,8 @@ bool Component::reallyContains (int x, int y, const bool returnTrueIfWithinAChil
Component* Component::getComponentAt (const int x, const int y)
{
if (flags.visibleFlag
- && x >= 0 && y >= 0 && x < getWidth() && y < getHeight()
+ && ((unsigned int) x) < (unsigned int) getWidth()
+ && ((unsigned int) y) < (unsigned int) getHeight()
&& hitTest (x, y))
{
for (int i = childComponentList_.size(); --i >= 0;)
diff --git a/src/juce_appframework/gui/components/layout/juce_TabbedButtonBar.cpp b/src/juce_appframework/gui/components/layout/juce_TabbedButtonBar.cpp
index b243c1bfe0..93199541b9 100644
--- a/src/juce_appframework/gui/components/layout/juce_TabbedButtonBar.cpp
+++ b/src/juce_appframework/gui/components/layout/juce_TabbedButtonBar.cpp
@@ -92,14 +92,15 @@ bool TabBarButton::hitTest (int mx, int my)
if (owner->getOrientation() == TabbedButtonBar::TabsAtLeft
|| owner->getOrientation() == TabbedButtonBar::TabsAtRight)
{
- if (mx >= 0 && mx < getWidth()
- && my >= y + overlapPixels && my < y + h - overlapPixels)
+ if (((unsigned int) mx) < (unsigned int) getWidth()
+ && my >= y + overlapPixels
+ && my < y + h - overlapPixels)
return true;
}
else
{
if (mx >= x + overlapPixels && mx < x + w - overlapPixels
- && my >= 0 && my < getHeight())
+ && ((unsigned int) my) < (unsigned int) getHeight())
return true;
}
@@ -233,7 +234,7 @@ void TabbedButtonBar::addTab (const String& tabName,
if (tabName.isNotEmpty())
{
- if (insertIndex < 0 || insertIndex > tabs.size())
+ if (((unsigned int) insertIndex) > (unsigned int) tabs.size())
insertIndex = tabs.size();
for (int i = tabs.size(); --i >= insertIndex;)
@@ -262,7 +263,7 @@ void TabbedButtonBar::addTab (const String& tabName,
void TabbedButtonBar::setTabName (const int tabIndex,
const String& newName)
{
- if (tabIndex >= 0 && tabIndex < tabs.size()
+ if (((unsigned int) tabIndex) < (unsigned int) tabs.size()
&& tabs[tabIndex] != newName)
{
tabs.set (tabIndex, newName);
@@ -278,7 +279,7 @@ void TabbedButtonBar::setTabName (const int tabIndex,
void TabbedButtonBar::removeTab (const int tabIndex)
{
- if (tabIndex >= 0 && tabIndex < tabs.size())
+ if (((unsigned int) tabIndex) < (unsigned int) tabs.size())
{
const int oldTabIndex = currentTabIndex;
if (currentTabIndex == tabIndex)
@@ -328,7 +329,7 @@ void TabbedButtonBar::setCurrentTabIndex (int newIndex)
{
if (currentTabIndex != newIndex)
{
- if (newIndex < 0 || newIndex >= tabs.size())
+ if (((unsigned int) newIndex) >= (unsigned int) tabs.size())
newIndex = -1;
currentTabIndex = newIndex;
@@ -505,7 +506,8 @@ const Colour TabbedButtonBar::getTabBackgroundColour (const int tabIndex)
void TabbedButtonBar::setTabBackgroundColour (const int tabIndex, const Colour& newColour)
{
- if (tabIndex >= 0 && tabIndex < tabColours.size() && tabColours [tabIndex] != newColour)
+ if (((unsigned int) tabIndex) < (unsigned int) tabColours.size()
+ && tabColours [tabIndex] != newColour)
{
tabColours.set (tabIndex, newColour);
repaint();
diff --git a/src/juce_appframework/gui/components/menus/juce_MenuBarComponent.cpp b/src/juce_appframework/gui/components/menus/juce_MenuBarComponent.cpp
index 2b639db5b8..05e4a67395 100644
--- a/src/juce_appframework/gui/components/menus/juce_MenuBarComponent.cpp
+++ b/src/juce_appframework/gui/components/menus/juce_MenuBarComponent.cpp
@@ -156,7 +156,7 @@ int MenuBarComponent::getItemAt (const int x, const int y)
void MenuBarComponent::repaintMenuItem (int index)
{
- if (index >= 0 && index < xPositions.size())
+ if (((unsigned int) index) < (unsigned int) xPositions.size())
{
const int x1 = xPositions [index];
const int x2 = xPositions [index + 1];
@@ -223,7 +223,7 @@ void MenuBarComponent::showMenu (int index)
indexToShowAgain = -1;
repaint();
- if (itemUnderMouse >= 0 && itemUnderMouse < menuNames.size())
+ if (((unsigned int) itemUnderMouse) < (unsigned int) menuNames.size())
{
PopupMenu m (model->getMenuForIndex (itemUnderMouse,
menuNames [itemUnderMouse]));
@@ -268,7 +268,7 @@ void MenuBarComponent::showMenu (int index)
repaint();
itemUnderMouse = indexToShowAgain;
- if (itemUnderMouse < 0 || itemUnderMouse >= menuNames.size())
+ if (((unsigned int) itemUnderMouse) >= (unsigned int) menuNames.size())
break;
}
else
diff --git a/src/juce_appframework/gui/components/menus/juce_PopupMenu.cpp b/src/juce_appframework/gui/components/menus/juce_PopupMenu.cpp
index 8912f42fe8..f2f7d50c06 100644
--- a/src/juce_appframework/gui/components/menus/juce_PopupMenu.cpp
+++ b/src/juce_appframework/gui/components/menus/juce_PopupMenu.cpp
@@ -423,7 +423,7 @@ public:
{
const int y = minY - mw->windowPos.getY();
mw->ensureItemIsVisible (itemIdThatMustBeVisible,
- (y >= 0 && y < mw->windowPos.getHeight()) ? y : -1);
+ (((unsigned int) y) < (unsigned int) mw->windowPos.getHeight()) ? y : -1);
}
mw->resizeToBestWindowPos();
@@ -696,7 +696,7 @@ public:
bool overScrollArea = false;
if (isScrolling()
- && (isOver || (isDown && x >= 0 && x < getWidth()))
+ && (isOver || (isDown && ((unsigned int) x) < (unsigned int) getWidth()))
&& ((isScrollZoneActive (false) && y < scrollZone)
|| (isScrollZoneActive (true) && y > getHeight() - scrollZone)))
{
diff --git a/src/juce_appframework/gui/components/special/juce_AudioDeviceSelectorComponent.cpp b/src/juce_appframework/gui/components/special/juce_AudioDeviceSelectorComponent.cpp
index bcf6ee3f67..d746d655a3 100644
--- a/src/juce_appframework/gui/components/special/juce_AudioDeviceSelectorComponent.cpp
+++ b/src/juce_appframework/gui/components/special/juce_AudioDeviceSelectorComponent.cpp
@@ -103,7 +103,7 @@ public:
int width, int height,
bool rowIsSelected)
{
- if (row >= 0 && row < items.size())
+ if (((unsigned int) row) < (unsigned int) items.size())
{
if (rowIsSelected)
g.fillAll (findColour (TextEditor::highlightColourId)
@@ -190,7 +190,7 @@ private:
void flipEnablement (const int row)
{
- if (row >= 0 && row < items.size())
+ if (((unsigned int) row) < (unsigned int) items.size())
{
AudioIODevice* const audioDevice = deviceManager.getCurrentAudioDevice();
diff --git a/src/juce_appframework/gui/components/special/juce_MagnifierComponent.cpp b/src/juce_appframework/gui/components/special/juce_MagnifierComponent.cpp
index faef56dffb..e11dbd618d 100644
--- a/src/juce_appframework/gui/components/special/juce_MagnifierComponent.cpp
+++ b/src/juce_appframework/gui/components/special/juce_MagnifierComponent.cpp
@@ -113,9 +113,8 @@ public:
bool contains (int x, int y, bool) const
{
- return x >= 0 && y >= 0
- && x < magnifierComp->getWidth()
- && y < magnifierComp->getHeight();
+ return ((unsigned int) x) < (unsigned int) magnifierComp->getWidth()
+ && ((unsigned int) y) < (unsigned int) magnifierComp->getHeight();
}
void repaint (int x, int y, int w, int h)
diff --git a/src/juce_appframework/gui/components/windows/juce_ComponentPeer.cpp b/src/juce_appframework/gui/components/windows/juce_ComponentPeer.cpp
index 9c0d1f431f..5fb7fe353f 100644
--- a/src/juce_appframework/gui/components/windows/juce_ComponentPeer.cpp
+++ b/src/juce_appframework/gui/components/windows/juce_ComponentPeer.cpp
@@ -357,10 +357,8 @@ void ComponentPeer::sendFakeMouseMove() throw()
int x, y;
component->getMouseXYRelative (x, y);
- if (x >= 0
- && y >= 0
- && x < component->getWidth()
- && y < component->getHeight()
+ if (((unsigned int) x) < (unsigned int) component->getWidth()
+ && ((unsigned int) y) < (unsigned int) component->getHeight()
&& contains (x, y, false))
{
postMessage (new Message (fakeMouseMoveMessage, x, y, 0));
diff --git a/src/juce_appframework/gui/graphics/fonts/juce_GlyphArrangement.cpp b/src/juce_appframework/gui/graphics/fonts/juce_GlyphArrangement.cpp
index df2572cfd6..1020bdb465 100644
--- a/src/juce_appframework/gui/graphics/fonts/juce_GlyphArrangement.cpp
+++ b/src/juce_appframework/gui/graphics/fonts/juce_GlyphArrangement.cpp
@@ -435,7 +435,7 @@ void GlyphArrangement::ensureNumGlyphsAllocated (const int minGlyphs) throw()
void GlyphArrangement::incGlyphRefCount (const int i) const throw()
{
- jassert (i >= 0 && i < numGlyphs);
+ jassert (((unsigned int) i) < (unsigned int) numGlyphs);
if (glyphs[i].glyphInfo != 0 && glyphs[i].glyphInfo->getTypeface() != 0)
glyphs[i].glyphInfo->getTypeface()->incReferenceCount();
@@ -457,7 +457,7 @@ void GlyphArrangement::clear() throw()
PositionedGlyph& GlyphArrangement::getGlyph (const int index) const throw()
{
- jassert (index >= 0 && index < numGlyphs);
+ jassert (((unsigned int) index) < (unsigned int) numGlyphs);
return glyphs [index];
}
@@ -966,7 +966,7 @@ void GlyphArrangement::moveRangeOfGlyphs (int startIndex, int num,
while (--num >= 0)
{
- jassert (startIndex >= 0 && startIndex <= numGlyphs);
+ jassert (((unsigned int) startIndex) <= (unsigned int) numGlyphs);
glyphs [startIndex++].moveBy (dx, dy);
}
}
@@ -986,7 +986,7 @@ void GlyphArrangement::stretchRangeOfGlyphs (int startIndex, int num,
while (--num >= 0)
{
- jassert (startIndex >= 0 && startIndex <= numGlyphs);
+ jassert (((unsigned int) startIndex) <= (unsigned int) numGlyphs);
PositionedGlyph& pg = glyphs[startIndex++];
pg.x = xAnchor + (pg.x - xAnchor) * horizontalScaleFactor;
diff --git a/src/juce_appframework/gui/graphics/geometry/juce_RectangleList.cpp b/src/juce_appframework/gui/graphics/geometry/juce_RectangleList.cpp
index d8841f3281..8928ab56de 100644
--- a/src/juce_appframework/gui/graphics/geometry/juce_RectangleList.cpp
+++ b/src/juce_appframework/gui/graphics/geometry/juce_RectangleList.cpp
@@ -73,10 +73,10 @@ void RectangleList::clear() throw()
const Rectangle RectangleList::getRectangle (const int index) const throw()
{
- if (index >= 0 && index < rects.size())
+ if (((unsigned int) index) < (unsigned int) rects.size())
return rects.getReference (index);
- else
- return Rectangle();
+
+ return Rectangle();
}
bool RectangleList::isEmpty() const throw()
diff --git a/src/juce_appframework/gui/graphics/imaging/juce_Image.cpp b/src/juce_appframework/gui/graphics/imaging/juce_Image.cpp
index 859d406cbc..482b66c434 100644
--- a/src/juce_appframework/gui/graphics/imaging/juce_Image.cpp
+++ b/src/juce_appframework/gui/graphics/imaging/juce_Image.cpp
@@ -229,7 +229,8 @@ const Colour Image::getPixelAt (const int x, const int y) const
{
Colour c;
- if (x >= 0 && x < imageWidth && y >= 0 && y < imageHeight)
+ if (((unsigned int) x) < (unsigned int) imageWidth
+ && ((unsigned int) y) < (unsigned int) imageHeight)
{
int ls, ps;
const uint8* const pixels = lockPixelDataReadOnly (x, y, 1, 1, ls, ps);
@@ -254,7 +255,8 @@ const Colour Image::getPixelAt (const int x, const int y) const
void Image::setPixelAt (const int x, const int y,
const Colour& colour)
{
- if (x >= 0 && x < imageWidth && y >= 0 && y < imageHeight)
+ if (((unsigned int) x) < (unsigned int) imageWidth
+ && ((unsigned int) y) < (unsigned int) imageHeight)
{
int ls, ps;
uint8* const pixels = lockPixelDataReadWrite (x, y, 1, 1, ls, ps);
@@ -274,7 +276,9 @@ void Image::setPixelAt (const int x, const int y,
void Image::multiplyAlphaAt (const int x, const int y,
const float multiplier)
{
- if (x >= 0 && x < imageWidth && y >= 0 && y < imageHeight && hasAlphaChannel())
+ if (((unsigned int) x) < (unsigned int) imageWidth
+ && ((unsigned int) y) < (unsigned int) imageHeight
+ && hasAlphaChannel())
{
int ls, ps;
uint8* const pixels = lockPixelDataReadWrite (x, y, 1, 1, ls, ps);
diff --git a/src/juce_appframework/gui/graphics/imaging/juce_ImageConvolutionKernel.cpp b/src/juce_appframework/gui/graphics/imaging/juce_ImageConvolutionKernel.cpp
index 20c7afaab5..18344d2d14 100644
--- a/src/juce_appframework/gui/graphics/imaging/juce_ImageConvolutionKernel.cpp
+++ b/src/juce_appframework/gui/graphics/imaging/juce_ImageConvolutionKernel.cpp
@@ -61,8 +61,8 @@ void ImageConvolutionKernel::setKernelValue (const int x,
const int y,
const float value) throw()
{
- if (x >= 0 && x < size
- && y >= 0 && y < size)
+ if (((unsigned int) x) < (unsigned int) size
+ && ((unsigned int) y) < (unsigned int) size)
{
values[x][y] = value;
}
diff --git a/src/juce_core/basics/juce_MathsFunctions.h b/src/juce_core/basics/juce_MathsFunctions.h
index 4f58f1a63a..15f5806041 100644
--- a/src/juce_core/basics/juce_MathsFunctions.h
+++ b/src/juce_core/basics/juce_MathsFunctions.h
@@ -160,9 +160,13 @@ inline double jmin (const double a, const double b, const double c, const double
//==============================================================================
-/** Constrains a value to keep it within a given limit.
+/** Constrains a value to keep it within a given range.
- Note that this expects that lowerLimit <= upperLimit. If this isn't true,
+ This will check that the specified value lies between the lower and upper bounds
+ specified, and if not, will return the nearest value that would be in-range. Effectively,
+ it's like calling jmax (lowerLimit, jmin (upperLimit, value)).
+
+ Note that it expects that lowerLimit <= upperLimit. If this isn't true,
the results will be unpredictable.
@param lowerLimit the minimum value to return
@@ -170,6 +174,7 @@ inline double jmin (const double a, const double b, const double c, const double
@param valueToConstrain the value to try to return
@returns the closest value to valueToConstrain which lies between lowerLimit
and upperLimit (inclusive)
+ @see jlimit0To, jmin, jmax
*/
template
inline Type jlimit (const Type lowerLimit,
diff --git a/src/juce_core/basics/juce_SystemStats.h b/src/juce_core/basics/juce_SystemStats.h
index 5ee193fe8a..5d3a3ca8b9 100644
--- a/src/juce_core/basics/juce_SystemStats.h
+++ b/src/juce_core/basics/juce_SystemStats.h
@@ -87,6 +87,10 @@ public:
*/
static const String getOperatingSystemName() throw();
+ /** Returns true if the OS is 64-bit, or false for a 32-bit OS.
+ */
+ static bool isOperatingSystem64Bit() throw();
+
//==============================================================================
// CPU and memory information..
diff --git a/src/juce_core/containers/juce_Array.h b/src/juce_core/containers/juce_Array.h
index b9201f5c03..d905828769 100644
--- a/src/juce_core/containers/juce_Array.h
+++ b/src/juce_core/containers/juce_Array.h
@@ -231,8 +231,9 @@ public:
inline ElementType operator[] (const int index) const throw()
{
lock.enter();
- const ElementType result = (index >= 0 && index < numUsed) ? this->elements [index]
- : ElementType();
+ const ElementType result = (((unsigned int) index) < (unsigned int) numUsed)
+ ? this->elements [index]
+ : ElementType();
lock.exit();
return result;
@@ -250,7 +251,7 @@ public:
inline ElementType getUnchecked (const int index) const throw()
{
lock.enter();
- jassert (index >= 0 && index < numUsed);
+ jassert (((unsigned int) index) < (unsigned int) numUsed);
const ElementType result = this->elements [index];
lock.exit();
@@ -268,7 +269,7 @@ public:
*/
inline ElementType& getReference (const int index) const throw()
{
- jassert (index >= 0 && index < numUsed);
+ jassert (((unsigned int) index) < (unsigned int) numUsed);
return this->elements [index];
}
@@ -405,11 +406,8 @@ public:
lock.enter();
this->ensureAllocatedSize (numUsed + 1);
- if (indexToInsertAt >= 0)
+ if (((unsigned int) indexToInsertAt) < (unsigned int) numUsed)
{
- if (indexToInsertAt > numUsed)
- indexToInsertAt = numUsed;
-
ElementType* const insertPos = this->elements + indexToInsertAt;
const int numberToMove = numUsed - indexToInsertAt;
@@ -447,7 +445,7 @@ public:
lock.enter();
this->ensureAllocatedSize (numUsed + numberOfTimesToInsertIt);
- if (indexToInsertAt >= 0 && indexToInsertAt < numUsed)
+ if (((unsigned int) indexToInsertAt) < (unsigned int) numUsed)
{
ElementType* insertPos = this->elements + indexToInsertAt;
const int numberToMove = numUsed - indexToInsertAt;
@@ -489,7 +487,7 @@ public:
lock.enter();
this->ensureAllocatedSize (numUsed + numberOfElements);
- if (indexToInsertAt >= 0 && indexToInsertAt < numUsed)
+ if (((unsigned int) indexToInsertAt) < (unsigned int) numUsed)
{
ElementType* insertPos = this->elements + indexToInsertAt;
const int numberToMove = numUsed - indexToInsertAt;
@@ -573,7 +571,7 @@ public:
const ElementType newValue) throw()
{
lock.enter();
- jassert (indexToChange >= 0 && indexToChange < numUsed);
+ jassert (((unsigned int) indexToChange) < (unsigned int) numUsed);
this->elements [indexToChange] = newValue;
lock.exit();
}
@@ -737,7 +735,7 @@ public:
{
lock.enter();
- if (indexToRemove >= 0 && indexToRemove < numUsed)
+ if (((unsigned int) indexToRemove) < (unsigned int) numUsed)
{
--numUsed;
@@ -916,8 +914,8 @@ public:
{
lock.enter();
- if (index1 >= 0 && index1 < numUsed
- && index2 >= 0 && index2 < numUsed)
+ if (((unsigned int) index1) < (unsigned int) numUsed
+ && ((unsigned int) index2) < (unsigned int) numUsed)
{
swapVariables (this->elements [index1],
this->elements [index2]);
@@ -947,9 +945,9 @@ public:
{
lock.enter();
- if (currentIndex >= 0 && currentIndex < numUsed)
+ if (((unsigned int) currentIndex) < (unsigned int) numUsed)
{
- if (newIndex < 0 || newIndex > numUsed - 1)
+ if (((unsigned int) newIndex) >= (unsigned int) numUsed)
newIndex = numUsed - 1;
const ElementType value = this->elements [currentIndex];
diff --git a/src/juce_core/containers/juce_BitArray.cpp b/src/juce_core/containers/juce_BitArray.cpp
index 8104ea1fd1..ca444c60b3 100644
--- a/src/juce_core/containers/juce_BitArray.cpp
+++ b/src/juce_core/containers/juce_BitArray.cpp
@@ -160,7 +160,7 @@ bool BitArray::operator!= (const BitArray& other) const throw()
bool BitArray::operator[] (const int bit) const throw()
{
- return (bit >= 0 && bit <= highestBit)
+ return (((unsigned int) bit) <= (unsigned int) highestBit)
&& ((values [bit >> 5] & (1 << (bit & 31))) != 0);
}
@@ -211,7 +211,7 @@ void BitArray::setBit (const int bit,
void BitArray::clearBit (const int bit) throw()
{
- if (bit >= 0 && bit <= highestBit)
+ if (((unsigned int) bit) <= (unsigned int) highestBit)
values [bit >> 5] &= ~(1 << (bit & 31));
}
@@ -922,7 +922,7 @@ void BitArray::parseString (const String& text,
const tchar c = *t++;
const int digit = CharacterFunctions::getHexDigitValue (c);
- if (digit >= 0 && digit < base)
+ if (((unsigned int) digit) < (unsigned int) base)
{
shiftBits (bits);
add (digit);
diff --git a/src/juce_core/containers/juce_OwnedArray.h b/src/juce_core/containers/juce_OwnedArray.h
index a5fb022011..719e9fb071 100644
--- a/src/juce_core/containers/juce_OwnedArray.h
+++ b/src/juce_core/containers/juce_OwnedArray.h
@@ -124,8 +124,9 @@ public:
inline ObjectClass* operator[] (const int index) const throw()
{
lock.enter();
- ObjectClass* const result = (index >= 0 && index < numUsed) ? this->elements [index]
- : (ObjectClass*) 0;
+ ObjectClass* const result = (((unsigned int) index) < (unsigned int) numUsed)
+ ? this->elements [index]
+ : (ObjectClass*) 0;
lock.exit();
return result;
@@ -139,7 +140,7 @@ public:
inline ObjectClass* getUnchecked (const int index) const throw()
{
lock.enter();
- jassert (index >= 0 && index < numUsed);
+ jassert (((unsigned int) index) < (unsigned int) numUsed);
ObjectClass* const result = this->elements [index];
lock.exit();
@@ -464,7 +465,7 @@ public:
lock.enter();
ObjectClass* toDelete = 0;
- if (indexToRemove >= 0 && indexToRemove < numUsed)
+ if (((unsigned int) indexToRemove) < (unsigned int) numUsed)
{
ObjectClass** const e = this->elements + indexToRemove;
@@ -598,8 +599,8 @@ public:
{
lock.enter();
- if (index1 >= 0 && index1 < numUsed
- && index2 >= 0 && index2 < numUsed)
+ if (((unsigned int) index1) < (unsigned int) numUsed
+ && ((unsigned int) index2) < (unsigned int) numUsed)
{
swapVariables (this->elements [index1],
this->elements [index2]);
@@ -628,9 +629,9 @@ public:
{
lock.enter();
- if (currentIndex >= 0 && currentIndex < numUsed)
+ if (((unsigned int) currentIndex) < (unsigned int) numUsed)
{
- if (newIndex < 0 || newIndex >= numUsed)
+ if (((unsigned int) newIndex) >= (unsigned int) numUsed)
newIndex = numUsed - 1;
ObjectClass* const value = this->elements [currentIndex];
diff --git a/src/juce_core/containers/juce_ReferenceCountedArray.h b/src/juce_core/containers/juce_ReferenceCountedArray.h
index 68aeaff5bf..f90545d608 100644
--- a/src/juce_core/containers/juce_ReferenceCountedArray.h
+++ b/src/juce_core/containers/juce_ReferenceCountedArray.h
@@ -161,8 +161,9 @@ public:
inline ObjectClass* operator[] (const int index) const throw()
{
lock.enter();
- ObjectClass* const result = (index >= 0 && index < numUsed) ? this->elements [index]
- : (ObjectClass*) 0;
+ ObjectClass* const result = (((unsigned int) index) < (unsigned int) numUsed)
+ ? this->elements [index]
+ : (ObjectClass*) 0;
lock.exit();
return result;
}
@@ -175,7 +176,7 @@ public:
inline ObjectClass* getUnchecked (const int index) const throw()
{
lock.enter();
- jassert (index >= 0 && index < numUsed);
+ jassert (((unsigned int) index) < (unsigned int) numUsed);
ObjectClass* const result = this->elements [index];
lock.exit();
return result;
@@ -302,6 +303,7 @@ public:
if (indexToInsertAt >= 0)
{
lock.enter();
+
if (indexToInsertAt > numUsed)
indexToInsertAt = numUsed;
@@ -458,7 +460,7 @@ public:
{
lock.enter();
- if (indexToRemove >= 0 && indexToRemove < numUsed)
+ if (((unsigned int) indexToRemove) < (unsigned int) numUsed)
{
ObjectClass** const e = this->elements + indexToRemove;
@@ -577,8 +579,8 @@ public:
{
lock.enter();
- if (index1 >= 0 && index1 < numUsed
- && index2 >= 0 && index2 < numUsed)
+ if (((unsigned int) index1) < (unsigned int) numUsed
+ && ((unsigned int) index2) < (unsigned int) numUsed)
{
swapVariables (this->elements [index1],
this->elements [index2]);
@@ -607,9 +609,9 @@ public:
{
lock.enter();
- if (currentIndex >= 0 && currentIndex < numUsed)
+ if (((unsigned int) currentIndex) < (unsigned int) numUsed)
{
- if (newIndex < 0 || newIndex > numUsed - 1)
+ if (((unsigned int) newIndex) >= (unsigned int) numUsed)
newIndex = numUsed - 1;
ObjectClass* const value = this->elements [currentIndex];
diff --git a/src/juce_core/containers/juce_SortedSet.h b/src/juce_core/containers/juce_SortedSet.h
index 864586d47d..1d671f433d 100644
--- a/src/juce_core/containers/juce_SortedSet.h
+++ b/src/juce_core/containers/juce_SortedSet.h
@@ -216,8 +216,9 @@ public:
inline ElementType operator[] (const int index) const throw()
{
lock.enter();
- const ElementType result = (index >= 0 && index < numUsed) ? this->elements [index]
- : (ElementType)0;
+ const ElementType result = (((unsigned int) index) < (unsigned int) numUsed)
+ ? this->elements [index]
+ : (ElementType)0;
lock.exit();
return result;
@@ -234,7 +235,7 @@ public:
inline ElementType getUnchecked (const int index) const throw()
{
lock.enter();
- jassert (index >= 0 && index < numUsed);
+ jassert (((unsigned int) index) < (unsigned int) numUsed);
const ElementType result = this->elements [index];
lock.exit();
@@ -471,7 +472,7 @@ public:
{
lock.enter();
- if (indexToRemove >= 0 && indexToRemove < numUsed)
+ if (((unsigned int) indexToRemove) < (unsigned int) numUsed)
{
--numUsed;
diff --git a/src/juce_core/containers/juce_SparseSet.h b/src/juce_core/containers/juce_SparseSet.h
index d1b7ef656f..e9fe6de2e1 100644
--- a/src/juce_core/containers/juce_SparseSet.h
+++ b/src/juce_core/containers/juce_SparseSet.h
@@ -160,7 +160,7 @@ public:
Type& startValue,
Type& numValues) const throw()
{
- if (rangeIndex >= 0 && rangeIndex < getNumRanges())
+ if (((unsigned int) rangeIndex) < (unsigned int) getNumRanges())
{
startValue = values [rangeIndex << 1];
numValues = values [(rangeIndex << 1) + 1] - startValue;
diff --git a/src/juce_core/text/juce_String.cpp b/src/juce_core/text/juce_String.cpp
index dd719f7e98..aea4155cb8 100644
--- a/src/juce_core/text/juce_String.cpp
+++ b/src/juce_core/text/juce_String.cpp
@@ -1431,7 +1431,7 @@ const String String::replaceCharacters (const String& charactersToReplace,
{
const int index = charactersToReplace.indexOfChar (*t);
- if (index >= 0 && index < len2)
+ if (((unsigned int) index) < (unsigned int) len2)
*t = charactersToInsertInstead [index];
++t;
@@ -1508,7 +1508,7 @@ const String String::toLowerCase() const throw()
//==============================================================================
tchar& String::operator[] (const int index) throw()
{
- jassert (index >= 0 && index <= length());
+ jassert (((unsigned int) index) <= (unsigned int) length());
dupeInternalIfMultiplyReferenced();
diff --git a/src/juce_core/text/juce_String.h b/src/juce_core/text/juce_String.h
index dacdf2a4a7..cffc1b5328 100644
--- a/src/juce_core/text/juce_String.h
+++ b/src/juce_core/text/juce_String.h
@@ -477,7 +477,7 @@ public:
No checks are made to see if the index is within a valid range, so be careful!
*/
- inline const tchar& operator[] (const int index) const throw() { jassert (index >= 0 && index <= length()); return text->text [index]; }
+ inline const tchar& operator[] (const int index) const throw() { jassert (((unsigned int) index) <= (unsigned int) length()); return text->text [index]; }
/** Returns a character from the string such that it can also be altered.
diff --git a/src/juce_core/text/juce_StringArray.cpp b/src/juce_core/text/juce_StringArray.cpp
index b6b88ef727..d26f046442 100644
--- a/src/juce_core/text/juce_StringArray.cpp
+++ b/src/juce_core/text/juce_StringArray.cpp
@@ -128,7 +128,7 @@ void StringArray::clear() throw()
const String& StringArray::operator[] (const int index) const throw()
{
- if (index >= 0 && index < strings.size())
+ if (((unsigned int) index) < (unsigned int) strings.size())
return *(const String*) (strings.getUnchecked (index));
return String::empty;
diff --git a/src/juce_core/threads/juce_ScopedTryLock.h b/src/juce_core/threads/juce_ScopedTryLock.h
new file mode 100644
index 0000000000..540b184f09
--- /dev/null
+++ b/src/juce_core/threads/juce_ScopedTryLock.h
@@ -0,0 +1,111 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library - "Jules' Utility Class Extensions"
+ Copyright 2004-7 by Raw Material Software ltd.
+
+ ------------------------------------------------------------------------------
+
+ JUCE can be redistributed and/or modified under the terms of the
+ GNU General Public License, as published by the Free Software Foundation;
+ either version 2 of the License, or (at your option) any later version.
+
+ JUCE is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with JUCE; if not, visit www.gnu.org/licenses or write to the
+ Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ Boston, MA 02111-1307 USA
+
+ ------------------------------------------------------------------------------
+
+ If you'd like to release a closed-source product which uses JUCE, commercial
+ licenses are also available: visit www.rawmaterialsoftware.com/juce for
+ more information.
+
+ ==============================================================================
+*/
+
+#ifndef __JUCE_SCOPEDTRYLOCK_JUCEHEADER__
+#define __JUCE_SCOPEDTRYLOCK_JUCEHEADER__
+
+#include "juce_CriticalSection.h"
+
+
+//==============================================================================
+/**
+ Automatically tries to lock and unlock a CriticalSection object.
+
+ Use one of these as a local variable to control access to a CriticalSection.
+
+ e.g. @code
+
+ CriticalSection myCriticalSection;
+
+ for (;;)
+ {
+ const ScopedTryLock myScopedTryLock (myCriticalSection);
+
+ // Unlike using a ScopedLock, this may fail to actually get the lock, so you
+ // should test this with the isLocked() method before doing your thread-unsafe
+ // action..
+ if (myScopedTryLock.isLocked())
+ {
+ ...do some stuff...
+ }
+ else
+ {
+ ..our attempt at locking failed because another thread had already locked it..
+ }
+
+ // myCriticalSection gets unlocked here (if it was locked)
+ }
+ @endcode
+
+ @see CriticalSection::tryEnter, ScopedLock, ScopedUnlock, ScopedReadLock
+*/
+class JUCE_API ScopedTryLock
+{
+public:
+ //==============================================================================
+ /** Creates a ScopedTryLock.
+
+ As soon as it is created, this will try to lock the CriticalSection, and
+ when the ScopedTryLock object is deleted, the CriticalSection will
+ be unlocked if the lock was successful.
+
+ Make sure this object is created and deleted by the same thread,
+ otherwise there are no guarantees what will happen! Best just to use it
+ as a local stack object, rather than creating one with the new() operator.
+ */
+ inline ScopedTryLock (const CriticalSection& lock) throw() : lock_ (lock), lockWasSuccessful (lock.tryEnter()) {}
+
+ /** Destructor.
+
+ The CriticalSection will be unlocked (if locked) when the destructor is called.
+
+ Make sure this object is created and deleted by the same thread,
+ otherwise there are no guarantees what will happen!
+ */
+ inline ~ScopedTryLock() throw() { if (lockWasSuccessful) lock_.exit(); }
+
+ /** Lock state
+
+ @return True if the CriticalSection is locked.
+ */
+ bool isLocked() const throw() { return lockWasSuccessful; }
+
+private:
+ //==============================================================================
+ const CriticalSection& lock_;
+ const bool lockWasSuccessful;
+
+ ScopedTryLock (const ScopedTryLock&);
+ const ScopedTryLock& operator= (const ScopedTryLock&);
+};
+
+
+#endif // __JUCE_SCOPEDTRYLOCK_JUCEHEADER__
diff --git a/src/juce_core_includes.h b/src/juce_core_includes.h
index b8b53ee4cf..8cd90ae215 100644
--- a/src/juce_core_includes.h
+++ b/src/juce_core_includes.h
@@ -221,6 +221,9 @@
#ifndef __JUCE_SCOPEDREADLOCK_JUCEHEADER__
#include "juce_core/threads/juce_ScopedReadLock.h"
#endif
+#ifndef __JUCE_SCOPEDTRYLOCK_JUCEHEADER__
+ #include "juce_core/threads/juce_ScopedTryLock.h"
+#endif
#ifndef __JUCE_SCOPEDWRITELOCK_JUCEHEADER__
#include "juce_core/threads/juce_ScopedWriteLock.h"
#endif