diff --git a/modules/juce_core/files/juce_DirectoryIterator.cpp b/modules/juce_core/files/juce_DirectoryIterator.cpp index 5a8a952bca..7bed2d790a 100644 --- a/modules/juce_core/files/juce_DirectoryIterator.cpp +++ b/modules/juce_core/files/juce_DirectoryIterator.cpp @@ -24,16 +24,13 @@ namespace juce { DirectoryIterator::DirectoryIterator (const File& directory, bool recursive, - const String& pattern, const int type) + const String& pattern, int type) : wildCards (parseWildcards (pattern)), fileFinder (directory, (recursive || wildCards.size() > 1) ? "*" : pattern), wildCard (pattern), path (File::addTrailingSeparator (directory.getFullPathName())), - index (-1), - totalNumFiles (-1), whatToLookFor (type), - isRecursive (recursive), - hasBeenAdvanced (false) + isRecursive (recursive) { // you have to specify the type of files you're looking for! jassert ((type & (File::findFiles | File::findDirectories)) != 0); @@ -53,10 +50,10 @@ StringArray DirectoryIterator::parseWildcards (const String& pattern) return s; } -bool DirectoryIterator::fileMatches (const StringArray& wildCards, const String& filename) +bool DirectoryIterator::fileMatches (const StringArray& wildcards, const String& filename) { - for (int i = 0; i < wildCards.size(); ++i) - if (filename.matchesWildcard (wildCards[i], ! File::areFileNamesCaseSensitive())) + for (auto& w : wildcards) + if (filename.matchesWildcard (w, ! File::areFileNamesCaseSensitive())) return true; return false; @@ -67,8 +64,8 @@ bool DirectoryIterator::next() return next (nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); } -bool DirectoryIterator::next (bool* const isDirResult, bool* const isHiddenResult, int64* const fileSize, - Time* const modTime, Time* const creationTime, bool* const isReadOnly) +bool DirectoryIterator::next (bool* isDirResult, bool* isHiddenResult, int64* fileSize, + Time* modTime, Time* creationTime, bool* isReadOnly) { for (;;) { @@ -156,8 +153,8 @@ float DirectoryIterator::getEstimatedProgress() const if (totalNumFiles <= 0) return 0.0f; - const float detailedIndex = (subIterator != nullptr) ? index + subIterator->getEstimatedProgress() - : (float) index; + auto detailedIndex = (subIterator != nullptr) ? index + subIterator->getEstimatedProgress() + : (float) index; return jlimit (0.0f, 1.0f, detailedIndex / totalNumFiles); } diff --git a/modules/juce_core/files/juce_DirectoryIterator.h b/modules/juce_core/files/juce_DirectoryIterator.h index 667cd8b49f..44cf38fbfc 100644 --- a/modules/juce_core/files/juce_DirectoryIterator.h +++ b/modules/juce_core/files/juce_DirectoryIterator.h @@ -140,11 +140,11 @@ private: StringArray wildCards; NativeIterator fileFinder; String wildCard, path; - int index; - mutable int totalNumFiles; + int index = -1; + mutable int totalNumFiles = -1; const int whatToLookFor; const bool isRecursive; - bool hasBeenAdvanced; + bool hasBeenAdvanced = false; ScopedPointer subIterator; File currentFile; diff --git a/modules/juce_core/files/juce_FileInputStream.cpp b/modules/juce_core/files/juce_FileInputStream.cpp index 638abf9831..0b6ab6361b 100644 --- a/modules/juce_core/files/juce_FileInputStream.cpp +++ b/modules/juce_core/files/juce_FileInputStream.cpp @@ -27,11 +27,7 @@ int64 juce_fileSetPosition (void* handle, int64 pos); //============================================================================== -FileInputStream::FileInputStream (const File& f) - : file (f), - fileHandle (nullptr), - currentPosition (0), - status (Result::ok()) +FileInputStream::FileInputStream (const File& f) : file (f) { openHandle(); } @@ -53,7 +49,7 @@ int FileInputStream::read (void* buffer, int bytesToRead) // sign that something is broken! jassert (buffer != nullptr && bytesToRead >= 0); - const size_t num = readInternal (buffer, (size_t) bytesToRead); + auto num = readInternal (buffer, (size_t) bytesToRead); currentPosition += (int64) num; return (int) num; diff --git a/modules/juce_core/files/juce_FileInputStream.h b/modules/juce_core/files/juce_FileInputStream.h index 9fd84b0251..bf83dd6628 100644 --- a/modules/juce_core/files/juce_FileInputStream.h +++ b/modules/juce_core/files/juce_FileInputStream.h @@ -75,9 +75,9 @@ public: private: //============================================================================== const File file; - void* fileHandle; - int64 currentPosition; - Result status; + void* fileHandle = nullptr; + int64 currentPosition = 0; + Result status { Result::ok() }; void openHandle(); size_t readInternal (void*, size_t); diff --git a/modules/juce_core/files/juce_FileOutputStream.cpp b/modules/juce_core/files/juce_FileOutputStream.cpp index 495104380d..4d8e7b4576 100644 --- a/modules/juce_core/files/juce_FileOutputStream.cpp +++ b/modules/juce_core/files/juce_FileOutputStream.cpp @@ -28,11 +28,7 @@ int64 juce_fileSetPosition (void* handle, int64 pos); //============================================================================== FileOutputStream::FileOutputStream (const File& f, const size_t bufferSizeToUse) : file (f), - fileHandle (nullptr), - status (Result::ok()), - currentPosition (0), bufferSize (bufferSizeToUse), - bytesInBuffer (0), buffer (jmax (bufferSizeToUse, (size_t) 16)) { openHandle(); @@ -102,7 +98,7 @@ bool FileOutputStream::write (const void* const src, const size_t numBytes) } else { - const ssize_t bytesWritten = writeInternal (src, numBytes); + auto bytesWritten = writeInternal (src, numBytes); if (bytesWritten < 0) return false; diff --git a/modules/juce_core/files/juce_FileOutputStream.h b/modules/juce_core/files/juce_FileOutputStream.h index 3e1100ce76..ebe50fe64f 100644 --- a/modules/juce_core/files/juce_FileOutputStream.h +++ b/modules/juce_core/files/juce_FileOutputStream.h @@ -94,10 +94,10 @@ public: private: //============================================================================== File file; - void* fileHandle; - Result status; - int64 currentPosition; - size_t bufferSize, bytesInBuffer; + void* fileHandle = nullptr; + Result status { Result::ok() }; + int64 currentPosition = 0; + size_t bufferSize, bytesInBuffer = 0; HeapBlock buffer; void openHandle(); diff --git a/modules/juce_core/files/juce_FileSearchPath.cpp b/modules/juce_core/files/juce_FileSearchPath.cpp index baa2539f6f..4299ec6fb7 100644 --- a/modules/juce_core/files/juce_FileSearchPath.cpp +++ b/modules/juce_core/files/juce_FileSearchPath.cpp @@ -55,8 +55,8 @@ void FileSearchPath::init (const String& path) directories.trim(); directories.removeEmptyStrings(); - for (int i = directories.size(); --i >= 0;) - directories.set (i, directories[i].unquoted()); + for (auto& d : directories) + d = d.unquoted(); } int FileSearchPath::getNumPaths() const @@ -64,37 +64,38 @@ int FileSearchPath::getNumPaths() const return directories.size(); } -File FileSearchPath::operator[] (const int index) const +File FileSearchPath::operator[] (int index) const { - return File (directories [index]); + return File (directories[index]); } String FileSearchPath::toString() const { - StringArray directories2 (directories); - for (int i = directories2.size(); --i >= 0;) - if (directories2[i].containsChar (';')) - directories2.set (i, directories2[i].quoted()); + auto dirs = directories; - return directories2.joinIntoString (";"); + for (auto& d : dirs) + if (d.containsChar (';')) + d = d.quoted(); + + return dirs.joinIntoString (";"); } -void FileSearchPath::add (const File& dir, const int insertIndex) +void FileSearchPath::add (const File& dir, int insertIndex) { directories.insert (insertIndex, dir.getFullPathName()); } bool FileSearchPath::addIfNotAlreadyThere (const File& dir) { - for (int i = 0; i < directories.size(); ++i) - if (File (directories[i]) == dir) + for (auto& d : directories) + if (File (d) == dir) return false; add (dir); return true; } -void FileSearchPath::remove (const int index) +void FileSearchPath::remove (int index) { directories.remove (index); } @@ -115,7 +116,7 @@ void FileSearchPath::removeRedundantPaths() { const File d2 (directories[j]); - if ((i != j) && (d1.isAChildOf (d2) || d1 == d2)) + if (i != j && (d1.isAChildOf (d2) || d1 == d2)) { directories.remove (i); break; @@ -131,18 +132,13 @@ void FileSearchPath::removeNonExistentPaths() directories.remove (i); } -int FileSearchPath::findChildFiles (Array& results, - const int whatToLookFor, - const bool searchRecursively, - const String& wildCardPattern) const +int FileSearchPath::findChildFiles (Array& results, int whatToLookFor, + bool recurse, const String& wildcard) const { int total = 0; - for (int i = 0; i < directories.size(); ++i) - total += operator[] (i).findChildFiles (results, - whatToLookFor, - searchRecursively, - wildCardPattern); + for (auto& d : directories) + total += File (d).findChildFiles (results, whatToLookFor, recurse, wildcard); return total; } @@ -150,18 +146,16 @@ int FileSearchPath::findChildFiles (Array& results, bool FileSearchPath::isFileInPath (const File& fileToCheck, const bool checkRecursively) const { - for (int i = directories.size(); --i >= 0;) + for (auto& d : directories) { - const File d (directories[i]); - if (checkRecursively) { - if (fileToCheck.isAChildOf (d)) + if (fileToCheck.isAChildOf (File (d))) return true; } else { - if (fileToCheck.getParentDirectory() == d) + if (fileToCheck.getParentDirectory() == File (d)) return true; } } diff --git a/modules/juce_core/files/juce_TemporaryFile.cpp b/modules/juce_core/files/juce_TemporaryFile.cpp index 7010677920..794d6a1a2b 100644 --- a/modules/juce_core/files/juce_TemporaryFile.cpp +++ b/modules/juce_core/files/juce_TemporaryFile.cpp @@ -24,7 +24,7 @@ namespace juce { static File createTempFile (const File& parentDirectory, String name, - const String& suffix, const int optionFlags) + const String& suffix, int optionFlags) { if ((optionFlags & TemporaryFile::useHiddenFile) != 0) name = "." + name; diff --git a/modules/juce_core/files/juce_WildcardFileFilter.cpp b/modules/juce_core/files/juce_WildcardFileFilter.cpp index 8db43f34e7..03e3085d52 100644 --- a/modules/juce_core/files/juce_WildcardFileFilter.cpp +++ b/modules/juce_core/files/juce_WildcardFileFilter.cpp @@ -26,23 +26,22 @@ namespace juce static void parseWildcard (const String& pattern, StringArray& result) { result.addTokens (pattern.toLowerCase(), ";,", "\"'"); - result.trim(); result.removeEmptyStrings(); // special case for *.*, because people use it to mean "any file", but it // would actually ignore files with no extension. - for (int i = result.size(); --i >= 0;) - if (result[i] == "*.*") - result.set (i, "*"); + for (auto& r : result) + if (r == "*.*") + r = "*"; } static bool matchWildcard (const File& file, const StringArray& wildcards) { - const String filename (file.getFileName()); + auto filename = file.getFileName(); - for (int i = wildcards.size(); --i >= 0;) - if (filename.matchesWildcard (wildcards[i], true)) + for (auto& w : wildcards) + if (filename.matchesWildcard (w, true)) return true; return false; diff --git a/modules/juce_core/streams/juce_BufferedInputStream.cpp b/modules/juce_core/streams/juce_BufferedInputStream.cpp index d53484fe22..b94ed0e068 100644 --- a/modules/juce_core/streams/juce_BufferedInputStream.cpp +++ b/modules/juce_core/streams/juce_BufferedInputStream.cpp @@ -59,8 +59,10 @@ BufferedInputStream::~BufferedInputStream() //============================================================================== char BufferedInputStream::peekByte() { - ensureBuffered(); - return position < lastReadPos ? *(buffer + (int) (position - bufferStart)) : 0; + if (! ensureBuffered()) + return 0; + + return position < lastReadPos ? buffer[(int) (position - bufferStart)] : 0; } int64 BufferedInputStream::getTotalLength() @@ -84,7 +86,7 @@ bool BufferedInputStream::isExhausted() return position >= lastReadPos && source->isExhausted(); } -void BufferedInputStream::ensureBuffered() +bool BufferedInputStream::ensureBuffered() { auto bufferEndOverlap = lastReadPos - bufferOverlap; @@ -100,24 +102,35 @@ void BufferedInputStream::ensureBuffered() memmove (buffer, buffer + (int) (position - bufferStart), (size_t) bytesToKeep); bufferStart = position; - bytesRead = source->read (buffer + bytesToKeep, (int) (bufferSize - bytesToKeep)); + if (bytesRead < 0) + return false; + lastReadPos += bytesRead; bytesRead += bytesToKeep; } else { bufferStart = position; - source->setPosition (bufferStart); + + if (! source->setPosition (bufferStart)) + return false; + bytesRead = source->read (buffer, bufferSize); + + if (bytesRead < 0) + return false; + lastReadPos = bufferStart + bytesRead; } while (bytesRead < bufferSize) - buffer [bytesRead++] = 0; + buffer[bytesRead++] = 0; } + + return true; } int BufferedInputStream::read (void* destBuffer, int maxBytesToRead) @@ -133,7 +146,8 @@ int BufferedInputStream::read (void* destBuffer, int maxBytesToRead) } if (position < bufferStart || position >= lastReadPos) - ensureBuffered(); + if (! ensureBuffered()) + return 0; int bytesRead = 0; @@ -151,12 +165,10 @@ int BufferedInputStream::read (void* destBuffer, int maxBytesToRead) } auto oldLastReadPos = lastReadPos; - ensureBuffered(); - if (oldLastReadPos == lastReadPos) - break; // if ensureBuffered() failed to read any more data, bail out - - if (isExhausted()) + if (! ensureBuffered() + || oldLastReadPos == lastReadPos + || isExhausted()) break; } diff --git a/modules/juce_core/streams/juce_BufferedInputStream.h b/modules/juce_core/streams/juce_BufferedInputStream.h index 8719b66c5b..8a5da9ab2d 100644 --- a/modules/juce_core/streams/juce_BufferedInputStream.h +++ b/modules/juce_core/streams/juce_BufferedInputStream.h @@ -80,7 +80,7 @@ private: int bufferSize; int64 position, lastReadPos = 0, bufferStart, bufferOverlap = 128; HeapBlock buffer; - void ensureBuffered(); + bool ensureBuffered(); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BufferedInputStream) }; diff --git a/modules/juce_core/streams/juce_MemoryInputStream.cpp b/modules/juce_core/streams/juce_MemoryInputStream.cpp index 041b24ec8c..3739af3374 100644 --- a/modules/juce_core/streams/juce_MemoryInputStream.cpp +++ b/modules/juce_core/streams/juce_MemoryInputStream.cpp @@ -23,24 +23,19 @@ namespace juce { -MemoryInputStream::MemoryInputStream (const void* const sourceData, - const size_t sourceDataSize, - const bool keepInternalCopy) +MemoryInputStream::MemoryInputStream (const void* sourceData, size_t sourceDataSize, bool keepCopy) : data (sourceData), - dataSize (sourceDataSize), - position (0) + dataSize (sourceDataSize) { - if (keepInternalCopy) + if (keepCopy) createInternalCopy(); } -MemoryInputStream::MemoryInputStream (const MemoryBlock& sourceData, - const bool keepInternalCopy) +MemoryInputStream::MemoryInputStream (const MemoryBlock& sourceData, bool keepCopy) : data (sourceData.getData()), - dataSize (sourceData.getSize()), - position (0) + dataSize (sourceData.getSize()) { - if (keepInternalCopy) + if (keepCopy) createInternalCopy(); } @@ -60,14 +55,14 @@ int64 MemoryInputStream::getTotalLength() return (int64) dataSize; } -int MemoryInputStream::read (void* const buffer, const int howMany) +int MemoryInputStream::read (void* buffer, int howMany) { jassert (buffer != nullptr && howMany >= 0); if (howMany <= 0 || position >= dataSize) return 0; - const size_t num = jmin ((size_t) howMany, dataSize - position); + auto num = jmin ((size_t) howMany, dataSize - position); if (num > 0) { diff --git a/modules/juce_core/streams/juce_MemoryInputStream.h b/modules/juce_core/streams/juce_MemoryInputStream.h index 86373ca657..8b84816660 100644 --- a/modules/juce_core/streams/juce_MemoryInputStream.h +++ b/modules/juce_core/streams/juce_MemoryInputStream.h @@ -71,7 +71,7 @@ public: //============================================================================== int64 getPosition() override; - bool setPosition (int64 pos) override; + bool setPosition (int64) override; int64 getTotalLength() override; bool isExhausted() override; int read (void* destBuffer, int maxBytesToRead) override; @@ -79,7 +79,7 @@ public: private: //============================================================================== const void* data; - size_t dataSize, position; + size_t dataSize, position = 0; HeapBlock internalCopy; void createInternalCopy(); diff --git a/modules/juce_core/streams/juce_SubregionStream.cpp b/modules/juce_core/streams/juce_SubregionStream.cpp index c7b67900cb..96856a76e0 100644 --- a/modules/juce_core/streams/juce_SubregionStream.cpp +++ b/modules/juce_core/streams/juce_SubregionStream.cpp @@ -23,9 +23,9 @@ namespace juce { -SubregionStream::SubregionStream (InputStream* const sourceStream, - const int64 start, const int64 length, - const bool deleteSourceWhenDestroyed) +SubregionStream::SubregionStream (InputStream* sourceStream, + int64 start, int64 length, + bool deleteSourceWhenDestroyed) : source (sourceStream, deleteSourceWhenDestroyed), startPositionInSourceStream (start), lengthOfSourceStream (length) @@ -39,7 +39,7 @@ SubregionStream::~SubregionStream() int64 SubregionStream::getTotalLength() { - const int64 srcLen = source->getTotalLength() - startPositionInSourceStream; + auto srcLen = source->getTotalLength() - startPositionInSourceStream; return lengthOfSourceStream >= 0 ? jmin (lengthOfSourceStream, srcLen) : srcLen; diff --git a/modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp b/modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp index 0bae4d39d6..72a18ff20f 100644 --- a/modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp +++ b/modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp @@ -191,10 +191,7 @@ GZIPDecompressorInputStream::GZIPDecompressorInputStream (InputStream* source, b : sourceStream (source, deleteSourceWhenDestroyed), uncompressedStreamLength (uncompressedLength), format (f), - isEof (false), - activeBufferSize (0), originalSourcePos (source->getPosition()), - currentPos (0), buffer ((size_t) GZIPDecompressHelper::gzipDecompBufferSize), helper (new GZIPDecompressHelper (f)) { @@ -204,10 +201,7 @@ GZIPDecompressorInputStream::GZIPDecompressorInputStream (InputStream& source) : sourceStream (&source, false), uncompressedStreamLength (-1), format (zlibFormat), - isEof (false), - activeBufferSize (0), originalSourcePos (source.getPosition()), - currentPos (0), buffer ((size_t) GZIPDecompressHelper::gzipDecompBufferSize), helper (new GZIPDecompressHelper (zlibFormat)) { @@ -229,11 +223,11 @@ int GZIPDecompressorInputStream::read (void* destBuffer, int howMany) if (howMany > 0 && ! isEof) { int numRead = 0; - uint8* d = static_cast (destBuffer); + auto d = static_cast (destBuffer); while (! helper->error) { - const int n = helper->doNextBlock (d, (unsigned int) howMany); + auto n = helper->doNextBlock (d, (unsigned int) howMany); currentPos += n; if (n == 0) diff --git a/modules/juce_core/zip/juce_GZIPDecompressorInputStream.h b/modules/juce_core/zip/juce_GZIPDecompressorInputStream.h index a7edadc04d..171ccd8ef9 100644 --- a/modules/juce_core/zip/juce_GZIPDecompressorInputStream.h +++ b/modules/juce_core/zip/juce_GZIPDecompressorInputStream.h @@ -82,9 +82,9 @@ private: OptionalScopedPointer sourceStream; const int64 uncompressedStreamLength; const Format format; - bool isEof; - int activeBufferSize; - int64 originalSourcePos, currentPos; + bool isEof = false; + int activeBufferSize = 0; + int64 originalSourcePos, currentPos = 0; HeapBlock buffer; class GZIPDecompressHelper;