/** * This class holds all info about File IDs (FIDs). */ class FIDInfo() { private val inUse: MutableSet = mutableSetOf() /** * A single FID. * * @param fid The actual FID value. * @param path The path of the FID, represented as successive path name elements. * @param qid The QID associated with the FID. */ data class FID(val fid: UInt, val path: List, val qid: QID) /** * Add a FID with the associated file path and QID. */ fun addFID(fid: FID) { this.inUse.add(fid) } /** * Find the path associated to a FID. * * @param fid The FID to find the path of. * @return The path if [fid] could be found, or null otherwise. */ fun findPathByFID(fid: UInt): List? { return this.inUse.find { x -> x.fid == fid }?.path } /** * Find the FID associated to a path. * * @param path The path to find the FID of. * @return The FID if [path] has an associated FID, or null otherwise. */ fun findFIDByPath(path: List): UInt? { return this.inUse.find { x -> x.path == path }?.fid } }