lfilesystem  0.0.1
C++ filesystem library
Todo List
Class limes::files::Directory
getNonexistentChild()
Member limes::files::Directory::iterateAllChildren (FileCallback &&fileCallback, DirectoryCallback &&directoryCallback, SymLinkCallback &&symLinkCallback, bool recurse=true, bool includeHiddenFiles=true) const
test coverage
Member limes::files::Directory::iterateAllChildren (FilesystemEntryCallback &&callback, bool recurse=true, bool includeHiddenFiles=true) const
test coverage
Member limes::files::Directory::iterateDirectories (DirectoryCallback &&callback, bool recurse=true, bool includeHiddenFiles=true) const
test coverage
Member limes::files::Directory::iterateFiles (FileCallback &&callback, bool recurse=true, bool includeHiddenFiles=true) const
test coverage
Member limes::files::Directory::iterateSymLinks (SymLinkCallback &&callback, bool recurse=true, bool includeHiddenFiles=true) const
test coverage
Member limes::files::Directory::operator= (const Path &newPath)
test coverage
Member limes::files::Directory::setAsWorkingDirectory () const
test coverage
Class limes::files::DynamicLibrary

function to check if dynamic libraries are supported by the current system

function to add a directory to the search paths for DLLs?

use emscripten_dlopen when building with Emscripten. Note that this function is asynchronous, however.

double check iOS. I've heard that iOS disallows calling dlopen() .

Member limes::files::DynamicLibrary::getFile () const
Emscripten implementation
Class limes::files::File

start as process

get user/group ID of owner?

Member limes::files::File::duplicate () const noexcept
test coverage
Member limes::files::File::getInputStream () const
test coverage
Member limes::files::File::getOutputStream () const
test coverage
Member limes::files::File::operator= (const std::string_view &newPath)
test coverage
Member limes::files::File::operator= (const Path &newPath)
test coverage
Member limes::files::File::replaceFileExtension (const std::string_view &newFileExtension, bool renameOnDisk=true)
test coverage
Class limes::files::FilesystemEntry

getNonexistentSibling()

getCreationTime(), getLastAccessTime()

tests for getModificationTime(), getCreationTime(), getLastAccessTime()

Member limes::files::FilesystemEntry::createIfDoesntExist () const noexcept
test coverage for directories and symlinks
Member limes::files::FilesystemEntry::getAbsolutePath (bool makePreferred=false) const noexcept
test coverage for makePreferred=true
Member limes::files::FilesystemEntry::getDirectoryObject () const noexcept
test coverage for nullopt case
Member limes::files::FilesystemEntry::getFileObject () const noexcept
test coverage for nullopt case
Member limes::files::FilesystemEntry::getLastModificationTime () const noexcept
test coverage
Member limes::files::FilesystemEntry::getPath (bool makePreferred=false) const noexcept
test coverage for makePreferred=true
Member limes::files::FilesystemEntry::getSymLinkObject () const noexcept
better test coverage for function's internal branches
Member limes::files::FilesystemEntry::isBelow (const Directory &directory, std::size_t depthLimit=50) const
test coverage for false case
Member limes::files::FilesystemEntry::makeAbsoluteRelativeTo (const Path &basePath) noexcept
test coverage – should return false if basePath is not absolute
Member limes::files::FilesystemEntry::operator bool () const noexcept
test coverage
Member limes::files::FilesystemEntry::operator/ (const std::string_view &subpathName) const
test coverage
Member limes::files::FilesystemEntry::operator/= (const std::string_view &subpathName)
test coverage
Member limes::files::FilesystemEntry::operator< (const FilesystemEntry &other) const noexcept
test coverage
Member limes::files::FilesystemEntry::operator= (const Path &newPath)
test coverage (for all 3)
Member limes::files::FilesystemEntry::operator== (const FilesystemEntry &other) const noexcept
test coverage for overloads accepting a Path argument
Member limes::files::FilesystemEntry::touch () const
test coverage
Class limes::files::FileWatcher

how to test this class? A test would basically need to check that the proper callbacks are indeed called when a watched file is mutated. Is this even possible?

iOS, Android and Emscripten implementations. This class requires platform-specific code, probably JNI for Android and Swift/ObjC for iOS. Is this class possible to implement for Emscripten?

Member limes::files::maxPathLength () noexcept
query the actual underlying filesystem for this?
Member limes::files::PATHseparator () noexcept
is there a way to actually query the underlying filesystem for this?
Member limes::files::Permissions::getStdPerms () const noexcept
test coverage
Member limes::files::Permissions::hasStickyBit () const noexcept
test coverage
Member limes::files::Permissions::othersAll () noexcept
test coverage
Member limes::files::Permissions::toString () const
test coverage for unknown/empty case
Member limes::files::Permissions::withAll (Scope s=Scope::All) const noexcept
test coverage
Member limes::files::Permissions::withStickyBit () const noexcept
test coverage
Member limes::files::SymLink::follow (std::size_t recursionDepth=50) const noexcept
protection from cycles? The recursion depth helps, but we could throw an exception if a cycle begins (one of the targets is the same as one of the previous targets). This would require storing the previously visited targets in memory, so the question becomes if this is worth it.
Class limes::files::TempFile
unit tests
Class limes::files::Volume

ConstructionError custom exception type? This could allow more specific error checking. The error could contain the original passed path.

supportsHardLinks()?

Member limes::files::Volume::getLabel () const
test coverage
Member limes::files::Volume::getSerialNumber () const
test coverage
Member limes::files::Volume::getType () const

Linux: detect RAM type

Mac: detect RAM & Network types

Member limes::files::Volume::operator!= (const Volume &other) const noexcept
test coverage
Module limes_files

get all CI builds working

remove internal dependencies on exceptions (Emscripten tests)

CLI app

Android support

MemoryMappedFile class

FileSearchPath class and/or glob() function

Module limes_files_special_dirs

more special dirs

Android implementations. None of these functions are implemented for Android, it will probably require some native JNI code.