From 612876e44de35cdbd563ac2ce40dcd1d4e397bc5 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 18 Aug 2020 11:35:28 -0300 Subject: Include Taler common Kotlin library as a submodule --- .../commonMain/kotlin/net/taler/common/Version.kt | 70 ---------------------- 1 file changed, 70 deletions(-) delete mode 100644 taler-kotlin-common/src/commonMain/kotlin/net/taler/common/Version.kt (limited to 'taler-kotlin-common/src/commonMain/kotlin/net/taler/common/Version.kt') diff --git a/taler-kotlin-common/src/commonMain/kotlin/net/taler/common/Version.kt b/taler-kotlin-common/src/commonMain/kotlin/net/taler/common/Version.kt deleted file mode 100644 index 8774115..0000000 --- a/taler-kotlin-common/src/commonMain/kotlin/net/taler/common/Version.kt +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of GNU Taler - * (C) 2020 Taler Systems S.A. - * - * GNU Taler is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 3, or (at your option) any later version. - * - * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with - * GNU Taler; see the file COPYING. If not, see - */ - -package net.taler.common - -import kotlin.math.sign - -/** - * Semantic versioning, but libtool-style. - * See https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html - */ -data class Version( - val current: Int, - val revision: Int, - val age: Int -) { - companion object { - fun parse(v: String): Version? { - val elements = v.split(":") - if (elements.size != 3) return null - val (currentStr, revisionStr, ageStr) = elements - val current = currentStr.toIntOrNull() - val revision = revisionStr.toIntOrNull() - val age = ageStr.toIntOrNull() - if (current == null || revision == null || age == null) return null - return Version(current, revision, age) - } - } - - /** - * Compare two libtool-style versions. - * - * Returns a [VersionMatchResult] or null if the given version was null. - */ - fun compare(other: Version?): VersionMatchResult? { - if (other == null) return null - val compatible = current - age <= other.current && - current >= other.current - other.age - val currentCmp = sign((current - other.current).toDouble()).toInt() - return VersionMatchResult(compatible, currentCmp) - } - - /** - * Result of comparing two libtool versions. - */ - data class VersionMatchResult( - /** - * Is the first version compatible with the second? - */ - val compatible: Boolean, - /** - * Is the first version older (-1), newer (+1) or identical (0)? - */ - val currentCmp: Int - ) - -} -- cgit v1.2.3