Browse Source

Minor code clean-ups.

tags/2021-05-28
Julian Storer 15 years ago
parent
commit
b67c077f0d
54 changed files with 441 additions and 363 deletions
  1. +122
    -112
      juce_amalgamated.cpp
  2. +96
    -70
      juce_amalgamated.h
  3. +1
    -1
      src/application/juce_ApplicationCommandInfo.h
  4. +1
    -1
      src/audio/audio_file_formats/juce_AudioThumbnailCache.h
  5. +1
    -1
      src/audio/devices/juce_AudioIODeviceType.h
  6. +1
    -1
      src/audio/devices/juce_MidiInput.h
  7. +5
    -0
      src/audio/dsp/juce_AudioDataConverters.h
  8. +39
    -28
      src/audio/midi/juce_MidiBuffer.cpp
  9. +5
    -2
      src/audio/midi/juce_MidiBuffer.h
  10. +26
    -28
      src/audio/midi/juce_MidiMessage.cpp
  11. +7
    -1
      src/audio/midi/juce_MidiMessage.h
  12. +8
    -8
      src/containers/juce_HeapBlock.h
  13. +1
    -1
      src/containers/juce_ValueTree.h
  14. +12
    -12
      src/core/juce_ByteOrder.h
  15. +1
    -1
      src/core/juce_Random.h
  16. +3
    -3
      src/cryptography/juce_MD5.h
  17. +6
    -0
      src/cryptography/juce_Primes.h
  18. +1
    -1
      src/cryptography/juce_RSAKey.h
  19. +1
    -1
      src/gui/components/buttons/juce_Button.h
  20. +1
    -1
      src/gui/components/buttons/juce_ImageButton.h
  21. +1
    -1
      src/gui/components/controls/juce_ComboBox.h
  22. +1
    -1
      src/gui/components/controls/juce_ProgressBar.h
  23. +1
    -1
      src/gui/components/controls/juce_Slider.h
  24. +2
    -2
      src/gui/components/controls/juce_TextEditor.h
  25. +1
    -1
      src/gui/components/juce_Component.h
  26. +1
    -1
      src/gui/components/keyboard/juce_KeyPressMappingSet.h
  27. +1
    -1
      src/gui/components/layout/juce_TabbedComponent.h
  28. +1
    -1
      src/gui/components/layout/juce_Viewport.h
  29. +1
    -1
      src/gui/components/mouse/juce_LassoComponent.h
  30. +1
    -1
      src/gui/components/special/juce_WebBrowserComponent.h
  31. +2
    -2
      src/gui/components/windows/juce_TooltipWindow.h
  32. +4
    -0
      src/gui/graphics/colour/juce_PixelFormats.h
  33. +1
    -1
      src/gui/graphics/contexts/juce_Graphics.h
  34. +3
    -5
      src/gui/graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp
  35. +2
    -2
      src/gui/graphics/fonts/juce_Typeface.h
  36. +1
    -1
      src/gui/graphics/geometry/juce_BorderSize.h
  37. +1
    -1
      src/io/files/juce_FileInputStream.h
  38. +12
    -10
      src/io/streams/juce_InputStream.cpp
  39. +2
    -2
      src/native/linux/juce_linux_Audio.cpp
  40. +10
    -10
      src/native/linux/juce_linux_Windowing.cpp
  41. +1
    -1
      src/native/mac/juce_mac_CoreMidi.cpp
  42. +1
    -1
      src/native/windows/juce_win32_Messaging.cpp
  43. +27
    -26
      src/text/juce_String.cpp
  44. +1
    -1
      src/text/juce_XmlElement.h
  45. +1
    -1
      src/threads/juce_InterProcessLock.h
  46. +6
    -0
      src/threads/juce_Process.h
  47. +4
    -4
      src/threads/juce_ScopedLock.h
  48. +2
    -2
      src/threads/juce_ScopedReadLock.h
  49. +3
    -3
      src/threads/juce_ScopedTryLock.h
  50. +2
    -2
      src/threads/juce_ScopedWriteLock.h
  51. +3
    -1
      src/threads/juce_Thread.h
  52. +1
    -1
      src/threads/juce_ThreadPool.h
  53. +1
    -1
      src/threads/juce_TimeSliceThread.h
  54. +1
    -1
      src/utilities/juce_SelectedItemSet.h

+ 122
- 112
juce_amalgamated.cpp View File

@@ -5085,35 +5085,37 @@ int InputStream::readCompressedInt()


int64 InputStream::readInt64() int64 InputStream::readInt64()
{ {
char temp[8];
union { uint8 asBytes[8]; uint64 asInt64; } n;


if (read (temp, 8) == 8)
return (int64) ByteOrder::swapIfBigEndian (*reinterpret_cast <uint64*> (temp));
if (read (n.asBytes, 8) == 8)
return (int64) ByteOrder::swapIfBigEndian (n.asInt64);


return 0; return 0;
} }


int64 InputStream::readInt64BigEndian() int64 InputStream::readInt64BigEndian()
{ {
char temp[8];
union { uint8 asBytes[8]; uint64 asInt64; } n;


if (read (temp, 8) == 8)
return (int64) ByteOrder::swapIfLittleEndian (*reinterpret_cast <uint64*> (temp));
if (read (n.asBytes, 8) == 8)
return (int64) ByteOrder::swapIfLittleEndian (n.asInt64);


return 0; return 0;
} }


float InputStream::readFloat() float InputStream::readFloat()
{ {
union { int asInt; float asFloat; } n;
n.asInt = readInt();
// the union below relies on these types being the same size...
static_jassert (sizeof (int32) == sizeof (float));
union { int32 asInt; float asFloat; } n;
n.asInt = (int32) readInt();
return n.asFloat; return n.asFloat;
} }


float InputStream::readFloatBigEndian() float InputStream::readFloatBigEndian()
{ {
union { int asInt; float asFloat; } n;
n.asInt = readIntBigEndian();
union { int32 asInt; float asFloat; } n;
n.asInt = (int32) readIntBigEndian();
return n.asFloat; return n.asFloat;
} }


@@ -10322,10 +10324,10 @@ public:
static StringHolder empty; static StringHolder empty;


private: private:
static inline StringHolder* bufferFromText (juce_wchar* const text) throw()
static inline StringHolder* bufferFromText (void* const text) throw()
{ {
// (Can't use offsetof() here because of warnings about this not being a POD) // (Can't use offsetof() here because of warnings about this not being a POD)
return reinterpret_cast <StringHolder*> (reinterpret_cast <char*> (text)
return reinterpret_cast <StringHolder*> (static_cast <char*> (text)
- (reinterpret_cast <size_t> (reinterpret_cast <StringHolder*> (1)->text) - 1)); - (reinterpret_cast <size_t> (reinterpret_cast <StringHolder*> (1)->text) - 1));
} }
}; };
@@ -11533,9 +11535,7 @@ const String String::substring (int start, int end) const
return empty; return empty;


int len = 0; int len = 0;
const juce_wchar* const t = text;

while (len <= end && t [len] != 0)
while (len <= end && text [len] != 0)
++len; ++len;


if (end >= len) if (end >= len)
@@ -11558,8 +11558,8 @@ const String String::substring (const int start) const


if (start >= len) if (start >= len)
return empty; return empty;
else
return String (text + start, len - start);
return String (text + start, len - start);
} }


const String String::dropLastCharacters (const int numberToDrop) const const String String::dropLastCharacters (const int numberToDrop) const
@@ -11578,11 +11578,10 @@ const String String::fromFirstOccurrenceOf (const String& sub,
{ {
const int i = ignoreCase ? indexOfIgnoreCase (sub) const int i = ignoreCase ? indexOfIgnoreCase (sub)
: indexOf (sub); : indexOf (sub);

if (i < 0) if (i < 0)
return empty; return empty;
else
return substring (includeSubString ? i : i + sub.length());
return substring (includeSubString ? i : i + sub.length());
} }


const String String::fromLastOccurrenceOf (const String& sub, const String String::fromLastOccurrenceOf (const String& sub,
@@ -11591,7 +11590,6 @@ const String String::fromLastOccurrenceOf (const String& sub,
{ {
const int i = ignoreCase ? lastIndexOfIgnoreCase (sub) const int i = ignoreCase ? lastIndexOfIgnoreCase (sub)
: lastIndexOf (sub); : lastIndexOf (sub);

if (i < 0) if (i < 0)
return *this; return *this;


@@ -11604,7 +11602,6 @@ const String String::upToFirstOccurrenceOf (const String& sub,
{ {
const int i = ignoreCase ? indexOfIgnoreCase (sub) const int i = ignoreCase ? indexOfIgnoreCase (sub)
: indexOf (sub); : indexOf (sub);

if (i < 0) if (i < 0)
return *this; return *this;


@@ -11685,8 +11682,8 @@ const String String::trim() const
return empty; return empty;
else if (start > 0 || end < len) else if (start > 0 || end < len)
return String (text + start, end - start); return String (text + start, end - start);
else
return *this;
return *this;
} }


const String String::trimStart() const const String String::trimStart() const
@@ -11701,8 +11698,8 @@ const String String::trimStart() const


if (t == text) if (t == text)
return *this; return *this;
else
return String (t);
return String (t);
} }


const String String::trimEnd() const const String String::trimEnd() const
@@ -11720,9 +11717,6 @@ const String String::trimEnd() const


const String String::trimCharactersAtStart (const String& charactersToTrim) const const String String::trimCharactersAtStart (const String& charactersToTrim) const
{ {
if (isEmpty())
return empty;

const juce_wchar* t = text; const juce_wchar* t = text;


while (charactersToTrim.containsChar (*t)) while (charactersToTrim.containsChar (*t))
@@ -11730,8 +11724,8 @@ const String String::trimCharactersAtStart (const String& charactersToTrim) cons


if (t == text) if (t == text)
return *this; return *this;
else
return String (t);
return String (t);
} }


const String String::trimCharactersAtEnd (const String& charactersToTrim) const const String String::trimCharactersAtEnd (const String& charactersToTrim) const
@@ -11791,7 +11785,17 @@ const String String::removeCharacters (const String& charactersToRemove) const


const String String::initialSectionContainingOnly (const String& permittedCharacters) const const String String::initialSectionContainingOnly (const String& permittedCharacters) const
{ {
return substring (0, CharacterFunctions::getIntialSectionContainingOnly (text, permittedCharacters.text));
int i = 0;

for (;;)
{
if (! permittedCharacters.containsChar (text[i]))
break;

++i;
}

return substring (0, i);
} }


const String String::initialSectionNotContaining (const String& charactersToStopAt) const const String String::initialSectionNotContaining (const String& charactersToStopAt) const
@@ -12104,7 +12108,7 @@ const char* String::toUTF8() const
String* const mutableThis = const_cast <String*> (this); String* const mutableThis = const_cast <String*> (this);
mutableThis->text = StringHolder::makeUniqueWithSize (mutableThis->text, currentLen + 1 + utf8BytesNeeded / sizeof (juce_wchar)); mutableThis->text = StringHolder::makeUniqueWithSize (mutableThis->text, currentLen + 1 + utf8BytesNeeded / sizeof (juce_wchar));


char* const otherCopy = (char*) (text + currentLen);
char* const otherCopy = reinterpret_cast <char*> (text + currentLen);
copyToUTF8 (otherCopy, std::numeric_limits<int>::max()); copyToUTF8 (otherCopy, std::numeric_limits<int>::max());


return otherCopy; return otherCopy;
@@ -12291,12 +12295,11 @@ const char* String::toCString() const
} }
else else
{ {
int len = length();

const int len = length();
String* const mutableThis = const_cast <String*> (this); String* const mutableThis = const_cast <String*> (this);
mutableThis->text = StringHolder::makeUniqueWithSize (mutableThis->text, (len + 1) * 2); mutableThis->text = StringHolder::makeUniqueWithSize (mutableThis->text, (len + 1) * 2);


char* otherCopy = (char*) (text + len + 1);
char* otherCopy = reinterpret_cast <char*> (text + len + 1);
CharacterFunctions::copy (otherCopy, text, len); CharacterFunctions::copy (otherCopy, text, len);
otherCopy [len] = 0; otherCopy [len] = 0;
return otherCopy; return otherCopy;
@@ -26339,6 +26342,26 @@ MidiBuffer::~MidiBuffer() throw()
{ {
} }


inline uint8* MidiBuffer::getData() const throw()
{
return static_cast <uint8*> (data.getData());
}

inline int MidiBuffer::getEventTime (const void* const d) throw()
{
return *static_cast <const int*> (d);
}

inline uint16 MidiBuffer::getEventDataSize (const void* const d) throw()
{
return *reinterpret_cast <const uint16*> (static_cast <const char*> (d) + sizeof (int));
}

inline uint16 MidiBuffer::getEventTotalSize (const void* const d) throw()
{
return getEventDataSize (d) + sizeof (int) + sizeof (uint16);
}

void MidiBuffer::clear() throw() void MidiBuffer::clear() throw()
{ {
bytesUsed = 0; bytesUsed = 0;
@@ -26406,23 +26429,23 @@ void MidiBuffer::addEvent (const uint8* const newData,


if (numBytes > 0) if (numBytes > 0)
{ {
int spaceNeeded = bytesUsed + numBytes + 6;
int spaceNeeded = bytesUsed + numBytes + sizeof (int) + sizeof (uint16);
data.ensureSize ((spaceNeeded + spaceNeeded / 2 + 8) & ~7); data.ensureSize ((spaceNeeded + spaceNeeded / 2 + 8) & ~7);


uint8* d = findEventAfter (getData(), sampleNumber); uint8* d = findEventAfter (getData(), sampleNumber);
const int bytesToMove = bytesUsed - (int) (d - getData()); const int bytesToMove = bytesUsed - (int) (d - getData());


if (bytesToMove > 0) if (bytesToMove > 0)
memmove (d + numBytes + 6, d, bytesToMove);
memmove (d + numBytes + sizeof (int) + sizeof (uint16), d, bytesToMove);


*reinterpret_cast <int*> (d) = sampleNumber; *reinterpret_cast <int*> (d) = sampleNumber;
d += 4;
d += sizeof (int);
*reinterpret_cast <uint16*> (d) = (uint16) numBytes; *reinterpret_cast <uint16*> (d) = (uint16) numBytes;
d += 2;
d += sizeof (uint16);


memcpy (d, newData, numBytes); memcpy (d, newData, numBytes);


bytesUsed += numBytes + 6;
bytesUsed += numBytes + sizeof (int) + sizeof (uint16);
} }
} }


@@ -26457,8 +26480,7 @@ int MidiBuffer::getNumEvents() const throw()


while (d < end) while (d < end)
{ {
d += 4;
d += 2 + *reinterpret_cast <const uint16*> (d);
d += getEventTotalSize (d);
++n; ++n;
} }


@@ -26467,7 +26489,7 @@ int MidiBuffer::getNumEvents() const throw()


int MidiBuffer::getFirstEventTime() const throw() int MidiBuffer::getFirstEventTime() const throw()
{ {
return (bytesUsed > 0) ? *reinterpret_cast <const int*> (data.getData()) : 0;
return bytesUsed > 0 ? getEventTime (data.getData()) : 0;
} }


int MidiBuffer::getLastEventTime() const throw() int MidiBuffer::getLastEventTime() const throw()
@@ -26480,10 +26502,10 @@ int MidiBuffer::getLastEventTime() const throw()


for (;;) for (;;)
{ {
const uint8* nextOne = d + 6 + *reinterpret_cast <const uint16*> (d + 4);
const uint8* const nextOne = d + getEventTotalSize (d);


if (nextOne >= endData) if (nextOne >= endData)
return *reinterpret_cast <const int*> (d);
return getEventTime (d);


d = nextOne; d = nextOne;
} }
@@ -26493,11 +26515,8 @@ uint8* MidiBuffer::findEventAfter (uint8* d, const int samplePosition) const thr
{ {
const uint8* const endData = getData() + bytesUsed; const uint8* const endData = getData() + bytesUsed;


while (d < endData && *reinterpret_cast <const int*> (d) <= samplePosition)
{
d += 4;
d += 2 + *reinterpret_cast <const uint16*> (d);
}
while (d < endData && getEventTime (d) <= samplePosition)
d += getEventTotalSize (d);


return d; return d;
} }
@@ -26517,11 +26536,8 @@ void MidiBuffer::Iterator::setNextSamplePosition (const int samplePosition) thro
data = buffer.getData(); data = buffer.getData();
const uint8* dataEnd = data + buffer.bytesUsed; const uint8* dataEnd = data + buffer.bytesUsed;


while (data < dataEnd && *reinterpret_cast <const int*> (data) < samplePosition)
{
data += 4;
data += 2 + *(uint16*) data;
}
while (data < dataEnd && getEventTime (data) < samplePosition)
data += getEventTotalSize (data);
} }


bool MidiBuffer::Iterator::getNextEvent (const uint8* &midiData, int& numBytes, int& samplePosition) throw() bool MidiBuffer::Iterator::getNextEvent (const uint8* &midiData, int& numBytes, int& samplePosition) throw()
@@ -26529,10 +26545,9 @@ bool MidiBuffer::Iterator::getNextEvent (const uint8* &midiData, int& numBytes,
if (data >= buffer.getData() + buffer.bytesUsed) if (data >= buffer.getData() + buffer.bytesUsed)
return false; return false;


samplePosition = *reinterpret_cast <const int*> (data);
data += 4;
numBytes = *reinterpret_cast <const uint16*> (data);
data += 2;
samplePosition = getEventTime (data);
numBytes = getEventDataSize (data);
data += sizeof (int) + sizeof (uint16);
midiData = data; midiData = data;
data += numBytes; data += numBytes;


@@ -26544,10 +26559,9 @@ bool MidiBuffer::Iterator::getNextEvent (MidiMessage& result, int& samplePositio
if (data >= buffer.getData() + buffer.bytesUsed) if (data >= buffer.getData() + buffer.bytesUsed)
return false; return false;


samplePosition = *reinterpret_cast <const int*> (data);
data += 4;
const int numBytes = *reinterpret_cast <const uint16*> (data);
data += 2;
samplePosition = getEventTime (data);
const int numBytes = getEventDataSize (data);
data += sizeof (int) + sizeof (uint16);
result = MidiMessage (data, numBytes, samplePosition); result = MidiMessage (data, numBytes, samplePosition);
data += numBytes; data += numBytes;


@@ -27189,26 +27203,24 @@ int MidiMessage::getMessageLengthFromFirstByte (const uint8 firstByte) throw()


MidiMessage::MidiMessage (const void* const d, const int dataSize, const double t) MidiMessage::MidiMessage (const void* const d, const int dataSize, const double t)
: timeStamp (t), : timeStamp (t),
message (0),
size (dataSize) size (dataSize)
{ {
jassert (dataSize > 0); jassert (dataSize > 0);


if (dataSize <= 4) if (dataSize <= 4)
data = (uint8*) &message;
data = static_cast<uint8*> (preallocatedData.asBytes);
else else
data = (uint8*) juce_malloc (dataSize);
data = static_cast<uint8*> (juce_malloc (dataSize));


memcpy (data, d, dataSize); memcpy (data, d, dataSize);


// check that the length matches the data.. // check that the length matches the data..
jassert (size > 3 || *reinterpret_cast<const uint8*> (d) >= 0xf0
|| getMessageLengthFromFirstByte (*reinterpret_cast<const uint8*> (d)) == size);
jassert (size > 3 || data[0] >= 0xf0 || getMessageLengthFromFirstByte (data[0]) == size);
} }


MidiMessage::MidiMessage (const int byte1, const double t) throw() MidiMessage::MidiMessage (const int byte1, const double t) throw()
: timeStamp (t), : timeStamp (t),
data ((uint8*) &message),
data (static_cast<uint8*> (preallocatedData.asBytes)),
size (1) size (1)
{ {
data[0] = (uint8) byte1; data[0] = (uint8) byte1;
@@ -27219,7 +27231,7 @@ MidiMessage::MidiMessage (const int byte1, const double t) throw()


MidiMessage::MidiMessage (const int byte1, const int byte2, const double t) throw() MidiMessage::MidiMessage (const int byte1, const int byte2, const double t) throw()
: timeStamp (t), : timeStamp (t),
data ((uint8*) &message),
data (static_cast<uint8*> (preallocatedData.asBytes)),
size (2) size (2)
{ {
data[0] = (uint8) byte1; data[0] = (uint8) byte1;
@@ -27231,7 +27243,7 @@ MidiMessage::MidiMessage (const int byte1, const int byte2, const double t) thro


MidiMessage::MidiMessage (const int byte1, const int byte2, const int byte3, const double t) throw() MidiMessage::MidiMessage (const int byte1, const int byte2, const int byte3, const double t) throw()
: timeStamp (t), : timeStamp (t),
data ((uint8*) &message),
data (static_cast<uint8*> (preallocatedData.asBytes)),
size (3) size (3)
{ {
data[0] = (uint8) byte1; data[0] = (uint8) byte1;
@@ -27244,40 +27256,39 @@ MidiMessage::MidiMessage (const int byte1, const int byte2, const int byte3, con


MidiMessage::MidiMessage (const MidiMessage& other) MidiMessage::MidiMessage (const MidiMessage& other)
: timeStamp (other.timeStamp), : timeStamp (other.timeStamp),
message (other.message),
size (other.size) size (other.size)
{ {
if (other.data != (uint8*) &other.message)
if (other.data != static_cast <const uint8*> (other.preallocatedData.asBytes))
{ {
data = (uint8*) juce_malloc (size);
data = static_cast<uint8*> (juce_malloc (size));
memcpy (data, other.data, size); memcpy (data, other.data, size);
} }
else else
{ {
data = (uint8*) &message;
data = static_cast<uint8*> (preallocatedData.asBytes);
preallocatedData.asInt32 = other.preallocatedData.asInt32;
} }
} }


MidiMessage::MidiMessage (const MidiMessage& other, const double newTimeStamp) MidiMessage::MidiMessage (const MidiMessage& other, const double newTimeStamp)
: timeStamp (newTimeStamp), : timeStamp (newTimeStamp),
message (other.message),
size (other.size) size (other.size)
{ {
if (other.data != (uint8*) &other.message)
if (other.data != static_cast <const uint8*> (other.preallocatedData.asBytes))
{ {
data = (uint8*) juce_malloc (size);
data = static_cast<uint8*> (juce_malloc (size));
memcpy (data, other.data, size); memcpy (data, other.data, size);
} }
else else
{ {
data = (uint8*) &message;
data = static_cast<uint8*> (preallocatedData.asBytes);
preallocatedData.asInt32 = other.preallocatedData.asInt32;
} }
} }


MidiMessage::MidiMessage (const void* src_, int sz, int& numBytesUsed, const uint8 lastStatusByte, double t) MidiMessage::MidiMessage (const void* src_, int sz, int& numBytesUsed, const uint8 lastStatusByte, double t)
: timeStamp (t), : timeStamp (t),
data ((uint8*) &message),
message (0)
data (static_cast<uint8*> (preallocatedData.asBytes))
{ {
const uint8* src = static_cast <const uint8*> (src_); const uint8* src = static_cast <const uint8*> (src_);
unsigned int byte = (unsigned int) *src; unsigned int byte = (unsigned int) *src;
@@ -27315,7 +27326,7 @@ MidiMessage::MidiMessage (const void* src_, int sz, int& numBytesUsed, const uin


size = 1 + (int) (d - src); size = 1 + (int) (d - src);


data = (uint8*) juce_malloc (size);
data = static_cast<uint8*> (juce_malloc (size));
*data = (uint8) byte; *data = (uint8) byte;
memcpy (data + 1, src, size - 1); memcpy (data + 1, src, size - 1);
} }
@@ -27325,14 +27336,15 @@ MidiMessage::MidiMessage (const void* src_, int sz, int& numBytesUsed, const uin
const int bytesLeft = readVariableLengthVal (src + 1, n); const int bytesLeft = readVariableLengthVal (src + 1, n);
size = jmin (sz + 1, n + 2 + bytesLeft); size = jmin (sz + 1, n + 2 + bytesLeft);


data = (uint8*) juce_malloc (size);
data = static_cast<uint8*> (juce_malloc (size));
*data = (uint8) byte; *data = (uint8) byte;
memcpy (data + 1, src, size - 1); memcpy (data + 1, src, size - 1);
} }
else else
{ {
preallocatedData.asInt32 = 0;
size = getMessageLengthFromFirstByte ((uint8) byte); size = getMessageLengthFromFirstByte ((uint8) byte);
*data = (uint8) byte;
data[0] = (uint8) byte;


if (size > 1) if (size > 1)
{ {
@@ -27347,7 +27359,7 @@ MidiMessage::MidiMessage (const void* src_, int sz, int& numBytesUsed, const uin
} }
else else
{ {
message = 0;
preallocatedData.asInt32 = 0;
size = 0; size = 0;
} }
} }
@@ -27358,19 +27370,19 @@ MidiMessage& MidiMessage::operator= (const MidiMessage& other)
{ {
timeStamp = other.timeStamp; timeStamp = other.timeStamp;
size = other.size; size = other.size;
message = other.message;


if (data != (uint8*) &message)
if (data != static_cast <const uint8*> (preallocatedData.asBytes))
juce_free (data); juce_free (data);


if (other.data != (uint8*) &other.message)
if (other.data != static_cast <const uint8*> (other.preallocatedData.asBytes))
{ {
data = (uint8*) juce_malloc (size);
data = static_cast<uint8*> (juce_malloc (size));
memcpy (data, other.data, size); memcpy (data, other.data, size);
} }
else else
{ {
data = (uint8*) &message;
data = static_cast<uint8*> (preallocatedData.asBytes);
preallocatedData.asInt32 = other.preallocatedData.asInt32;
} }
} }


@@ -27379,7 +27391,7 @@ MidiMessage& MidiMessage::operator= (const MidiMessage& other)


MidiMessage::~MidiMessage() MidiMessage::~MidiMessage()
{ {
if (data != (uint8*) &message)
if (data != static_cast <const uint8*> (preallocatedData.asBytes))
juce_free (data); juce_free (data);
} }


@@ -81506,11 +81518,9 @@ public:
y = y_; y = y_;
generate (scratchBuffer, x, width); generate (scratchBuffer, x, width);


const uint8* mask = reinterpret_cast <uint8*> (scratchBuffer.getData());
if (sizeof (SrcPixelType) == sizeof (PixelARGB))
mask += PixelARGB::indexA;

et.clipLineToMask (x, y_, mask, sizeof (SrcPixelType), width);
et.clipLineToMask (x, y_,
reinterpret_cast<uint8*> (scratchBuffer.getData()) + SrcPixelType::indexA,
sizeof (SrcPixelType), width);
} }


private: private:
@@ -213585,7 +213595,7 @@ void* MessageManager::callFunctionOnMessageThread (MessageCallbackFunction* call
static BOOL CALLBACK BroadcastEnumWindowProc (HWND hwnd, LPARAM lParam) static BOOL CALLBACK BroadcastEnumWindowProc (HWND hwnd, LPARAM lParam)
{ {
if (hwnd != juce_messageWindowHandle) if (hwnd != juce_messageWindowHandle)
(reinterpret_cast <VoidArray*> (lParam))->add ((void*) hwnd);
reinterpret_cast <VoidArray*> (lParam)->add ((void*) hwnd);


return TRUE; return TRUE;
} }
@@ -231933,15 +231943,15 @@ public:


const int width = image.getWidth(); const int width = image.getWidth();
const int height = image.getHeight(); const int height = image.getHeight();
HeapBlock <uint32> colour (width * height);
HeapBlock <char> colour (width * height);
int index = 0; int index = 0;


for (int y = 0; y < height; ++y) for (int y = 0; y < height; ++y)
for (int x = 0; x < width; ++x) for (int x = 0; x < width; ++x)
colour[index++] = image.getPixelAt (x, y).getARGB();
colour[index++] = static_cast<char> (image.getPixelAt (x, y).getARGB());


XImage* ximage = XCreateImage (display, CopyFromParent, 24, ZPixmap, XImage* ximage = XCreateImage (display, CopyFromParent, 24, ZPixmap,
0, reinterpret_cast<char*> (colour.getData()),
0, colour.getData(),
width, height, 32, 0); width, height, 32, 0);


Pixmap pixmap = XCreatePixmap (display, DefaultRootWindow (display), Pixmap pixmap = XCreatePixmap (display, DefaultRootWindow (display),
@@ -231961,7 +231971,7 @@ public:
const int width = image.getWidth(); const int width = image.getWidth();
const int height = image.getHeight(); const int height = image.getHeight();
const int stride = (width + 7) >> 3; const int stride = (width + 7) >> 3;
HeapBlock <uint8> mask;
HeapBlock <char> mask;
mask.calloc (stride * height); mask.calloc (stride * height);
const bool msbfirst = (BitmapBitOrder (display) == MSBFirst); const bool msbfirst = (BitmapBitOrder (display) == MSBFirst);


@@ -231969,7 +231979,7 @@ public:
{ {
for (int x = 0; x < width; ++x) for (int x = 0; x < width; ++x)
{ {
const uint8 bit = (uint8) (1 << (msbfirst ? (7 - (x & 7)) : (x & 7)));
const char bit = (char) (1 << (msbfirst ? (7 - (x & 7)) : (x & 7)));
const int offset = y * stride + (x >> 3); const int offset = y * stride + (x >> 3);


if (image.getPixelAt (x, y).getAlpha() >= 128) if (image.getPixelAt (x, y).getAlpha() >= 128)
@@ -231978,7 +231988,7 @@ public:
} }


return XCreatePixmapFromBitmapData (display, DefaultRootWindow (display), return XCreatePixmapFromBitmapData (display, DefaultRootWindow (display),
reinterpret_cast<char*> (mask.getData()), width, height, 1, 0, 1);
mask.getData(), width, height, 1, 0, 1);
} }


void setIcon (const Image& newIcon) void setIcon (const Image& newIcon)
@@ -233824,7 +233834,7 @@ void* juce_createMouseCursorFromImage (const Image& image, int hotspotX, int hot
} }


const int stride = (cursorW + 7) >> 3; const int stride = (cursorW + 7) >> 3;
HeapBlock <uint8> maskPlane, sourcePlane;
HeapBlock <char> maskPlane, sourcePlane;
maskPlane.calloc (stride * cursorH); maskPlane.calloc (stride * cursorH);
sourcePlane.calloc (stride * cursorH); sourcePlane.calloc (stride * cursorH);


@@ -233834,7 +233844,7 @@ void* juce_createMouseCursorFromImage (const Image& image, int hotspotX, int hot
{ {
for (int x = cursorW; --x >= 0;) for (int x = cursorW; --x >= 0;)
{ {
const uint8 mask = (uint8) (1 << (msbfirst ? (7 - (x & 7)) : (x & 7)));
const char mask = (char) (1 << (msbfirst ? (7 - (x & 7)) : (x & 7)));
const int offset = y * stride + (x >> 3); const int offset = y * stride + (x >> 3);


const Colour c (im.getPixelAt (x, y)); const Colour c (im.getPixelAt (x, y));
@@ -233847,8 +233857,8 @@ void* juce_createMouseCursorFromImage (const Image& image, int hotspotX, int hot
} }
} }


Pixmap sourcePixmap = XCreatePixmapFromBitmapData (display, root, reinterpret_cast <char*> (sourcePlane.getData()), cursorW, cursorH, 0xffff, 0, 1);
Pixmap maskPixmap = XCreatePixmapFromBitmapData (display, root, reinterpret_cast <char*> (maskPlane.getData()), cursorW, cursorH, 0xffff, 0, 1);
Pixmap sourcePixmap = XCreatePixmapFromBitmapData (display, root, sourcePlane.getData(), cursorW, cursorH, 0xffff, 0, 1);
Pixmap maskPixmap = XCreatePixmapFromBitmapData (display, root, maskPlane.getData(), cursorW, cursorH, 0xffff, 0, 1);


XColor white, black; XColor white, black;
black.red = black.green = black.blue = 0; black.red = black.green = black.blue = 0;
@@ -234512,7 +234522,7 @@ public:
if (isInterleaved) if (isInterleaved)
{ {
scratch.ensureSize (sizeof (float) * numSamples * numChannelsRunning, false); scratch.ensureSize (sizeof (float) * numSamples * numChannelsRunning, false);
float* interleaved = reinterpret_cast <float*> (scratch.getData());
float* interleaved = static_cast <float*> (scratch.getData());


AudioDataConverters::interleaveSamples ((const float**) data, interleaved, numSamples, numChannelsRunning); AudioDataConverters::interleaveSamples ((const float**) data, interleaved, numSamples, numChannelsRunning);
AudioDataConverters::convertFloatToFormat (sampleFormat, interleaved, interleaved, numSamples * numChannelsRunning); AudioDataConverters::convertFloatToFormat (sampleFormat, interleaved, interleaved, numSamples * numChannelsRunning);
@@ -234550,7 +234560,7 @@ public:
if (isInterleaved) if (isInterleaved)
{ {
scratch.ensureSize (sizeof (float) * numSamples * numChannelsRunning, false); scratch.ensureSize (sizeof (float) * numSamples * numChannelsRunning, false);
float* interleaved = reinterpret_cast <float*> (scratch.getData());
float* interleaved = static_cast <float*> (scratch.getData());


snd_pcm_sframes_t num = snd_pcm_readi (handle, (void*) interleaved, numSamples); snd_pcm_sframes_t num = snd_pcm_readi (handle, (void*) interleaved, numSamples);


@@ -243259,7 +243269,7 @@ static const String getConnectedEndpointName (MIDIEndpointRef endpoint)
if (s.isNotEmpty()) if (s.isNotEmpty())
{ {
if (result.isNotEmpty()) if (result.isNotEmpty())
result += (", ");
result += ", ";


result += s; result += s;
} }
@@ -251422,7 +251432,7 @@ static const String getConnectedEndpointName (MIDIEndpointRef endpoint)
if (s.isNotEmpty()) if (s.isNotEmpty())
{ {
if (result.isNotEmpty()) if (result.isNotEmpty())
result += (", ");
result += ", ";


result += s; result += s;
} }


+ 96
- 70
juce_amalgamated.h View File

@@ -870,13 +870,13 @@ public:


static uint64 swapIfLittleEndian (uint64 value); static uint64 swapIfLittleEndian (uint64 value);


static uint32 littleEndianInt (const char* bytes);
static uint32 littleEndianInt (const void* bytes);


static uint16 littleEndianShort (const char* bytes);
static uint16 littleEndianShort (const void* bytes);


static uint32 bigEndianInt (const char* bytes);
static uint32 bigEndianInt (const void* bytes);


static uint16 bigEndianShort (const char* bytes);
static uint16 bigEndianShort (const void* bytes);


static int littleEndian24Bit (const char* bytes); static int littleEndian24Bit (const char* bytes);


@@ -944,10 +944,10 @@ inline uint64 ByteOrder::swap (uint64 value)
inline uint16 ByteOrder::swapIfLittleEndian (const uint16 v) { return swap (v); } inline uint16 ByteOrder::swapIfLittleEndian (const uint16 v) { return swap (v); }
inline uint32 ByteOrder::swapIfLittleEndian (const uint32 v) { return swap (v); } inline uint32 ByteOrder::swapIfLittleEndian (const uint32 v) { return swap (v); }
inline uint64 ByteOrder::swapIfLittleEndian (const uint64 v) { return swap (v); } inline uint64 ByteOrder::swapIfLittleEndian (const uint64 v) { return swap (v); }
inline uint32 ByteOrder::littleEndianInt (const char* const bytes) { return *reinterpret_cast <const uint32*> (bytes); }
inline uint16 ByteOrder::littleEndianShort (const char* const bytes) { return *reinterpret_cast <const uint16*> (bytes); }
inline uint32 ByteOrder::bigEndianInt (const char* const bytes) { return swap (*reinterpret_cast <const uint32*> (bytes)); }
inline uint16 ByteOrder::bigEndianShort (const char* const bytes) { return swap (*reinterpret_cast <const uint16*> (bytes)); }
inline uint32 ByteOrder::littleEndianInt (const void* const bytes) { return *static_cast <const uint32*> (bytes); }
inline uint16 ByteOrder::littleEndianShort (const void* const bytes) { return *static_cast <const uint16*> (bytes); }
inline uint32 ByteOrder::bigEndianInt (const void* const bytes) { return swap (*static_cast <const uint32*> (bytes)); }
inline uint16 ByteOrder::bigEndianShort (const void* const bytes) { return swap (*static_cast <const uint16*> (bytes)); }
inline bool ByteOrder::isBigEndian() { return false; } inline bool ByteOrder::isBigEndian() { return false; }
#else #else
inline uint16 ByteOrder::swapIfBigEndian (const uint16 v) { return swap (v); } inline uint16 ByteOrder::swapIfBigEndian (const uint16 v) { return swap (v); }
@@ -956,10 +956,10 @@ inline uint64 ByteOrder::swap (uint64 value)
inline uint16 ByteOrder::swapIfLittleEndian (const uint16 v) { return v; } inline uint16 ByteOrder::swapIfLittleEndian (const uint16 v) { return v; }
inline uint32 ByteOrder::swapIfLittleEndian (const uint32 v) { return v; } inline uint32 ByteOrder::swapIfLittleEndian (const uint32 v) { return v; }
inline uint64 ByteOrder::swapIfLittleEndian (const uint64 v) { return v; } inline uint64 ByteOrder::swapIfLittleEndian (const uint64 v) { return v; }
inline uint32 ByteOrder::littleEndianInt (const char* const bytes) { return swap (*reinterpret_cast <const uint32*> (bytes)); }
inline uint16 ByteOrder::littleEndianShort (const char* const bytes) { return swap (*reinterpret_cast <const uint16*> (bytes)); }
inline uint32 ByteOrder::bigEndianInt (const char* const bytes) { return *reinterpret_cast <const uint32*> (bytes); }
inline uint16 ByteOrder::bigEndianShort (const char* const bytes) { return *reinterpret_cast <const uint16*> (bytes); }
inline uint32 ByteOrder::littleEndianInt (const void* const bytes) { return swap (*static_cast <const uint32*> (bytes)); }
inline uint16 ByteOrder::littleEndianShort (const void* const bytes) { return swap (*static_cast <const uint16*> (bytes)); }
inline uint32 ByteOrder::bigEndianInt (const void* const bytes) { return *static_cast <const uint32*> (bytes); }
inline uint16 ByteOrder::bigEndianShort (const void* const bytes) { return *static_cast <const uint16*> (bytes); }
inline bool ByteOrder::isBigEndian() { return true; } inline bool ByteOrder::isBigEndian() { return true; }
#endif #endif


@@ -1513,8 +1513,8 @@ public:
{ {
} }


HeapBlock (const size_t numElements)
: data (reinterpret_cast <ElementType*> (::juce_malloc (numElements * sizeof (ElementType))))
explicit HeapBlock (const size_t numElements)
: data (static_cast <ElementType*> (::juce_malloc (numElements * sizeof (ElementType))))
{ {
} }


@@ -1548,13 +1548,13 @@ public:
void malloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) void malloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType))
{ {
::juce_free (data); ::juce_free (data);
data = reinterpret_cast <ElementType*> (::juce_malloc (newNumElements * elementSize));
data = static_cast <ElementType*> (::juce_malloc (newNumElements * elementSize));
} }


void calloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) void calloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType))
{ {
::juce_free (data); ::juce_free (data);
data = reinterpret_cast <ElementType*> (::juce_calloc (newNumElements * elementSize));
data = static_cast <ElementType*> (::juce_calloc (newNumElements * elementSize));
} }


void allocate (const size_t newNumElements, const bool initialiseToZero) void allocate (const size_t newNumElements, const bool initialiseToZero)
@@ -1562,17 +1562,17 @@ public:
::juce_free (data); ::juce_free (data);


if (initialiseToZero) if (initialiseToZero)
data = reinterpret_cast <ElementType*> (::juce_calloc (newNumElements * sizeof (ElementType)));
data = static_cast <ElementType*> (::juce_calloc (newNumElements * sizeof (ElementType)));
else else
data = reinterpret_cast <ElementType*> (::juce_malloc (newNumElements * sizeof (ElementType)));
data = static_cast <ElementType*> (::juce_malloc (newNumElements * sizeof (ElementType)));
} }


void realloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) void realloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType))
{ {
if (data == 0) if (data == 0)
data = reinterpret_cast <ElementType*> (::juce_malloc (newNumElements * elementSize));
data = static_cast <ElementType*> (::juce_malloc (newNumElements * elementSize));
else else
data = reinterpret_cast <ElementType*> (::juce_realloc (data, newNumElements * elementSize));
data = static_cast <ElementType*> (::juce_realloc (data, newNumElements * elementSize));
} }


void free() void free()
@@ -4509,7 +4509,7 @@ class JUCE_API XmlElement
{ {
public: public:


XmlElement (const String& tagName) throw();
explicit XmlElement (const String& tagName) throw();


XmlElement (const XmlElement& other) throw(); XmlElement (const XmlElement& other) throw();


@@ -6430,9 +6430,9 @@ class JUCE_API ScopedLock
{ {
public: public:


inline ScopedLock (const CriticalSection& lock) throw() : lock_ (lock) { lock.enter(); }
inline explicit ScopedLock (const CriticalSection& lock) throw() : lock_ (lock) { lock.enter(); }


inline ~ScopedLock() throw() { lock_.exit(); }
inline ~ScopedLock() throw() { lock_.exit(); }


private: private:


@@ -6446,9 +6446,9 @@ class ScopedUnlock
{ {
public: public:


inline ScopedUnlock (const CriticalSection& lock) throw() : lock_ (lock) { lock.exit(); }
inline explicit ScopedUnlock (const CriticalSection& lock) throw() : lock_ (lock) { lock.exit(); }


inline ~ScopedUnlock() throw() { lock_.enter(); }
inline ~ScopedUnlock() throw() { lock_.enter(); }


private: private:


@@ -6615,7 +6615,7 @@ class JUCE_API ValueTree
{ {
public: public:


ValueTree (const String& type);
explicit ValueTree (const String& type);


ValueTree (const ValueTree& other); ValueTree (const ValueTree& other);


@@ -7117,7 +7117,7 @@ class JUCE_API Random
{ {
public: public:


Random (int64 seedValue) throw();
explicit Random (int64 seedValue) throw();


~Random() throw(); ~Random() throw();


@@ -7518,15 +7518,15 @@ public:


MD5& operator= (const MD5& other); MD5& operator= (const MD5& other);


MD5 (const MemoryBlock& data);
explicit MD5 (const MemoryBlock& data);


MD5 (const char* data, const size_t numBytes); MD5 (const char* data, const size_t numBytes);


MD5 (const String& text);
explicit MD5 (const String& text);


MD5 (InputStream& input, int64 numBytesToRead = -1); MD5 (InputStream& input, int64 numBytesToRead = -1);


MD5 (const File& file);
explicit MD5 (const File& file);


~MD5(); ~MD5();


@@ -7580,6 +7580,11 @@ public:
int numRandomSeeds = 0); int numRandomSeeds = 0);


static bool isProbablyPrime (const BigInteger& number, int certainty); static bool isProbablyPrime (const BigInteger& number, int certainty);

private:
Primes();
Primes (const Primes&);
Primes& operator= (const Primes&);
}; };


#endif // __JUCE_PRIMES_JUCEHEADER__ #endif // __JUCE_PRIMES_JUCEHEADER__
@@ -7599,7 +7604,7 @@ public:


RSAKey(); RSAKey();


RSAKey (const String& stringRepresentation);
explicit RSAKey (const String& stringRepresentation);


~RSAKey(); ~RSAKey();


@@ -7679,7 +7684,7 @@ class JUCE_API FileInputStream : public InputStream
{ {
public: public:


FileInputStream (const File& fileToRead);
explicit FileInputStream (const File& fileToRead);


~FileInputStream(); ~FileInputStream();


@@ -8641,7 +8646,7 @@ class JUCE_API InterProcessLock
{ {
public: public:


InterProcessLock (const String& name);
explicit InterProcessLock (const String& name);


~InterProcessLock(); ~InterProcessLock();


@@ -8702,6 +8707,11 @@ public:
static void lowerPrivilege(); static void lowerPrivilege();


static bool JUCE_CALLTYPE isRunningUnderDebugger(); static bool JUCE_CALLTYPE isRunningUnderDebugger();

private:
Process();
Process (const Process&);
Process& operator= (const Process&);
}; };


#endif // __JUCE_PROCESS_JUCEHEADER__ #endif // __JUCE_PROCESS_JUCEHEADER__
@@ -8755,7 +8765,7 @@ class JUCE_API Thread
{ {
public: public:


Thread (const String& threadName);
explicit Thread (const String& threadName);


virtual ~Thread(); virtual ~Thread();


@@ -8883,9 +8893,9 @@ class JUCE_API ScopedReadLock
{ {
public: public:


inline ScopedReadLock (const ReadWriteLock& lock) throw() : lock_ (lock) { lock.enterRead(); }
inline explicit ScopedReadLock (const ReadWriteLock& lock) throw() : lock_ (lock) { lock.enterRead(); }


inline ~ScopedReadLock() throw() { lock_.exitRead(); }
inline ~ScopedReadLock() throw() { lock_.exitRead(); }


private: private:


@@ -8910,11 +8920,11 @@ class JUCE_API ScopedTryLock
{ {
public: public:


inline ScopedTryLock (const CriticalSection& lock) throw() : lock_ (lock), lockWasSuccessful (lock.tryEnter()) {}
inline explicit ScopedTryLock (const CriticalSection& lock) throw() : lock_ (lock), lockWasSuccessful (lock.tryEnter()) {}


inline ~ScopedTryLock() throw() { if (lockWasSuccessful) lock_.exit(); }
inline ~ScopedTryLock() throw() { if (lockWasSuccessful) lock_.exit(); }


bool isLocked() const throw() { return lockWasSuccessful; }
bool isLocked() const throw() { return lockWasSuccessful; }


private: private:


@@ -8940,9 +8950,9 @@ class JUCE_API ScopedWriteLock
{ {
public: public:


inline ScopedWriteLock (const ReadWriteLock& lock) throw() : lock_ (lock) { lock.enterWrite(); }
inline explicit ScopedWriteLock (const ReadWriteLock& lock) throw() : lock_ (lock) { lock.enterWrite(); }


inline ~ScopedWriteLock() throw() { lock_.exitWrite(); }
inline ~ScopedWriteLock() throw() { lock_.exitWrite(); }


private: private:


@@ -8973,7 +8983,7 @@ class JUCE_API ThreadPoolJob
{ {
public: public:


ThreadPoolJob (const String& name);
explicit ThreadPoolJob (const String& name);


virtual ~ThreadPoolJob(); virtual ~ThreadPoolJob();


@@ -9101,7 +9111,7 @@ class JUCE_API TimeSliceThread : public Thread
{ {
public: public:


TimeSliceThread (const String& threadName);
explicit TimeSliceThread (const String& threadName);


~TimeSliceThread(); ~TimeSliceThread();


@@ -10639,7 +10649,7 @@ public:
protected: protected:
String name; String name;


Typeface (const String& name) throw();
explicit Typeface (const String& name) throw();


private: private:
Typeface (const Typeface&); Typeface (const Typeface&);
@@ -10652,7 +10662,7 @@ public:


CustomTypeface(); CustomTypeface();


CustomTypeface (InputStream& serialisedTypefaceStream);
explicit CustomTypeface (InputStream& serialisedTypefaceStream);


~CustomTypeface(); ~CustomTypeface();


@@ -11407,6 +11417,8 @@ public:
{ {
} }


enum { indexA = 0 };

private: private:


uint8 a : 8; uint8 a : 8;
@@ -11832,7 +11844,7 @@ class JUCE_API Graphics
{ {
public: public:


Graphics (Image& imageToDrawOnto) throw();
explicit Graphics (Image& imageToDrawOnto) throw();


~Graphics() throw(); ~Graphics() throw();


@@ -12176,7 +12188,7 @@ public:
int bottomGap, int bottomGap,
int rightGap) throw(); int rightGap) throw();


BorderSize (int allGaps) throw();
explicit BorderSize (int allGaps) throw();


~BorderSize() throw(); ~BorderSize() throw();


@@ -12234,7 +12246,7 @@ public:


virtual ~Component(); virtual ~Component();


Component (const String& componentName);
explicit Component (const String& componentName);


const String& getName() const throw() { return componentName_; } const String& getName() const throw() { return componentName_; }


@@ -12813,7 +12825,7 @@ namespace StandardApplicationCommandIDs
struct JUCE_API ApplicationCommandInfo struct JUCE_API ApplicationCommandInfo
{ {


ApplicationCommandInfo (CommandID commandID) throw();
explicit ApplicationCommandInfo (CommandID commandID) throw();


void setInfo (const String& shortName, void setInfo (const String& shortName,
const String& description, const String& description,
@@ -14251,7 +14263,7 @@ class JUCE_API AudioThumbnailCache : public TimeSliceThread
{ {
public: public:


AudioThumbnailCache (int maxNumThumbsToStore);
explicit AudioThumbnailCache (int maxNumThumbsToStore);


~AudioThumbnailCache(); ~AudioThumbnailCache();


@@ -15174,7 +15186,7 @@ public:
virtual ~AudioIODeviceType(); virtual ~AudioIODeviceType();


protected: protected:
AudioIODeviceType (const String& typeName);
explicit AudioIODeviceType (const String& typeName);


private: private:
String typeName; String typeName;
@@ -15468,7 +15480,13 @@ public:
private: private:
double timeStamp; double timeStamp;
uint8* data; uint8* data;
int message, size;
int size;

union
{
uint8 asBytes[4];
uint32 asInt32;
} preallocatedData;
}; };


#endif // __JUCE_MIDIMESSAGE_JUCEHEADER__ #endif // __JUCE_MIDIMESSAGE_JUCEHEADER__
@@ -15526,7 +15544,7 @@ protected:
String name; String name;
void* internal; void* internal;


MidiInput (const String& name);
explicit MidiInput (const String& name);


private: private:
MidiInput (const MidiInput&); MidiInput (const MidiInput&);
@@ -15552,7 +15570,7 @@ public:


MidiBuffer() throw(); MidiBuffer() throw();


MidiBuffer (const MidiMessage& message) throw();
explicit MidiBuffer (const MidiMessage& message) throw();


MidiBuffer (const MidiBuffer& other) throw(); MidiBuffer (const MidiBuffer& other) throw();


@@ -15621,8 +15639,11 @@ private:
MemoryBlock data; MemoryBlock data;
int bytesUsed; int bytesUsed;


uint8* getData() const throw() { return reinterpret_cast <uint8*> (data.getData()); }
uint8* getData() const throw();
uint8* findEventAfter (uint8* d, const int samplePosition) const throw(); uint8* findEventAfter (uint8* d, const int samplePosition) const throw();
static int getEventTime (const void* d) throw();
static uint16 getEventDataSize (const void* d) throw();
static uint16 getEventTotalSize (const void* d) throw();
}; };


#endif // __JUCE_MIDIBUFFER_JUCEHEADER__ #endif // __JUCE_MIDIBUFFER_JUCEHEADER__
@@ -15765,8 +15786,8 @@ class JUCE_API TooltipWindow : public Component,
{ {
public: public:


TooltipWindow (Component* parentComponent = 0,
int millisecondsBeforeTipAppears = 700);
explicit TooltipWindow (Component* parentComponent = 0,
int millisecondsBeforeTipAppears = 700);


~TooltipWindow(); ~TooltipWindow();


@@ -15826,7 +15847,7 @@ class JUCE_API Button : public Component,
{ {
protected: protected:


Button (const String& buttonName);
explicit Button (const String& buttonName);


public: public:
virtual ~Button(); virtual ~Button();
@@ -16105,7 +16126,7 @@ class JUCE_API Viewport : public Component,
{ {
public: public:


Viewport (const String& componentName = String::empty);
explicit Viewport (const String& componentName = String::empty);


~Viewport(); ~Viewport();


@@ -16401,8 +16422,8 @@ class JUCE_API TextEditor : public Component,
{ {
public: public:


TextEditor (const String& componentName = String::empty,
tchar passwordCharacter = 0);
explicit TextEditor (const String& componentName = String::empty,
tchar passwordCharacter = 0);


virtual ~TextEditor(); virtual ~TextEditor();


@@ -16821,7 +16842,7 @@ class JUCE_API ComboBox : public Component,
{ {
public: public:


ComboBox (const String& componentName);
explicit ComboBox (const String& componentName);


~ComboBox(); ~ComboBox();


@@ -17194,6 +17215,11 @@ public:


static void deinterleaveSamples (const float* source, float** dest, static void deinterleaveSamples (const float* source, float** dest,
int numSamples, int numChannels); int numSamples, int numChannels);

private:
AudioDataConverters();
AudioDataConverters (const AudioDataConverters&);
AudioDataConverters& operator= (const AudioDataConverters&);
}; };


#endif // __JUCE_AUDIODATACONVERTERS_JUCEHEADER__ #endif // __JUCE_AUDIODATACONVERTERS_JUCEHEADER__
@@ -20015,7 +20041,7 @@ class JUCE_API ImageButton : public Button
{ {
public: public:


ImageButton (const String& name);
explicit ImageButton (const String& name);


~ImageButton(); ~ImageButton();


@@ -20979,7 +21005,7 @@ class JUCE_API ProgressBar : public Component,
{ {
public: public:


ProgressBar (double& progress);
explicit ProgressBar (double& progress);


~ProgressBar(); ~ProgressBar();


@@ -21058,7 +21084,7 @@ class JUCE_API Slider : public Component,
{ {
public: public:


Slider (const String& componentName);
explicit Slider (const String& componentName);


~Slider(); ~Slider();


@@ -23481,7 +23507,7 @@ class JUCE_API KeyPressMappingSet : public KeyListener,
{ {
public: public:


KeyPressMappingSet (ApplicationCommandManager* commandManager) throw();
explicit KeyPressMappingSet (ApplicationCommandManager* commandManager) throw();


KeyPressMappingSet (const KeyPressMappingSet& other) throw(); KeyPressMappingSet (const KeyPressMappingSet& other) throw();


@@ -23873,7 +23899,7 @@ class JUCE_API TabbedComponent : public Component
{ {
public: public:


TabbedComponent (const TabbedButtonBar::Orientation orientation);
explicit TabbedComponent (const TabbedButtonBar::Orientation orientation);


~TabbedComponent(); ~TabbedComponent();


@@ -25349,7 +25375,7 @@ public:
{ {
} }


SelectedItemSet (const Array <SelectableItemType>& items)
explicit SelectedItemSet (const Array <SelectableItemType>& items)
: selectedItems (items) : selectedItems (items)
{ {
} }
@@ -25531,7 +25557,7 @@ class LassoComponent : public Component
{ {
public: public:


LassoComponent (const int outlineThickness_ = 1)
explicit LassoComponent (const int outlineThickness_ = 1)
: source (0), : source (0),
outlineThickness (outlineThickness_) outlineThickness (outlineThickness_)
{ {
@@ -26960,7 +26986,7 @@ class JUCE_API WebBrowserComponent : public Component
{ {
public: public:


WebBrowserComponent (bool unloadPageWhenBrowserIsHidden = true);
explicit WebBrowserComponent (bool unloadPageWhenBrowserIsHidden = true);


~WebBrowserComponent(); ~WebBrowserComponent();




+ 1
- 1
src/application/juce_ApplicationCommandInfo.h View File

@@ -48,7 +48,7 @@
struct JUCE_API ApplicationCommandInfo struct JUCE_API ApplicationCommandInfo
{ {
//============================================================================== //==============================================================================
ApplicationCommandInfo (CommandID commandID) throw();
explicit ApplicationCommandInfo (CommandID commandID) throw();
//============================================================================== //==============================================================================
/** Sets a number of the structures values at once. /** Sets a number of the structures values at once.


+ 1
- 1
src/audio/audio_file_formats/juce_AudioThumbnailCache.h View File

@@ -49,7 +49,7 @@ public:
The maxNumThumbsToStore parameter lets you specify how many previews should The maxNumThumbsToStore parameter lets you specify how many previews should
be kept in memory at once. be kept in memory at once.
*/ */
AudioThumbnailCache (int maxNumThumbsToStore);
explicit AudioThumbnailCache (int maxNumThumbsToStore);
/** Destructor. */ /** Destructor. */
~AudioThumbnailCache(); ~AudioThumbnailCache();


+ 1
- 1
src/audio/devices/juce_AudioIODeviceType.h View File

@@ -132,7 +132,7 @@ public:
virtual ~AudioIODeviceType(); virtual ~AudioIODeviceType();
protected: protected:
AudioIODeviceType (const String& typeName);
explicit AudioIODeviceType (const String& typeName);
private: private:
String typeName; String typeName;


+ 1
- 1
src/audio/devices/juce_MidiInput.h View File

@@ -177,7 +177,7 @@ protected:
String name; String name;
void* internal; void* internal;
MidiInput (const String& name);
explicit MidiInput (const String& name);
private: private:
MidiInput (const MidiInput&); MidiInput (const MidiInput&);


+ 5
- 0
src/audio/dsp/juce_AudioDataConverters.h View File

@@ -87,6 +87,11 @@ public:
static void deinterleaveSamples (const float* source, float** dest, static void deinterleaveSamples (const float* source, float** dest,
int numSamples, int numChannels); int numSamples, int numChannels);
private:
AudioDataConverters();
AudioDataConverters (const AudioDataConverters&);
AudioDataConverters& operator= (const AudioDataConverters&);
}; };


+ 39
- 28
src/audio/midi/juce_MidiBuffer.cpp View File

@@ -66,6 +66,26 @@ MidiBuffer::~MidiBuffer() throw()
{ {
} }
inline uint8* MidiBuffer::getData() const throw()
{
return static_cast <uint8*> (data.getData());
}
inline int MidiBuffer::getEventTime (const void* const d) throw()
{
return *static_cast <const int*> (d);
}
inline uint16 MidiBuffer::getEventDataSize (const void* const d) throw()
{
return *reinterpret_cast <const uint16*> (static_cast <const char*> (d) + sizeof (int));
}
inline uint16 MidiBuffer::getEventTotalSize (const void* const d) throw()
{
return getEventDataSize (d) + sizeof (int) + sizeof (uint16);
}
void MidiBuffer::clear() throw() void MidiBuffer::clear() throw()
{ {
bytesUsed = 0; bytesUsed = 0;
@@ -133,23 +153,23 @@ void MidiBuffer::addEvent (const uint8* const newData,
if (numBytes > 0) if (numBytes > 0)
{ {
int spaceNeeded = bytesUsed + numBytes + 6;
int spaceNeeded = bytesUsed + numBytes + sizeof (int) + sizeof (uint16);
data.ensureSize ((spaceNeeded + spaceNeeded / 2 + 8) & ~7); data.ensureSize ((spaceNeeded + spaceNeeded / 2 + 8) & ~7);
uint8* d = findEventAfter (getData(), sampleNumber); uint8* d = findEventAfter (getData(), sampleNumber);
const int bytesToMove = bytesUsed - (int) (d - getData()); const int bytesToMove = bytesUsed - (int) (d - getData());
if (bytesToMove > 0) if (bytesToMove > 0)
memmove (d + numBytes + 6, d, bytesToMove);
memmove (d + numBytes + sizeof (int) + sizeof (uint16), d, bytesToMove);
*reinterpret_cast <int*> (d) = sampleNumber; *reinterpret_cast <int*> (d) = sampleNumber;
d += 4;
d += sizeof (int);
*reinterpret_cast <uint16*> (d) = (uint16) numBytes; *reinterpret_cast <uint16*> (d) = (uint16) numBytes;
d += 2;
d += sizeof (uint16);
memcpy (d, newData, numBytes); memcpy (d, newData, numBytes);
bytesUsed += numBytes + 6;
bytesUsed += numBytes + sizeof (int) + sizeof (uint16);
} }
} }
@@ -184,8 +204,7 @@ int MidiBuffer::getNumEvents() const throw()
while (d < end) while (d < end)
{ {
d += 4;
d += 2 + *reinterpret_cast <const uint16*> (d);
d += getEventTotalSize (d);
++n; ++n;
} }
@@ -194,7 +213,7 @@ int MidiBuffer::getNumEvents() const throw()
int MidiBuffer::getFirstEventTime() const throw() int MidiBuffer::getFirstEventTime() const throw()
{ {
return (bytesUsed > 0) ? *reinterpret_cast <const int*> (data.getData()) : 0;
return bytesUsed > 0 ? getEventTime (data.getData()) : 0;
} }
int MidiBuffer::getLastEventTime() const throw() int MidiBuffer::getLastEventTime() const throw()
@@ -207,10 +226,10 @@ int MidiBuffer::getLastEventTime() const throw()
for (;;) for (;;)
{ {
const uint8* nextOne = d + 6 + *reinterpret_cast <const uint16*> (d + 4);
const uint8* const nextOne = d + getEventTotalSize (d);
if (nextOne >= endData) if (nextOne >= endData)
return *reinterpret_cast <const int*> (d);
return getEventTime (d);
d = nextOne; d = nextOne;
} }
@@ -220,11 +239,8 @@ uint8* MidiBuffer::findEventAfter (uint8* d, const int samplePosition) const thr
{ {
const uint8* const endData = getData() + bytesUsed; const uint8* const endData = getData() + bytesUsed;
while (d < endData && *reinterpret_cast <const int*> (d) <= samplePosition)
{
d += 4;
d += 2 + *reinterpret_cast <const uint16*> (d);
}
while (d < endData && getEventTime (d) <= samplePosition)
d += getEventTotalSize (d);
return d; return d;
} }
@@ -246,11 +262,8 @@ void MidiBuffer::Iterator::setNextSamplePosition (const int samplePosition) thro
data = buffer.getData(); data = buffer.getData();
const uint8* dataEnd = data + buffer.bytesUsed; const uint8* dataEnd = data + buffer.bytesUsed;
while (data < dataEnd && *reinterpret_cast <const int*> (data) < samplePosition)
{
data += 4;
data += 2 + *(uint16*) data;
}
while (data < dataEnd && getEventTime (data) < samplePosition)
data += getEventTotalSize (data);
} }
bool MidiBuffer::Iterator::getNextEvent (const uint8* &midiData, int& numBytes, int& samplePosition) throw() bool MidiBuffer::Iterator::getNextEvent (const uint8* &midiData, int& numBytes, int& samplePosition) throw()
@@ -258,10 +271,9 @@ bool MidiBuffer::Iterator::getNextEvent (const uint8* &midiData, int& numBytes,
if (data >= buffer.getData() + buffer.bytesUsed) if (data >= buffer.getData() + buffer.bytesUsed)
return false; return false;
samplePosition = *reinterpret_cast <const int*> (data);
data += 4;
numBytes = *reinterpret_cast <const uint16*> (data);
data += 2;
samplePosition = getEventTime (data);
numBytes = getEventDataSize (data);
data += sizeof (int) + sizeof (uint16);
midiData = data; midiData = data;
data += numBytes; data += numBytes;
@@ -273,10 +285,9 @@ bool MidiBuffer::Iterator::getNextEvent (MidiMessage& result, int& samplePositio
if (data >= buffer.getData() + buffer.bytesUsed) if (data >= buffer.getData() + buffer.bytesUsed)
return false; return false;
samplePosition = *reinterpret_cast <const int*> (data);
data += 4;
const int numBytes = *reinterpret_cast <const uint16*> (data);
data += 2;
samplePosition = getEventTime (data);
const int numBytes = getEventDataSize (data);
data += sizeof (int) + sizeof (uint16);
result = MidiMessage (data, numBytes, samplePosition); result = MidiMessage (data, numBytes, samplePosition);
data += numBytes; data += numBytes;


+ 5
- 2
src/audio/midi/juce_MidiBuffer.h View File

@@ -47,7 +47,7 @@ public:
MidiBuffer() throw(); MidiBuffer() throw();
/** Creates a MidiBuffer containing a single midi message. */ /** Creates a MidiBuffer containing a single midi message. */
MidiBuffer (const MidiMessage& message) throw();
explicit MidiBuffer (const MidiMessage& message) throw();
/** Creates a copy of another MidiBuffer. */ /** Creates a copy of another MidiBuffer. */
MidiBuffer (const MidiBuffer& other) throw(); MidiBuffer (const MidiBuffer& other) throw();
@@ -229,8 +229,11 @@ private:
MemoryBlock data; MemoryBlock data;
int bytesUsed; int bytesUsed;
uint8* getData() const throw() { return reinterpret_cast <uint8*> (data.getData()); }
uint8* getData() const throw();
uint8* findEventAfter (uint8* d, const int samplePosition) const throw(); uint8* findEventAfter (uint8* d, const int samplePosition) const throw();
static int getEventTime (const void* d) throw();
static uint16 getEventDataSize (const void* d) throw();
static uint16 getEventTotalSize (const void* d) throw();
}; };


+ 26
- 28
src/audio/midi/juce_MidiMessage.cpp View File

@@ -78,26 +78,24 @@ int MidiMessage::getMessageLengthFromFirstByte (const uint8 firstByte) throw()
//============================================================================== //==============================================================================
MidiMessage::MidiMessage (const void* const d, const int dataSize, const double t) MidiMessage::MidiMessage (const void* const d, const int dataSize, const double t)
: timeStamp (t), : timeStamp (t),
message (0),
size (dataSize) size (dataSize)
{ {
jassert (dataSize > 0); jassert (dataSize > 0);
if (dataSize <= 4) if (dataSize <= 4)
data = (uint8*) &message;
data = static_cast<uint8*> (preallocatedData.asBytes);
else else
data = (uint8*) juce_malloc (dataSize);
data = static_cast<uint8*> (juce_malloc (dataSize));
memcpy (data, d, dataSize); memcpy (data, d, dataSize);
// check that the length matches the data.. // check that the length matches the data..
jassert (size > 3 || *reinterpret_cast<const uint8*> (d) >= 0xf0
|| getMessageLengthFromFirstByte (*reinterpret_cast<const uint8*> (d)) == size);
jassert (size > 3 || data[0] >= 0xf0 || getMessageLengthFromFirstByte (data[0]) == size);
} }
MidiMessage::MidiMessage (const int byte1, const double t) throw() MidiMessage::MidiMessage (const int byte1, const double t) throw()
: timeStamp (t), : timeStamp (t),
data ((uint8*) &message),
data (static_cast<uint8*> (preallocatedData.asBytes)),
size (1) size (1)
{ {
data[0] = (uint8) byte1; data[0] = (uint8) byte1;
@@ -108,7 +106,7 @@ MidiMessage::MidiMessage (const int byte1, const double t) throw()
MidiMessage::MidiMessage (const int byte1, const int byte2, const double t) throw() MidiMessage::MidiMessage (const int byte1, const int byte2, const double t) throw()
: timeStamp (t), : timeStamp (t),
data ((uint8*) &message),
data (static_cast<uint8*> (preallocatedData.asBytes)),
size (2) size (2)
{ {
data[0] = (uint8) byte1; data[0] = (uint8) byte1;
@@ -120,7 +118,7 @@ MidiMessage::MidiMessage (const int byte1, const int byte2, const double t) thro
MidiMessage::MidiMessage (const int byte1, const int byte2, const int byte3, const double t) throw() MidiMessage::MidiMessage (const int byte1, const int byte2, const int byte3, const double t) throw()
: timeStamp (t), : timeStamp (t),
data ((uint8*) &message),
data (static_cast<uint8*> (preallocatedData.asBytes)),
size (3) size (3)
{ {
data[0] = (uint8) byte1; data[0] = (uint8) byte1;
@@ -133,40 +131,39 @@ MidiMessage::MidiMessage (const int byte1, const int byte2, const int byte3, con
MidiMessage::MidiMessage (const MidiMessage& other) MidiMessage::MidiMessage (const MidiMessage& other)
: timeStamp (other.timeStamp), : timeStamp (other.timeStamp),
message (other.message),
size (other.size) size (other.size)
{ {
if (other.data != (uint8*) &other.message)
if (other.data != static_cast <const uint8*> (other.preallocatedData.asBytes))
{ {
data = (uint8*) juce_malloc (size);
data = static_cast<uint8*> (juce_malloc (size));
memcpy (data, other.data, size); memcpy (data, other.data, size);
} }
else else
{ {
data = (uint8*) &message;
data = static_cast<uint8*> (preallocatedData.asBytes);
preallocatedData.asInt32 = other.preallocatedData.asInt32;
} }
} }
MidiMessage::MidiMessage (const MidiMessage& other, const double newTimeStamp) MidiMessage::MidiMessage (const MidiMessage& other, const double newTimeStamp)
: timeStamp (newTimeStamp), : timeStamp (newTimeStamp),
message (other.message),
size (other.size) size (other.size)
{ {
if (other.data != (uint8*) &other.message)
if (other.data != static_cast <const uint8*> (other.preallocatedData.asBytes))
{ {
data = (uint8*) juce_malloc (size);
data = static_cast<uint8*> (juce_malloc (size));
memcpy (data, other.data, size); memcpy (data, other.data, size);
} }
else else
{ {
data = (uint8*) &message;
data = static_cast<uint8*> (preallocatedData.asBytes);
preallocatedData.asInt32 = other.preallocatedData.asInt32;
} }
} }
MidiMessage::MidiMessage (const void* src_, int sz, int& numBytesUsed, const uint8 lastStatusByte, double t) MidiMessage::MidiMessage (const void* src_, int sz, int& numBytesUsed, const uint8 lastStatusByte, double t)
: timeStamp (t), : timeStamp (t),
data ((uint8*) &message),
message (0)
data (static_cast<uint8*> (preallocatedData.asBytes))
{ {
const uint8* src = static_cast <const uint8*> (src_); const uint8* src = static_cast <const uint8*> (src_);
unsigned int byte = (unsigned int) *src; unsigned int byte = (unsigned int) *src;
@@ -204,7 +201,7 @@ MidiMessage::MidiMessage (const void* src_, int sz, int& numBytesUsed, const uin
size = 1 + (int) (d - src); size = 1 + (int) (d - src);
data = (uint8*) juce_malloc (size);
data = static_cast<uint8*> (juce_malloc (size));
*data = (uint8) byte; *data = (uint8) byte;
memcpy (data + 1, src, size - 1); memcpy (data + 1, src, size - 1);
} }
@@ -214,14 +211,15 @@ MidiMessage::MidiMessage (const void* src_, int sz, int& numBytesUsed, const uin
const int bytesLeft = readVariableLengthVal (src + 1, n); const int bytesLeft = readVariableLengthVal (src + 1, n);
size = jmin (sz + 1, n + 2 + bytesLeft); size = jmin (sz + 1, n + 2 + bytesLeft);
data = (uint8*) juce_malloc (size);
data = static_cast<uint8*> (juce_malloc (size));
*data = (uint8) byte; *data = (uint8) byte;
memcpy (data + 1, src, size - 1); memcpy (data + 1, src, size - 1);
} }
else else
{ {
preallocatedData.asInt32 = 0;
size = getMessageLengthFromFirstByte ((uint8) byte); size = getMessageLengthFromFirstByte ((uint8) byte);
*data = (uint8) byte;
data[0] = (uint8) byte;
if (size > 1) if (size > 1)
{ {
@@ -236,7 +234,7 @@ MidiMessage::MidiMessage (const void* src_, int sz, int& numBytesUsed, const uin
} }
else else
{ {
message = 0;
preallocatedData.asInt32 = 0;
size = 0; size = 0;
} }
} }
@@ -247,19 +245,19 @@ MidiMessage& MidiMessage::operator= (const MidiMessage& other)
{ {
timeStamp = other.timeStamp; timeStamp = other.timeStamp;
size = other.size; size = other.size;
message = other.message;
if (data != (uint8*) &message)
if (data != static_cast <const uint8*> (preallocatedData.asBytes))
juce_free (data); juce_free (data);
if (other.data != (uint8*) &other.message)
if (other.data != static_cast <const uint8*> (other.preallocatedData.asBytes))
{ {
data = (uint8*) juce_malloc (size);
data = static_cast<uint8*> (juce_malloc (size));
memcpy (data, other.data, size); memcpy (data, other.data, size);
} }
else else
{ {
data = (uint8*) &message;
data = static_cast<uint8*> (preallocatedData.asBytes);
preallocatedData.asInt32 = other.preallocatedData.asInt32;
} }
} }
@@ -268,7 +266,7 @@ MidiMessage& MidiMessage::operator= (const MidiMessage& other)
MidiMessage::~MidiMessage() MidiMessage::~MidiMessage()
{ {
if (data != (uint8*) &message)
if (data != static_cast <const uint8*> (preallocatedData.asBytes))
juce_free (data); juce_free (data);
} }


+ 7
- 1
src/audio/midi/juce_MidiMessage.h View File

@@ -896,7 +896,13 @@ public:
private: private:
double timeStamp; double timeStamp;
uint8* data; uint8* data;
int message, size;
int size;
union
{
uint8 asBytes[4];
uint32 asInt32;
} preallocatedData;
}; };


+ 8
- 8
src/containers/juce_HeapBlock.h View File

@@ -89,8 +89,8 @@ public:
If you want an array of zero values, you can use the calloc() method instead. If you want an array of zero values, you can use the calloc() method instead.
*/ */
HeapBlock (const size_t numElements)
: data (reinterpret_cast <ElementType*> (::juce_malloc (numElements * sizeof (ElementType))))
explicit HeapBlock (const size_t numElements)
: data (static_cast <ElementType*> (::juce_malloc (numElements * sizeof (ElementType))))
{ {
} }
@@ -180,7 +180,7 @@ public:
void malloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) void malloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType))
{ {
::juce_free (data); ::juce_free (data);
data = reinterpret_cast <ElementType*> (::juce_malloc (newNumElements * elementSize));
data = static_cast <ElementType*> (::juce_malloc (newNumElements * elementSize));
} }
/** Allocates a specified amount of memory and clears it. /** Allocates a specified amount of memory and clears it.
@@ -189,7 +189,7 @@ public:
void calloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) void calloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType))
{ {
::juce_free (data); ::juce_free (data);
data = reinterpret_cast <ElementType*> (::juce_calloc (newNumElements * elementSize));
data = static_cast <ElementType*> (::juce_calloc (newNumElements * elementSize));
} }
/** Allocates a specified amount of memory and optionally clears it. /** Allocates a specified amount of memory and optionally clears it.
@@ -201,9 +201,9 @@ public:
::juce_free (data); ::juce_free (data);
if (initialiseToZero) if (initialiseToZero)
data = reinterpret_cast <ElementType*> (::juce_calloc (newNumElements * sizeof (ElementType)));
data = static_cast <ElementType*> (::juce_calloc (newNumElements * sizeof (ElementType)));
else else
data = reinterpret_cast <ElementType*> (::juce_malloc (newNumElements * sizeof (ElementType)));
data = static_cast <ElementType*> (::juce_malloc (newNumElements * sizeof (ElementType)));
} }
/** Re-allocates a specified amount of memory. /** Re-allocates a specified amount of memory.
@@ -214,9 +214,9 @@ public:
void realloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) void realloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType))
{ {
if (data == 0) if (data == 0)
data = reinterpret_cast <ElementType*> (::juce_malloc (newNumElements * elementSize));
data = static_cast <ElementType*> (::juce_malloc (newNumElements * elementSize));
else else
data = reinterpret_cast <ElementType*> (::juce_realloc (data, newNumElements * elementSize));
data = static_cast <ElementType*> (::juce_realloc (data, newNumElements * elementSize));
} }
/** Frees any currently-allocated data. /** Frees any currently-allocated data.


+ 1
- 1
src/containers/juce_ValueTree.h View File

@@ -77,7 +77,7 @@ public:
Like an XmlElement, each ValueTree node has a type, which you can access with Like an XmlElement, each ValueTree node has a type, which you can access with
getType() and hasType(). getType() and hasType().
*/ */
ValueTree (const String& type);
explicit ValueTree (const String& type);
/** Creates a reference to another ValueTree. */ /** Creates a reference to another ValueTree. */
ValueTree (const ValueTree& other); ValueTree (const ValueTree& other);


+ 12
- 12
src/core/juce_ByteOrder.h View File

@@ -65,16 +65,16 @@ public:
//============================================================================== //==============================================================================
/** Turns 4 bytes into a little-endian integer. */ /** Turns 4 bytes into a little-endian integer. */
static uint32 littleEndianInt (const char* bytes);
static uint32 littleEndianInt (const void* bytes);
/** Turns 2 bytes into a little-endian integer. */ /** Turns 2 bytes into a little-endian integer. */
static uint16 littleEndianShort (const char* bytes);
static uint16 littleEndianShort (const void* bytes);
/** Turns 4 bytes into a big-endian integer. */ /** Turns 4 bytes into a big-endian integer. */
static uint32 bigEndianInt (const char* bytes);
static uint32 bigEndianInt (const void* bytes);
/** Turns 2 bytes into a big-endian integer. */ /** Turns 2 bytes into a big-endian integer. */
static uint16 bigEndianShort (const char* bytes);
static uint16 bigEndianShort (const void* bytes);
//============================================================================== //==============================================================================
/** Converts 3 little-endian bytes into a signed 24-bit value (which is sign-extended to 32 bits). */ /** Converts 3 little-endian bytes into a signed 24-bit value (which is sign-extended to 32 bits). */
@@ -151,10 +151,10 @@ inline uint64 ByteOrder::swap (uint64 value)
inline uint16 ByteOrder::swapIfLittleEndian (const uint16 v) { return swap (v); } inline uint16 ByteOrder::swapIfLittleEndian (const uint16 v) { return swap (v); }
inline uint32 ByteOrder::swapIfLittleEndian (const uint32 v) { return swap (v); } inline uint32 ByteOrder::swapIfLittleEndian (const uint32 v) { return swap (v); }
inline uint64 ByteOrder::swapIfLittleEndian (const uint64 v) { return swap (v); } inline uint64 ByteOrder::swapIfLittleEndian (const uint64 v) { return swap (v); }
inline uint32 ByteOrder::littleEndianInt (const char* const bytes) { return *reinterpret_cast <const uint32*> (bytes); }
inline uint16 ByteOrder::littleEndianShort (const char* const bytes) { return *reinterpret_cast <const uint16*> (bytes); }
inline uint32 ByteOrder::bigEndianInt (const char* const bytes) { return swap (*reinterpret_cast <const uint32*> (bytes)); }
inline uint16 ByteOrder::bigEndianShort (const char* const bytes) { return swap (*reinterpret_cast <const uint16*> (bytes)); }
inline uint32 ByteOrder::littleEndianInt (const void* const bytes) { return *static_cast <const uint32*> (bytes); }
inline uint16 ByteOrder::littleEndianShort (const void* const bytes) { return *static_cast <const uint16*> (bytes); }
inline uint32 ByteOrder::bigEndianInt (const void* const bytes) { return swap (*static_cast <const uint32*> (bytes)); }
inline uint16 ByteOrder::bigEndianShort (const void* const bytes) { return swap (*static_cast <const uint16*> (bytes)); }
inline bool ByteOrder::isBigEndian() { return false; } inline bool ByteOrder::isBigEndian() { return false; }
#else #else
inline uint16 ByteOrder::swapIfBigEndian (const uint16 v) { return swap (v); } inline uint16 ByteOrder::swapIfBigEndian (const uint16 v) { return swap (v); }
@@ -163,10 +163,10 @@ inline uint64 ByteOrder::swap (uint64 value)
inline uint16 ByteOrder::swapIfLittleEndian (const uint16 v) { return v; } inline uint16 ByteOrder::swapIfLittleEndian (const uint16 v) { return v; }
inline uint32 ByteOrder::swapIfLittleEndian (const uint32 v) { return v; } inline uint32 ByteOrder::swapIfLittleEndian (const uint32 v) { return v; }
inline uint64 ByteOrder::swapIfLittleEndian (const uint64 v) { return v; } inline uint64 ByteOrder::swapIfLittleEndian (const uint64 v) { return v; }
inline uint32 ByteOrder::littleEndianInt (const char* const bytes) { return swap (*reinterpret_cast <const uint32*> (bytes)); }
inline uint16 ByteOrder::littleEndianShort (const char* const bytes) { return swap (*reinterpret_cast <const uint16*> (bytes)); }
inline uint32 ByteOrder::bigEndianInt (const char* const bytes) { return *reinterpret_cast <const uint32*> (bytes); }
inline uint16 ByteOrder::bigEndianShort (const char* const bytes) { return *reinterpret_cast <const uint16*> (bytes); }
inline uint32 ByteOrder::littleEndianInt (const void* const bytes) { return swap (*static_cast <const uint32*> (bytes)); }
inline uint16 ByteOrder::littleEndianShort (const void* const bytes) { return swap (*static_cast <const uint16*> (bytes)); }
inline uint32 ByteOrder::bigEndianInt (const void* const bytes) { return *static_cast <const uint32*> (bytes); }
inline uint16 ByteOrder::bigEndianShort (const void* const bytes) { return *static_cast <const uint16*> (bytes); }
inline bool ByteOrder::isBigEndian() { return true; } inline bool ByteOrder::isBigEndian() { return true; }
#endif #endif


+ 1
- 1
src/core/juce_Random.h View File

@@ -45,7 +45,7 @@ public:
new Random (Time::currentTimeMillis()) new Random (Time::currentTimeMillis())
*/ */
Random (int64 seedValue) throw();
explicit Random (int64 seedValue) throw();
/** Destructor. */ /** Destructor. */
~Random() throw(); ~Random() throw();


+ 3
- 3
src/cryptography/juce_MD5.h View File

@@ -55,7 +55,7 @@ public:
//============================================================================== //==============================================================================
/** Creates a checksum for a block of binary data. */ /** Creates a checksum for a block of binary data. */
MD5 (const MemoryBlock& data);
explicit MD5 (const MemoryBlock& data);
/** Creates a checksum for a block of binary data. */ /** Creates a checksum for a block of binary data. */
MD5 (const char* data, const size_t numBytes); MD5 (const char* data, const size_t numBytes);
@@ -68,7 +68,7 @@ public:
of this method with a checksum created by a different framework, which may have of this method with a checksum created by a different framework, which may have
used a different encoding. used a different encoding.
*/ */
MD5 (const String& text);
explicit MD5 (const String& text);
/** Creates a checksum for the input from a stream. /** Creates a checksum for the input from a stream.
@@ -79,7 +79,7 @@ public:
MD5 (InputStream& input, int64 numBytesToRead = -1); MD5 (InputStream& input, int64 numBytesToRead = -1);
/** Creates a checksum for a file. */ /** Creates a checksum for a file. */
MD5 (const File& file);
explicit MD5 (const File& file);
/** Destructor. */ /** Destructor. */
~MD5(); ~MD5();


+ 6
- 0
src/cryptography/juce_Primes.h View File

@@ -64,6 +64,12 @@ public:
safe value might be anything over about 20-30. safe value might be anything over about 20-30.
*/ */
static bool isProbablyPrime (const BigInteger& number, int certainty); static bool isProbablyPrime (const BigInteger& number, int certainty);
private:
Primes();
Primes (const Primes&);
Primes& operator= (const Primes&);
}; };


+ 1
- 1
src/cryptography/juce_RSAKey.h View File

@@ -50,7 +50,7 @@ public:
This reloads a key from a string created by the toString() method. This reloads a key from a string created by the toString() method.
*/ */
RSAKey (const String& stringRepresentation);
explicit RSAKey (const String& stringRepresentation);
/** Destructor. */ /** Destructor. */
~RSAKey(); ~RSAKey();


+ 1
- 1
src/gui/components/buttons/juce_Button.h View File

@@ -79,7 +79,7 @@ protected:
initially set to this string, but these can be changed later initially set to this string, but these can be changed later
using the setName() and setButtonText() methods) using the setName() and setButtonText() methods)
*/ */
Button (const String& buttonName);
explicit Button (const String& buttonName);
public: public:
/** Destructor. */ /** Destructor. */


+ 1
- 1
src/gui/components/buttons/juce_ImageButton.h View File

@@ -49,7 +49,7 @@ public:
@param name the name to give the component @param name the name to give the component
*/ */
ImageButton (const String& name);
explicit ImageButton (const String& name);
/** Destructor. */ /** Destructor. */
~ImageButton(); ~ImageButton();


+ 1
- 1
src/gui/components/controls/juce_ComboBox.h View File

@@ -84,7 +84,7 @@ public:
@param componentName the name to set for the component (see Component::setName()) @param componentName the name to set for the component (see Component::setName())
*/ */
ComboBox (const String& componentName);
explicit ComboBox (const String& componentName);
/** Destructor. */ /** Destructor. */
~ComboBox(); ~ComboBox();


+ 1
- 1
src/gui/components/controls/juce_ProgressBar.h View File

@@ -59,7 +59,7 @@ public:
you'd better be careful not to delete this variable while the you'd better be careful not to delete this variable while the
ProgressBar still exists! ProgressBar still exists!
*/ */
ProgressBar (double& progress);
explicit ProgressBar (double& progress);
/** Destructor. */ /** Destructor. */
~ProgressBar(); ~ProgressBar();


+ 1
- 1
src/gui/components/controls/juce_Slider.h View File

@@ -68,7 +68,7 @@ public:
When created, you'll need to set up the slider's style and range with setSliderStyle(), When created, you'll need to set up the slider's style and range with setSliderStyle(),
setRange(), etc. setRange(), etc.
*/ */
Slider (const String& componentName);
explicit Slider (const String& componentName);
/** Destructor. */ /** Destructor. */
~Slider(); ~Slider();


+ 2
- 2
src/gui/components/controls/juce_TextEditor.h View File

@@ -89,8 +89,8 @@ public:
for a black splodge (not all fonts include this, though), or 0x2022, for a black splodge (not all fonts include this, though), or 0x2022,
which is a bullet (probably the best choice for linux). which is a bullet (probably the best choice for linux).
*/ */
TextEditor (const String& componentName = String::empty,
tchar passwordCharacter = 0);
explicit TextEditor (const String& componentName = String::empty,
tchar passwordCharacter = 0);
/** Destructor. */ /** Destructor. */
virtual ~TextEditor(); virtual ~TextEditor();


+ 1
- 1
src/gui/components/juce_Component.h View File

@@ -81,7 +81,7 @@ public:
@see getName, setName @see getName, setName
*/ */
Component (const String& componentName);
explicit Component (const String& componentName);
/** Returns the name of this component. /** Returns the name of this component.


+ 1
- 1
src/gui/components/keyboard/juce_KeyPressMappingSet.h View File

@@ -107,7 +107,7 @@ public:
@see ApplicationCommandManager @see ApplicationCommandManager
*/ */
KeyPressMappingSet (ApplicationCommandManager* commandManager) throw();
explicit KeyPressMappingSet (ApplicationCommandManager* commandManager) throw();
/** Creates an copy of a KeyPressMappingSet. */ /** Creates an copy of a KeyPressMappingSet. */
KeyPressMappingSet (const KeyPressMappingSet& other) throw(); KeyPressMappingSet (const KeyPressMappingSet& other) throw();


+ 1
- 1
src/gui/components/layout/juce_TabbedComponent.h View File

@@ -47,7 +47,7 @@ public:
Once created, add some tabs with the addTab() method. Once created, add some tabs with the addTab() method.
*/ */
TabbedComponent (const TabbedButtonBar::Orientation orientation);
explicit TabbedComponent (const TabbedButtonBar::Orientation orientation);
/** Destructor. */ /** Destructor. */
~TabbedComponent(); ~TabbedComponent();


+ 1
- 1
src/gui/components/layout/juce_Viewport.h View File

@@ -53,7 +53,7 @@ public:
The viewport is initially empty - use the setViewedComponent() method to The viewport is initially empty - use the setViewedComponent() method to
add a child component for it to manage. add a child component for it to manage.
*/ */
Viewport (const String& componentName = String::empty);
explicit Viewport (const String& componentName = String::empty);
/** Destructor. */ /** Destructor. */
~Viewport(); ~Viewport();


+ 1
- 1
src/gui/components/mouse/juce_LassoComponent.h View File

@@ -106,7 +106,7 @@ public:
The fill colour is used to fill the lasso'ed rectangle, and the outline The fill colour is used to fill the lasso'ed rectangle, and the outline
colour is used to draw a line around its edge. colour is used to draw a line around its edge.
*/ */
LassoComponent (const int outlineThickness_ = 1)
explicit LassoComponent (const int outlineThickness_ = 1)
: source (0), : source (0),
outlineThickness (outlineThickness_) outlineThickness (outlineThickness_)
{ {


+ 1
- 1
src/gui/components/special/juce_WebBrowserComponent.h View File

@@ -56,7 +56,7 @@ public:
the browser using resources in the background when it's not the browser using resources in the background when it's not
actually being used. actually being used.
*/ */
WebBrowserComponent (bool unloadPageWhenBrowserIsHidden = true);
explicit WebBrowserComponent (bool unloadPageWhenBrowserIsHidden = true);
/** Destructor. */ /** Destructor. */
~WebBrowserComponent(); ~WebBrowserComponent();


+ 2
- 2
src/gui/components/windows/juce_TooltipWindow.h View File

@@ -67,8 +67,8 @@ public:
@see TooltipClient, LookAndFeel::drawTooltip, LookAndFeel::getTooltipSize @see TooltipClient, LookAndFeel::drawTooltip, LookAndFeel::getTooltipSize
*/ */
TooltipWindow (Component* parentComponent = 0,
int millisecondsBeforeTipAppears = 700);
explicit TooltipWindow (Component* parentComponent = 0,
int millisecondsBeforeTipAppears = 700);
/** Destructor. */ /** Destructor. */
~TooltipWindow(); ~TooltipWindow();


+ 4
- 0
src/gui/graphics/colour/juce_PixelFormats.h View File

@@ -546,6 +546,10 @@ public:
{ {
} }
//==============================================================================
/** The indexes of the different components in the byte layout of this type of colour. */
enum { indexA = 0 };
private: private:
//============================================================================== //==============================================================================
uint8 a : 8; uint8 a : 8;


+ 1
- 1
src/gui/graphics/contexts/juce_Graphics.h View File

@@ -64,7 +64,7 @@ public:
Obviously you shouldn't delete the image before this context is deleted. Obviously you shouldn't delete the image before this context is deleted.
*/ */
Graphics (Image& imageToDrawOnto) throw();
explicit Graphics (Image& imageToDrawOnto) throw();
/** Destructor. */ /** Destructor. */
~Graphics() throw(); ~Graphics() throw();


+ 3
- 5
src/gui/graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp View File

@@ -586,11 +586,9 @@ public:
y = y_; y = y_;
generate (scratchBuffer, x, width); generate (scratchBuffer, x, width);
const uint8* mask = reinterpret_cast <uint8*> (scratchBuffer.getData());
if (sizeof (SrcPixelType) == sizeof (PixelARGB))
mask += PixelARGB::indexA;
et.clipLineToMask (x, y_, mask, sizeof (SrcPixelType), width);
et.clipLineToMask (x, y_,
reinterpret_cast<uint8*> (scratchBuffer.getData()) + SrcPixelType::indexA,
sizeof (SrcPixelType), width);
} }
private: private:


+ 2
- 2
src/gui/graphics/fonts/juce_Typeface.h View File

@@ -112,7 +112,7 @@ public:
protected: protected:
String name; String name;
Typeface (const String& name) throw();
explicit Typeface (const String& name) throw();
private: private:
Typeface (const Typeface&); Typeface (const Typeface&);
@@ -141,7 +141,7 @@ public:
The stream must have been created by writeToStream(). The stream must have been created by writeToStream().
@see writeToStream @see writeToStream
*/ */
CustomTypeface (InputStream& serialisedTypefaceStream);
explicit CustomTypeface (InputStream& serialisedTypefaceStream);
/** Destructor. */ /** Destructor. */
~CustomTypeface(); ~CustomTypeface();


+ 1
- 1
src/gui/graphics/geometry/juce_BorderSize.h View File

@@ -58,7 +58,7 @@ public:
int rightGap) throw(); int rightGap) throw();
/** Creates a border with the given gap on all sides. */ /** Creates a border with the given gap on all sides. */
BorderSize (int allGaps) throw();
explicit BorderSize (int allGaps) throw();
/** Destructor. */ /** Destructor. */
~BorderSize() throw(); ~BorderSize() throw();


+ 1
- 1
src/io/files/juce_FileInputStream.h View File

@@ -45,7 +45,7 @@ public:
@param fileToRead the file to read from - if the file can't be accessed for some @param fileToRead the file to read from - if the file can't be accessed for some
reason, then the stream will just contain no data reason, then the stream will just contain no data
*/ */
FileInputStream (const File& fileToRead);
explicit FileInputStream (const File& fileToRead);
/** Destructor. */ /** Destructor. */
~FileInputStream(); ~FileInputStream();


+ 12
- 10
src/io/streams/juce_InputStream.cpp View File

@@ -108,35 +108,37 @@ int InputStream::readCompressedInt()
int64 InputStream::readInt64() int64 InputStream::readInt64()
{ {
char temp[8];
union { uint8 asBytes[8]; uint64 asInt64; } n;
if (read (temp, 8) == 8)
return (int64) ByteOrder::swapIfBigEndian (*reinterpret_cast <uint64*> (temp));
if (read (n.asBytes, 8) == 8)
return (int64) ByteOrder::swapIfBigEndian (n.asInt64);
return 0; return 0;
} }
int64 InputStream::readInt64BigEndian() int64 InputStream::readInt64BigEndian()
{ {
char temp[8];
union { uint8 asBytes[8]; uint64 asInt64; } n;
if (read (temp, 8) == 8)
return (int64) ByteOrder::swapIfLittleEndian (*reinterpret_cast <uint64*> (temp));
if (read (n.asBytes, 8) == 8)
return (int64) ByteOrder::swapIfLittleEndian (n.asInt64);
return 0; return 0;
} }
float InputStream::readFloat() float InputStream::readFloat()
{ {
union { int asInt; float asFloat; } n;
n.asInt = readInt();
// the union below relies on these types being the same size...
static_jassert (sizeof (int32) == sizeof (float));
union { int32 asInt; float asFloat; } n;
n.asInt = (int32) readInt();
return n.asFloat; return n.asFloat;
} }
float InputStream::readFloatBigEndian() float InputStream::readFloatBigEndian()
{ {
union { int asInt; float asFloat; } n;
n.asInt = readIntBigEndian();
union { int32 asInt; float asFloat; } n;
n.asInt = (int32) readIntBigEndian();
return n.asFloat; return n.asFloat;
} }


+ 2
- 2
src/native/linux/juce_linux_Audio.cpp View File

@@ -234,7 +234,7 @@ public:
if (isInterleaved) if (isInterleaved)
{ {
scratch.ensureSize (sizeof (float) * numSamples * numChannelsRunning, false); scratch.ensureSize (sizeof (float) * numSamples * numChannelsRunning, false);
float* interleaved = reinterpret_cast <float*> (scratch.getData());
float* interleaved = static_cast <float*> (scratch.getData());
AudioDataConverters::interleaveSamples ((const float**) data, interleaved, numSamples, numChannelsRunning); AudioDataConverters::interleaveSamples ((const float**) data, interleaved, numSamples, numChannelsRunning);
AudioDataConverters::convertFloatToFormat (sampleFormat, interleaved, interleaved, numSamples * numChannelsRunning); AudioDataConverters::convertFloatToFormat (sampleFormat, interleaved, interleaved, numSamples * numChannelsRunning);
@@ -272,7 +272,7 @@ public:
if (isInterleaved) if (isInterleaved)
{ {
scratch.ensureSize (sizeof (float) * numSamples * numChannelsRunning, false); scratch.ensureSize (sizeof (float) * numSamples * numChannelsRunning, false);
float* interleaved = reinterpret_cast <float*> (scratch.getData());
float* interleaved = static_cast <float*> (scratch.getData());
snd_pcm_sframes_t num = snd_pcm_readi (handle, (void*) interleaved, numSamples); snd_pcm_sframes_t num = snd_pcm_readi (handle, (void*) interleaved, numSamples);


+ 10
- 10
src/native/linux/juce_linux_Windowing.cpp View File

@@ -1114,15 +1114,15 @@ public:
const int width = image.getWidth(); const int width = image.getWidth();
const int height = image.getHeight(); const int height = image.getHeight();
HeapBlock <uint32> colour (width * height);
HeapBlock <char> colour (width * height);
int index = 0; int index = 0;
for (int y = 0; y < height; ++y) for (int y = 0; y < height; ++y)
for (int x = 0; x < width; ++x) for (int x = 0; x < width; ++x)
colour[index++] = image.getPixelAt (x, y).getARGB();
colour[index++] = static_cast<char> (image.getPixelAt (x, y).getARGB());
XImage* ximage = XCreateImage (display, CopyFromParent, 24, ZPixmap, XImage* ximage = XCreateImage (display, CopyFromParent, 24, ZPixmap,
0, reinterpret_cast<char*> (colour.getData()),
0, colour.getData(),
width, height, 32, 0); width, height, 32, 0);
Pixmap pixmap = XCreatePixmap (display, DefaultRootWindow (display), Pixmap pixmap = XCreatePixmap (display, DefaultRootWindow (display),
@@ -1142,7 +1142,7 @@ public:
const int width = image.getWidth(); const int width = image.getWidth();
const int height = image.getHeight(); const int height = image.getHeight();
const int stride = (width + 7) >> 3; const int stride = (width + 7) >> 3;
HeapBlock <uint8> mask;
HeapBlock <char> mask;
mask.calloc (stride * height); mask.calloc (stride * height);
const bool msbfirst = (BitmapBitOrder (display) == MSBFirst); const bool msbfirst = (BitmapBitOrder (display) == MSBFirst);
@@ -1150,7 +1150,7 @@ public:
{ {
for (int x = 0; x < width; ++x) for (int x = 0; x < width; ++x)
{ {
const uint8 bit = (uint8) (1 << (msbfirst ? (7 - (x & 7)) : (x & 7)));
const char bit = (char) (1 << (msbfirst ? (7 - (x & 7)) : (x & 7)));
const int offset = y * stride + (x >> 3); const int offset = y * stride + (x >> 3);
if (image.getPixelAt (x, y).getAlpha() >= 128) if (image.getPixelAt (x, y).getAlpha() >= 128)
@@ -1159,7 +1159,7 @@ public:
} }
return XCreatePixmapFromBitmapData (display, DefaultRootWindow (display), return XCreatePixmapFromBitmapData (display, DefaultRootWindow (display),
reinterpret_cast<char*> (mask.getData()), width, height, 1, 0, 1);
mask.getData(), width, height, 1, 0, 1);
} }
void setIcon (const Image& newIcon) void setIcon (const Image& newIcon)
@@ -3027,7 +3027,7 @@ void* juce_createMouseCursorFromImage (const Image& image, int hotspotX, int hot
} }
const int stride = (cursorW + 7) >> 3; const int stride = (cursorW + 7) >> 3;
HeapBlock <uint8> maskPlane, sourcePlane;
HeapBlock <char> maskPlane, sourcePlane;
maskPlane.calloc (stride * cursorH); maskPlane.calloc (stride * cursorH);
sourcePlane.calloc (stride * cursorH); sourcePlane.calloc (stride * cursorH);
@@ -3037,7 +3037,7 @@ void* juce_createMouseCursorFromImage (const Image& image, int hotspotX, int hot
{ {
for (int x = cursorW; --x >= 0;) for (int x = cursorW; --x >= 0;)
{ {
const uint8 mask = (uint8) (1 << (msbfirst ? (7 - (x & 7)) : (x & 7)));
const char mask = (char) (1 << (msbfirst ? (7 - (x & 7)) : (x & 7)));
const int offset = y * stride + (x >> 3); const int offset = y * stride + (x >> 3);
const Colour c (im.getPixelAt (x, y)); const Colour c (im.getPixelAt (x, y));
@@ -3050,8 +3050,8 @@ void* juce_createMouseCursorFromImage (const Image& image, int hotspotX, int hot
} }
} }
Pixmap sourcePixmap = XCreatePixmapFromBitmapData (display, root, reinterpret_cast <char*> (sourcePlane.getData()), cursorW, cursorH, 0xffff, 0, 1);
Pixmap maskPixmap = XCreatePixmapFromBitmapData (display, root, reinterpret_cast <char*> (maskPlane.getData()), cursorW, cursorH, 0xffff, 0, 1);
Pixmap sourcePixmap = XCreatePixmapFromBitmapData (display, root, sourcePlane.getData(), cursorW, cursorH, 0xffff, 0, 1);
Pixmap maskPixmap = XCreatePixmapFromBitmapData (display, root, maskPlane.getData(), cursorW, cursorH, 0xffff, 0, 1);
XColor white, black; XColor white, black;
black.red = black.green = black.blue = 0; black.red = black.green = black.blue = 0;


+ 1
- 1
src/native/mac/juce_mac_CoreMidi.cpp View File

@@ -161,7 +161,7 @@ static const String getConnectedEndpointName (MIDIEndpointRef endpoint)
if (s.isNotEmpty()) if (s.isNotEmpty())
{ {
if (result.isNotEmpty()) if (result.isNotEmpty())
result += (", ");
result += ", ";
result += s; result += s;
} }


+ 1
- 1
src/native/windows/juce_win32_Messaging.cpp View File

@@ -213,7 +213,7 @@ void* MessageManager::callFunctionOnMessageThread (MessageCallbackFunction* call
static BOOL CALLBACK BroadcastEnumWindowProc (HWND hwnd, LPARAM lParam) static BOOL CALLBACK BroadcastEnumWindowProc (HWND hwnd, LPARAM lParam)
{ {
if (hwnd != juce_messageWindowHandle) if (hwnd != juce_messageWindowHandle)
(reinterpret_cast <VoidArray*> (lParam))->add ((void*) hwnd);
reinterpret_cast <VoidArray*> (lParam)->add ((void*) hwnd);
return TRUE; return TRUE;
} }


+ 27
- 26
src/text/juce_String.cpp View File

@@ -138,10 +138,10 @@ public:
static StringHolder empty; static StringHolder empty;
private: private:
static inline StringHolder* bufferFromText (juce_wchar* const text) throw()
static inline StringHolder* bufferFromText (void* const text) throw()
{ {
// (Can't use offsetof() here because of warnings about this not being a POD) // (Can't use offsetof() here because of warnings about this not being a POD)
return reinterpret_cast <StringHolder*> (reinterpret_cast <char*> (text)
return reinterpret_cast <StringHolder*> (static_cast <char*> (text)
- (reinterpret_cast <size_t> (reinterpret_cast <StringHolder*> (1)->text) - 1)); - (reinterpret_cast <size_t> (reinterpret_cast <StringHolder*> (1)->text) - 1));
} }
}; };
@@ -1364,9 +1364,7 @@ const String String::substring (int start, int end) const
return empty; return empty;
int len = 0; int len = 0;
const juce_wchar* const t = text;
while (len <= end && t [len] != 0)
while (len <= end && text [len] != 0)
++len; ++len;
if (end >= len) if (end >= len)
@@ -1389,8 +1387,8 @@ const String String::substring (const int start) const
if (start >= len) if (start >= len)
return empty; return empty;
else
return String (text + start, len - start);
return String (text + start, len - start);
} }
const String String::dropLastCharacters (const int numberToDrop) const const String String::dropLastCharacters (const int numberToDrop) const
@@ -1409,11 +1407,10 @@ const String String::fromFirstOccurrenceOf (const String& sub,
{ {
const int i = ignoreCase ? indexOfIgnoreCase (sub) const int i = ignoreCase ? indexOfIgnoreCase (sub)
: indexOf (sub); : indexOf (sub);
if (i < 0) if (i < 0)
return empty; return empty;
else
return substring (includeSubString ? i : i + sub.length());
return substring (includeSubString ? i : i + sub.length());
} }
const String String::fromLastOccurrenceOf (const String& sub, const String String::fromLastOccurrenceOf (const String& sub,
@@ -1422,7 +1419,6 @@ const String String::fromLastOccurrenceOf (const String& sub,
{ {
const int i = ignoreCase ? lastIndexOfIgnoreCase (sub) const int i = ignoreCase ? lastIndexOfIgnoreCase (sub)
: lastIndexOf (sub); : lastIndexOf (sub);
if (i < 0) if (i < 0)
return *this; return *this;
@@ -1435,7 +1431,6 @@ const String String::upToFirstOccurrenceOf (const String& sub,
{ {
const int i = ignoreCase ? indexOfIgnoreCase (sub) const int i = ignoreCase ? indexOfIgnoreCase (sub)
: indexOf (sub); : indexOf (sub);
if (i < 0) if (i < 0)
return *this; return *this;
@@ -1517,8 +1512,8 @@ const String String::trim() const
return empty; return empty;
else if (start > 0 || end < len) else if (start > 0 || end < len)
return String (text + start, end - start); return String (text + start, end - start);
else
return *this;
return *this;
} }
const String String::trimStart() const const String String::trimStart() const
@@ -1533,8 +1528,8 @@ const String String::trimStart() const
if (t == text) if (t == text)
return *this; return *this;
else
return String (t);
return String (t);
} }
const String String::trimEnd() const const String String::trimEnd() const
@@ -1552,9 +1547,6 @@ const String String::trimEnd() const
const String String::trimCharactersAtStart (const String& charactersToTrim) const const String String::trimCharactersAtStart (const String& charactersToTrim) const
{ {
if (isEmpty())
return empty;
const juce_wchar* t = text; const juce_wchar* t = text;
while (charactersToTrim.containsChar (*t)) while (charactersToTrim.containsChar (*t))
@@ -1562,8 +1554,8 @@ const String String::trimCharactersAtStart (const String& charactersToTrim) cons
if (t == text) if (t == text)
return *this; return *this;
else
return String (t);
return String (t);
} }
const String String::trimCharactersAtEnd (const String& charactersToTrim) const const String String::trimCharactersAtEnd (const String& charactersToTrim) const
@@ -1624,7 +1616,17 @@ const String String::removeCharacters (const String& charactersToRemove) const
const String String::initialSectionContainingOnly (const String& permittedCharacters) const const String String::initialSectionContainingOnly (const String& permittedCharacters) const
{ {
return substring (0, CharacterFunctions::getIntialSectionContainingOnly (text, permittedCharacters.text));
int i = 0;
for (;;)
{
if (! permittedCharacters.containsChar (text[i]))
break;
++i;
}
return substring (0, i);
} }
const String String::initialSectionNotContaining (const String& charactersToStopAt) const const String String::initialSectionNotContaining (const String& charactersToStopAt) const
@@ -1940,7 +1942,7 @@ const char* String::toUTF8() const
String* const mutableThis = const_cast <String*> (this); String* const mutableThis = const_cast <String*> (this);
mutableThis->text = StringHolder::makeUniqueWithSize (mutableThis->text, currentLen + 1 + utf8BytesNeeded / sizeof (juce_wchar)); mutableThis->text = StringHolder::makeUniqueWithSize (mutableThis->text, currentLen + 1 + utf8BytesNeeded / sizeof (juce_wchar));
char* const otherCopy = (char*) (text + currentLen);
char* const otherCopy = reinterpret_cast <char*> (text + currentLen);
copyToUTF8 (otherCopy, std::numeric_limits<int>::max()); copyToUTF8 (otherCopy, std::numeric_limits<int>::max());
return otherCopy; return otherCopy;
@@ -2128,12 +2130,11 @@ const char* String::toCString() const
} }
else else
{ {
int len = length();
const int len = length();
String* const mutableThis = const_cast <String*> (this); String* const mutableThis = const_cast <String*> (this);
mutableThis->text = StringHolder::makeUniqueWithSize (mutableThis->text, (len + 1) * 2); mutableThis->text = StringHolder::makeUniqueWithSize (mutableThis->text, (len + 1) * 2);
char* otherCopy = (char*) (text + len + 1);
char* otherCopy = reinterpret_cast <char*> (text + len + 1);
CharacterFunctions::copy (otherCopy, text, len); CharacterFunctions::copy (otherCopy, text, len);
otherCopy [len] = 0; otherCopy [len] = 0;
return otherCopy; return otherCopy;


+ 1
- 1
src/text/juce_XmlElement.h View File

@@ -145,7 +145,7 @@ class JUCE_API XmlElement
public: public:
//============================================================================== //==============================================================================
/** Creates an XmlElement with this tag name. */ /** Creates an XmlElement with this tag name. */
XmlElement (const String& tagName) throw();
explicit XmlElement (const String& tagName) throw();
/** Creates a (deep) copy of another element. */ /** Creates a (deep) copy of another element. */
XmlElement (const XmlElement& other) throw(); XmlElement (const XmlElement& other) throw();


+ 1
- 1
src/threads/juce_InterProcessLock.h View File

@@ -43,7 +43,7 @@ public:
@param name a name that processes will use to identify this lock object @param name a name that processes will use to identify this lock object
*/ */
InterProcessLock (const String& name);
explicit InterProcessLock (const String& name);
/** Destructor. /** Destructor.


+ 6
- 0
src/threads/juce_Process.h View File

@@ -91,6 +91,12 @@ public:
/** Returns true if this process is being hosted by a debugger. /** Returns true if this process is being hosted by a debugger.
*/ */
static bool JUCE_CALLTYPE isRunningUnderDebugger(); static bool JUCE_CALLTYPE isRunningUnderDebugger();
private:
Process();
Process (const Process&);
Process& operator= (const Process&);
}; };


+ 4
- 4
src/threads/juce_ScopedLock.h View File

@@ -66,7 +66,7 @@ public:
otherwise there are no guarantees what will happen! Best just to use it 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. as a local stack object, rather than creating one with the new() operator.
*/ */
inline ScopedLock (const CriticalSection& lock) throw() : lock_ (lock) { lock.enter(); }
inline explicit ScopedLock (const CriticalSection& lock) throw() : lock_ (lock) { lock.enter(); }
/** Destructor. /** Destructor.
@@ -75,7 +75,7 @@ public:
Make sure this object is created and deleted by the same thread, Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen! otherwise there are no guarantees what will happen!
*/ */
inline ~ScopedLock() throw() { lock_.exit(); }
inline ~ScopedLock() throw() { lock_.exit(); }
private: private:
@@ -139,7 +139,7 @@ public:
otherwise there are no guarantees what will happen! Best just to use it 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. as a local stack object, rather than creating one with the new() operator.
*/ */
inline ScopedUnlock (const CriticalSection& lock) throw() : lock_ (lock) { lock.exit(); }
inline explicit ScopedUnlock (const CriticalSection& lock) throw() : lock_ (lock) { lock.exit(); }
/** Destructor. /** Destructor.
@@ -148,7 +148,7 @@ public:
Make sure this object is created and deleted by the same thread, Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen! otherwise there are no guarantees what will happen!
*/ */
inline ~ScopedUnlock() throw() { lock_.enter(); }
inline ~ScopedUnlock() throw() { lock_.enter(); }
private: private:


+ 2
- 2
src/threads/juce_ScopedReadLock.h View File

@@ -66,7 +66,7 @@ public:
otherwise there are no guarantees what will happen! Best just to use it 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. as a local stack object, rather than creating one with the new() operator.
*/ */
inline ScopedReadLock (const ReadWriteLock& lock) throw() : lock_ (lock) { lock.enterRead(); }
inline explicit ScopedReadLock (const ReadWriteLock& lock) throw() : lock_ (lock) { lock.enterRead(); }
/** Destructor. /** Destructor.
@@ -75,7 +75,7 @@ public:
Make sure this object is created and deleted by the same thread, Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen! otherwise there are no guarantees what will happen!
*/ */
inline ~ScopedReadLock() throw() { lock_.exitRead(); }
inline ~ScopedReadLock() throw() { lock_.exitRead(); }
private: private:


+ 3
- 3
src/threads/juce_ScopedTryLock.h View File

@@ -75,7 +75,7 @@ public:
otherwise there are no guarantees what will happen! Best just to use it 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. as a local stack object, rather than creating one with the new() operator.
*/ */
inline ScopedTryLock (const CriticalSection& lock) throw() : lock_ (lock), lockWasSuccessful (lock.tryEnter()) {}
inline explicit ScopedTryLock (const CriticalSection& lock) throw() : lock_ (lock), lockWasSuccessful (lock.tryEnter()) {}
/** Destructor. /** Destructor.
@@ -84,13 +84,13 @@ public:
Make sure this object is created and deleted by the same thread, Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen! otherwise there are no guarantees what will happen!
*/ */
inline ~ScopedTryLock() throw() { if (lockWasSuccessful) lock_.exit(); }
inline ~ScopedTryLock() throw() { if (lockWasSuccessful) lock_.exit(); }
/** Lock state /** Lock state
@return True if the CriticalSection is locked. @return True if the CriticalSection is locked.
*/ */
bool isLocked() const throw() { return lockWasSuccessful; }
bool isLocked() const throw() { return lockWasSuccessful; }
private: private:
//============================================================================== //==============================================================================


+ 2
- 2
src/threads/juce_ScopedWriteLock.h View File

@@ -66,7 +66,7 @@ public:
otherwise there are no guarantees what will happen! Best just to use it 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. as a local stack object, rather than creating one with the new() operator.
*/ */
inline ScopedWriteLock (const ReadWriteLock& lock) throw() : lock_ (lock) { lock.enterWrite(); }
inline explicit ScopedWriteLock (const ReadWriteLock& lock) throw() : lock_ (lock) { lock.enterWrite(); }
/** Destructor. /** Destructor.
@@ -75,7 +75,7 @@ public:
Make sure this object is created and deleted by the same thread, Make sure this object is created and deleted by the same thread,
otherwise there are no guarantees what will happen! otherwise there are no guarantees what will happen!
*/ */
inline ~ScopedWriteLock() throw() { lock_.exitWrite(); }
inline ~ScopedWriteLock() throw() { lock_.exitWrite(); }
private: private:


+ 3
- 1
src/threads/juce_Thread.h View File

@@ -55,7 +55,7 @@ public:
When first created, the thread is not running. Use the startThread() When first created, the thread is not running. Use the startThread()
method to start it. method to start it.
*/ */
Thread (const String& threadName);
explicit Thread (const String& threadName);
/** Destructor. /** Destructor.
@@ -200,6 +200,8 @@ public:
This puts the thread to sleep until either the timeout period expires, or This puts the thread to sleep until either the timeout period expires, or
another thread calls the notify() method to wake it up. another thread calls the notify() method to wake it up.
A negative time-out value means that the method will wait indefinitely.
@returns true if the event has been signalled, false if the timeout expires. @returns true if the event has been signalled, false if the timeout expires.
*/ */
bool wait (int timeOutMilliseconds) const; bool wait (int timeOutMilliseconds) const;


+ 1
- 1
src/threads/juce_ThreadPool.h View File

@@ -57,7 +57,7 @@ public:
After creating your job, add it to a thread pool with ThreadPool::addJob(). After creating your job, add it to a thread pool with ThreadPool::addJob().
*/ */
ThreadPoolJob (const String& name);
explicit ThreadPoolJob (const String& name);
/** Destructor. */ /** Destructor. */
virtual ~ThreadPoolJob(); virtual ~ThreadPoolJob();


+ 1
- 1
src/threads/juce_TimeSliceThread.h View File

@@ -83,7 +83,7 @@ public:
When first created, the thread is not running. Use the startThread() When first created, the thread is not running. Use the startThread()
method to start it. method to start it.
*/ */
TimeSliceThread (const String& threadName);
explicit TimeSliceThread (const String& threadName);
/** Destructor. /** Destructor.


+ 1
- 1
src/utilities/juce_SelectedItemSet.h View File

@@ -55,7 +55,7 @@ public:
} }
/** Creates a set based on an array of items. */ /** Creates a set based on an array of items. */
SelectedItemSet (const Array <SelectableItemType>& items)
explicit SelectedItemSet (const Array <SelectableItemType>& items)
: selectedItems (items) : selectedItems (items)
{ {
} }


Loading…
Cancel
Save