summaryrefslogtreecommitdiff
path: root/src/main/kotlin/PathInfo.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/PathInfo.kt')
-rw-r--r--src/main/kotlin/PathInfo.kt93
1 files changed, 0 insertions, 93 deletions
diff --git a/src/main/kotlin/PathInfo.kt b/src/main/kotlin/PathInfo.kt
deleted file mode 100644
index 2aee406..0000000
--- a/src/main/kotlin/PathInfo.kt
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * This class holds all info about paths, their FIDs, and their QIDs.
- */
-class PathInfo() {
- private val paths: MutableSet<Path> = mutableSetOf()
-
- /**
- * Information about a path. Each FID maps to one path but not all paths have FIDs (injective). On the other hand,
- * one QID can be shared with different paths and FIDs.
- *
- * FIDs are optional because some R-messages only return QIDs for certain files (e.g. walk).
- *
- * @param path The path.
- * @param fid The optional FID associated with the path.
- * @param qid The QID associated with the path.
- */
- data class Path(val path: List<String>, val fid: UInt?, val qid: QID)
-
- /**
- * Add a path.
- */
- fun addPath(path: Path) {
- this.paths.add(path)
- }
-
- /**
- * Add a QID to an existing FID. Do nothing if the given FID does not exist.
- */
- fun addQIDToFID(fid: UInt, qid: QID) {
- findByFID(fid)?.qid = qid
- }
-
- /**
- * Remove a FID.
- */
- fun removeFID(fid: UInt) {
- this.paths.removeIf { x -> x.fid == fid }
- }
-
- fun find(predicate: (Path) -> Boolean) = this.paths.find(predicate)
-
- /**
- * Find [Path] object by path.
- *
- * @param path The path to search for.
- * @return A path object if [path] exists, or null otherwise.
- */
- fun findByPath(path: List<String>): Path? {
- return this.paths.find { x -> x.path == path }
- }
-
- /**
- * Find [Path] object by FID.
- *
- * @param fid The FID to search for.
- * @return A path object if [fid] exists, or null otherwise.
- */
- fun findByFID(fid: UInt): Path? {
- return this.paths.find { x -> x.fid == fid }
- }
-
- /**
- * Find [Path] object by QID.
- *
- * @param qid The path to search for.
- * @return A path object if [qid] exists, or null otherwise.
- */
- fun findByQID(qid: QID): Path? {
- return this.paths.find { x -> x.qid == qid }
- }
-
- /**
- * Retrieve all paths
- */
- fun getAllPaths(): Set<Path> {
- return this.paths.toSet()
- }
-
- /**
- * Generate a new FID which is not already in use.
- *
- * @return The new FID.
- * @throws IllegalStateException if there is no available FID.
- */
- fun genFID(): UInt {
- for (newFid in 0u..UInt.MAX_VALUE) {
- if (findByFID(newFid) == null) {
- return newFid
- }
- }
- throw IllegalStateException()
- }
-} \ No newline at end of file