mirror of https://github.com/stella-emu/stella.git
Further optimization to FSNodeWINDOWS; eliminate function call.
This commit is contained in:
parent
a4c5e57454
commit
f72aff57a9
|
@ -141,46 +141,39 @@ bool FSNodeWINDOWS::getChildren(AbstractFSList& myList, ListMode mode) const
|
|||
if (handle == INVALID_HANDLE_VALUE)
|
||||
return false;
|
||||
|
||||
addFile(myList, mode, _path, desc);
|
||||
|
||||
while (FindNextFile(handle, &desc))
|
||||
addFile(myList, mode, _path, desc);
|
||||
|
||||
FindClose(handle);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void FSNodeWINDOWS::addFile(AbstractFSList& list, ListMode mode,
|
||||
const string& base, const WIN32_FIND_DATA& find_data)
|
||||
{
|
||||
const char* const asciiName = find_data.cFileName;
|
||||
do {
|
||||
const char* const asciiName = desc.cFileName;
|
||||
|
||||
// Skip files starting with '.' (we assume empty filenames never occur)
|
||||
if (asciiName[0] == '.')
|
||||
return;
|
||||
continue;
|
||||
|
||||
const bool isDirectory = static_cast<bool>(find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
|
||||
const bool isFile = !isDirectory;//(find_data->dwFileAttributes & FILE_ATTRIBUTE_NORMAL ? true : false);
|
||||
const bool isDirectory = static_cast<bool>(desc.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
|
||||
const bool isFile = !isDirectory;
|
||||
|
||||
if ((isFile && mode == FSNode::ListMode::DirectoriesOnly) ||
|
||||
(isDirectory && mode == FSNode::ListMode::FilesOnly))
|
||||
return;
|
||||
continue;
|
||||
|
||||
FSNodeWINDOWS entry;
|
||||
entry._isDirectory = isDirectory;
|
||||
entry._isFile = isFile;
|
||||
entry._displayName = asciiName;
|
||||
entry._path = base;
|
||||
entry._path = _path;
|
||||
entry._path += asciiName;
|
||||
if (entry._isDirectory)
|
||||
entry._path += FSNode::PATH_SEPARATOR;
|
||||
entry._isPseudoRoot = false;
|
||||
entry._size = find_data.nFileSizeHigh * (static_cast<size_t>(MAXDWORD) + 1) + find_data.nFileSizeLow;
|
||||
entry._size = desc.nFileSizeHigh * (static_cast<size_t>(MAXDWORD) + 1) + desc.nFileSizeLow;
|
||||
|
||||
list.emplace_back(make_unique<FSNodeWINDOWS>(entry));
|
||||
myList.emplace_back(make_unique<FSNodeWINDOWS>(entry));
|
||||
}
|
||||
while (FindNextFile(handle, &desc));
|
||||
|
||||
FindClose(handle);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -77,18 +77,6 @@ class FSNodeWINDOWS : public AbstractFSNode
|
|||
*/
|
||||
bool setFlags();
|
||||
|
||||
/**
|
||||
* Adds a single FSNodeWINDOWS to a given list.
|
||||
* This method is used by getChildren() to populate the directory entries list.
|
||||
*
|
||||
* @param list List to put the file entry node in.
|
||||
* @param mode Mode to use while adding the file entry to the list.
|
||||
* @param base String with the directory being listed.
|
||||
* @param find_data Describes a file that the FindFirstFile, FindFirstFileEx, or FindNextFile functions find.
|
||||
*/
|
||||
static void addFile(AbstractFSList& list, ListMode mode,
|
||||
const string& base, const WIN32_FIND_DATA& find_data);
|
||||
|
||||
private:
|
||||
string _displayName, _path;
|
||||
bool _isPseudoRoot{false}, _isDirectory{false}, _isFile{false};
|
||||
|
|
Loading…
Reference in New Issue