Add Tristate
This commit is contained in:
parent
611d7a93ff
commit
50e438a16b
6 changed files with 275 additions and 5 deletions
|
@ -64,7 +64,7 @@ class Logger {
|
||||||
* @since v1-alpha10
|
* @since v1-alpha10
|
||||||
*/
|
*/
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Suppress("unused")
|
@Suppress("Unused")
|
||||||
val instance = Logger()
|
val instance = Logger()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,265 @@
|
||||||
|
/*
|
||||||
|
* STAROPENSOURCE ENGINE SOURCE FILE
|
||||||
|
* Copyright (c) 2024 The StarOpenSource Engine Authors
|
||||||
|
* Licensed under the GNU Affero General Public License v3
|
||||||
|
* with an exception allowing classpath linking.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program 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 Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.staropensource.engine.base.type
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines a data type which can have
|
||||||
|
* three valid states: [UNSET], [TRUE]
|
||||||
|
* and [FALSE].
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
@Suppress("Unused")
|
||||||
|
enum class Tristate {
|
||||||
|
/**
|
||||||
|
* Defines an unset state.
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
UNSET,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines a true state.
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
TRUE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines a false state.
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
FALSE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Companion object of [Tristate].
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
companion object {
|
||||||
|
/**
|
||||||
|
* Converts the specified [Boolean] into a [Tristate].
|
||||||
|
*
|
||||||
|
* @param value [Boolean] to convert
|
||||||
|
* @return [Tristate] representation of the specified [Boolean]
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun toTristate(value: Boolean): Tristate {
|
||||||
|
return if (value) TRUE
|
||||||
|
else FALSE
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts the specified [Int]
|
||||||
|
* into a [Tristate].
|
||||||
|
*
|
||||||
|
* `0` represents [FALSE],
|
||||||
|
* `1` represents [TRUE] and
|
||||||
|
* `2` represents [UNSET].
|
||||||
|
*
|
||||||
|
* @param value [Int] to convert
|
||||||
|
* @return [Tristate] representation of the specified [Int] or `null` if not in range `0` to `2`
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
@Throws(IndexOutOfBoundsException::class)
|
||||||
|
fun toTristate(value: Int): Tristate? {
|
||||||
|
return when (value) {
|
||||||
|
0 -> FALSE
|
||||||
|
1 -> TRUE
|
||||||
|
2 -> UNSET
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this [Tristate] into
|
||||||
|
* a [Boolean].
|
||||||
|
*
|
||||||
|
* If this [Tristate] is set to
|
||||||
|
* [UNSET], `null` will be returned.
|
||||||
|
*
|
||||||
|
* @return [Boolean] representation of this [Tristate] or `null` if [UNSET]
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
fun toBoolean(): Boolean? {
|
||||||
|
return when (this) {
|
||||||
|
TRUE -> true
|
||||||
|
FALSE -> false
|
||||||
|
UNSET -> null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this [Tristate] into
|
||||||
|
* a [Byte].
|
||||||
|
*
|
||||||
|
* [FALSE] represents `0`,
|
||||||
|
* [TRUE] represents `1` and
|
||||||
|
* [UNSET] represents `2`.
|
||||||
|
*
|
||||||
|
* @return [Byte] representation of this [Tristate] or `null` if [UNSET]
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
fun toByte(): Byte {
|
||||||
|
return when (this) {
|
||||||
|
FALSE -> 0
|
||||||
|
TRUE -> 1
|
||||||
|
UNSET -> 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this [Tristate] into
|
||||||
|
* an [UByte].
|
||||||
|
*
|
||||||
|
* [FALSE] represents `0`,
|
||||||
|
* [TRUE] represents `1` and
|
||||||
|
* [UNSET] represents `2`.
|
||||||
|
*
|
||||||
|
* @return [UByte] representation of this [Tristate] or `null` if [UNSET]
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
fun toUByte(): UByte {
|
||||||
|
return when (this) {
|
||||||
|
FALSE -> 0u
|
||||||
|
TRUE -> 1u
|
||||||
|
UNSET -> 2u
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this [Tristate] into
|
||||||
|
* a [Short].
|
||||||
|
*
|
||||||
|
* [FALSE] represents `0`,
|
||||||
|
* [TRUE] represents `1` and
|
||||||
|
* [UNSET] represents `2`.
|
||||||
|
*
|
||||||
|
* @return [Short] representation of this [Tristate] or `null` if [UNSET]
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
fun toShort(): Short {
|
||||||
|
return when (this) {
|
||||||
|
FALSE -> 0
|
||||||
|
TRUE -> 1
|
||||||
|
UNSET -> 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this [Tristate] into
|
||||||
|
* an [UShort].
|
||||||
|
*
|
||||||
|
* [FALSE] represents `0`,
|
||||||
|
* [TRUE] represents `1` and
|
||||||
|
* [UNSET] represents `2`.
|
||||||
|
*
|
||||||
|
* @return [UShort] representation of this [Tristate] or `null` if [UNSET]
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
fun toUShort(): UShort {
|
||||||
|
return when (this) {
|
||||||
|
FALSE -> 0u
|
||||||
|
TRUE -> 1u
|
||||||
|
UNSET -> 2u
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this [Tristate] into
|
||||||
|
* an [Int].
|
||||||
|
*
|
||||||
|
* [FALSE] represents `0`,
|
||||||
|
* [TRUE] represents `1` and
|
||||||
|
* [UNSET] represents `2`.
|
||||||
|
*
|
||||||
|
* @return [Int] representation of this [Tristate] or `null` if [UNSET]
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
fun toInt(): Int {
|
||||||
|
return when (this) {
|
||||||
|
FALSE -> 0
|
||||||
|
TRUE -> 1
|
||||||
|
UNSET -> 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this [Tristate] into
|
||||||
|
* an [UInt].
|
||||||
|
*
|
||||||
|
* [FALSE] represents `0`,
|
||||||
|
* [TRUE] represents `1` and
|
||||||
|
* [UNSET] represents `2`.
|
||||||
|
*
|
||||||
|
* @return [UInt] representation of this [Tristate] or `null` if [UNSET]
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
fun toUInt(): UInt {
|
||||||
|
return when (this) {
|
||||||
|
FALSE -> 0u
|
||||||
|
TRUE -> 1u
|
||||||
|
UNSET -> 2u
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this [Tristate] into
|
||||||
|
* a [Long].
|
||||||
|
*
|
||||||
|
* [FALSE] represents `0`,
|
||||||
|
* [TRUE] represents `1` and
|
||||||
|
* [UNSET] represents `2`.
|
||||||
|
*
|
||||||
|
* @return [Long] representation of this [Tristate] or `null` if [UNSET]
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
fun toLong(): Long {
|
||||||
|
return when (this) {
|
||||||
|
FALSE -> 0L
|
||||||
|
TRUE -> 1L
|
||||||
|
UNSET -> 2L
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this [Tristate] into
|
||||||
|
* an [ULong].
|
||||||
|
*
|
||||||
|
* [FALSE] represents `0`,
|
||||||
|
* [TRUE] represents `1` and
|
||||||
|
* [UNSET] represents `2`.
|
||||||
|
*
|
||||||
|
* @return [ULong] representation of this [Tristate] or `null` if [UNSET]
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
fun toULong(): ULong {
|
||||||
|
return when (this) {
|
||||||
|
FALSE -> 0UL
|
||||||
|
TRUE -> 1UL
|
||||||
|
UNSET -> 2UL
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -33,7 +33,7 @@ import oshi.hardware.HardwareAbstractionLayer
|
||||||
*
|
*
|
||||||
* @since v1-alpha10
|
* @since v1-alpha10
|
||||||
*/
|
*/
|
||||||
@Suppress("unused")
|
@Suppress("Unused")
|
||||||
class Environment private constructor() {
|
class Environment private constructor() {
|
||||||
/**
|
/**
|
||||||
* Companion class of [Environment].
|
* Companion class of [Environment].
|
||||||
|
|
|
@ -42,7 +42,7 @@ import java.nio.file.attribute.PosixFilePermissions
|
||||||
*
|
*
|
||||||
* @since v1-alpha10
|
* @since v1-alpha10
|
||||||
*/
|
*/
|
||||||
@Suppress("unused")
|
@Suppress("Unused")
|
||||||
class FileAccess {
|
class FileAccess {
|
||||||
/**
|
/**
|
||||||
* Companion object of [FileAccess].
|
* Companion object of [FileAccess].
|
||||||
|
|
|
@ -58,7 +58,7 @@ import java.util.*
|
||||||
// this: properties & getter methods, constructors,
|
// this: properties & getter methods, constructors,
|
||||||
// methods. This change was made for a better,
|
// methods. This change was made for a better,
|
||||||
// less chaotic class source code layout.
|
// less chaotic class source code layout.
|
||||||
@Suppress("unused")
|
@Suppress("Unused")
|
||||||
open class BuildInformation
|
open class BuildInformation
|
||||||
@Throws(RuntimeException::class)
|
@Throws(RuntimeException::class)
|
||||||
constructor(val loadPrefix: String, val loadLocation: FileAccess? = null) {
|
constructor(val loadPrefix: String, val loadLocation: FileAccess? = null) {
|
||||||
|
|
|
@ -22,7 +22,12 @@
|
||||||
rootProject.name = "sos!engine"
|
rootProject.name = "sos!engine"
|
||||||
|
|
||||||
// Subprojects
|
// Subprojects
|
||||||
include("") // scan root
|
// -> Root
|
||||||
|
include("")
|
||||||
|
|
||||||
|
// -> Base
|
||||||
include("base")
|
include("base")
|
||||||
|
|
||||||
|
// -> Testing
|
||||||
include("testapp")
|
include("testapp")
|
||||||
include("testing")
|
include("testing")
|
||||||
|
|
Loading…
Reference in a new issue