@@ -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; | ||||
} | } | ||||
@@ -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(); | ||||
@@ -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. | ||||
@@ -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(); | ||||
@@ -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; | ||||
@@ -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&); | ||||
@@ -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&); | |||||
}; | }; | ||||
@@ -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; | ||||
@@ -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(); | |||||
}; | }; | ||||
@@ -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); | ||||
} | } | ||||
@@ -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; | |||||
}; | }; | ||||
@@ -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. | ||||
@@ -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); | ||||
@@ -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 | ||||
@@ -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(); | ||||
@@ -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(); | ||||
@@ -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&); | |||||
}; | }; | ||||
@@ -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(); | ||||
@@ -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. */ | ||||
@@ -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(); | ||||
@@ -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(); | ||||
@@ -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(); | ||||
@@ -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(); | ||||
@@ -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(); | ||||
@@ -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. | ||||
@@ -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(); | ||||
@@ -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(); | ||||
@@ -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(); | ||||
@@ -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_) | ||||
{ | { | ||||
@@ -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(); | ||||
@@ -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(); | ||||
@@ -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; | ||||
@@ -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(); | ||||
@@ -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: | ||||
@@ -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(); | ||||
@@ -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(); | ||||
@@ -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(); | ||||
@@ -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; | ||||
} | } | ||||
@@ -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); | ||||
@@ -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; | ||||
@@ -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; | ||||
} | } | ||||
@@ -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; | ||||
} | } | ||||
@@ -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; | ||||
@@ -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(); | ||||
@@ -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. | ||||
@@ -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&); | |||||
}; | }; | ||||
@@ -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: | ||||
@@ -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: | ||||
@@ -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: | ||||
//============================================================================== | //============================================================================== | ||||
@@ -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: | ||||
@@ -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; | ||||
@@ -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(); | ||||
@@ -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. | ||||
@@ -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) | ||||
{ | { | ||||
} | } | ||||