MP fixes: more platforms
This commit is contained in:
parent
a5f2128e1d
commit
cc8c9ecc5d
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@
|
||||
/gradle/wrapper/gradle-wrapper.jar
|
||||
/gradle/wrapper/gradle-wrapper.properties
|
||||
/node_modules
|
||||
.kotlin
|
||||
|
@ -1,14 +1,14 @@
|
||||
plugins {
|
||||
kotlin("multiplatform") version "1.9.22"
|
||||
kotlin("plugin.serialization") version "1.9.22"
|
||||
kotlin("multiplatform") version "2.0.0"
|
||||
kotlin("plugin.serialization") version "2.0.0"
|
||||
id("org.jetbrains.dokka") version "1.9.10"
|
||||
`maven-publish`
|
||||
}
|
||||
|
||||
val serialization_version = "1.3.4"
|
||||
val serialization_version = "1.6.4-SNAPSHOT"
|
||||
|
||||
group = "net.sergeych"
|
||||
version = "0.1.3"
|
||||
version = "0.1.5-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
@ -17,7 +17,7 @@ repositories {
|
||||
}
|
||||
|
||||
kotlin {
|
||||
jvmToolchain(17)
|
||||
jvmToolchain(8)
|
||||
jvm {
|
||||
// compilations.all {
|
||||
// kotlinOptions.jvmTarget = "1.8"
|
||||
@ -49,12 +49,14 @@ kotlin {
|
||||
}
|
||||
}
|
||||
|
||||
macosArm64()
|
||||
iosX64()
|
||||
iosArm64()
|
||||
macosX64()
|
||||
iosSimulatorArm64()
|
||||
|
||||
// macosArm64()
|
||||
// iosX64()
|
||||
// iosArm64()
|
||||
// macosX64()
|
||||
// iosSimulatorArm64()
|
||||
linuxX64()
|
||||
linuxArm64()
|
||||
mingwX64()
|
||||
// val hostOs = System.getProperty("os.name")
|
||||
// val isMingwX64 = hostOs.startsWith("Windows")
|
||||
// val nativeTarget = when {
|
||||
@ -64,12 +66,6 @@ kotlin {
|
||||
// else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
|
||||
// }
|
||||
|
||||
linuxX64("native") {
|
||||
binaries.staticLib {
|
||||
baseName = "mp_bintools"
|
||||
}
|
||||
}
|
||||
|
||||
wasmJs {
|
||||
browser()
|
||||
binaries.executable()
|
||||
@ -90,13 +86,25 @@ kotlin {
|
||||
}
|
||||
val commonMain by getting {
|
||||
dependencies {
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1")
|
||||
// this is actually a bug: we need only the core, but bare core causes strange errors
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
|
||||
api("net.sergeych:mp_stools:[1.4.7,)")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.5.0")
|
||||
}
|
||||
}
|
||||
val nativeMain by creating {
|
||||
dependsOn(commonMain)
|
||||
dependencies {
|
||||
}
|
||||
}
|
||||
val linuxX64Main by getting {
|
||||
dependsOn(nativeMain)
|
||||
}
|
||||
val linuxArm64Main by getting {
|
||||
dependsOn(nativeMain)
|
||||
}
|
||||
|
||||
val commonTest by getting {
|
||||
dependencies {
|
||||
implementation(kotlin("test"))
|
||||
@ -109,8 +117,7 @@ kotlin {
|
||||
}
|
||||
}
|
||||
val jsTest by getting
|
||||
val nativeMain by getting
|
||||
val nativeTest by getting
|
||||
// val nativeTest by getting
|
||||
val wasmJsMain by getting {
|
||||
dependencies {
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -27,6 +27,9 @@ interface CRC<T> {
|
||||
fun crc8(data: ByteArray, polynomial: UByte = 0xA7.toUByte()): UByte =
|
||||
CRC8(polynomial).also { it.update(data) }.value
|
||||
|
||||
fun crc8(data: UByteArray, polynomial: UByte = 0xA7.toUByte()): UByte =
|
||||
CRC8(polynomial).also { it.update(data) }.value
|
||||
|
||||
/**
|
||||
* Calculate CRC16 for a data array using a given polynomial (CRC16-CCITT polynomial (0x1021) by default)
|
||||
*/
|
||||
|
@ -77,19 +77,28 @@ interface KVStorage {
|
||||
/**
|
||||
* Write
|
||||
*/
|
||||
inline fun <reified T: Any>KVStorage.write(key: String,value: T) {
|
||||
this[key] = BipackEncoder.encode(value)
|
||||
inline fun <reified T>KVStorage.write(key: String,value: T) {
|
||||
this[key] = BipackEncoder.encode<T>(value)
|
||||
}
|
||||
|
||||
@Suppress("unused")
|
||||
inline fun <reified T>KVStorage.save(key: String,value: T?) {
|
||||
if( value != null ) write(key, value)
|
||||
else delete(key)
|
||||
}
|
||||
|
||||
inline fun <reified T:Any>KVStorage.read(key: String): T? =
|
||||
this[key]?.let { BipackDecoder.decode(it) }
|
||||
this[key]?.let { BipackDecoder.decode<T>(it) }
|
||||
|
||||
@Suppress("unused")
|
||||
inline fun <reified T:Any>KVStorage.load(key: String): T? = read(key)
|
||||
|
||||
inline operator fun <reified T> KVStorage.invoke(defaultValue: T,overrideName: String? = null) =
|
||||
KVStorageDelegate<T>(this, typeOf<T>(), defaultValue, overrideName)
|
||||
|
||||
inline fun <reified T> KVStorage.stored(defaultValue: T, overrideName: String? = null) =
|
||||
KVStorageDelegate<T>(this, typeOf<T>(), defaultValue, overrideName)
|
||||
|
||||
inline fun <reified T> KVStorage.optStored(overrideName: String? = null) =
|
||||
KVStorageDelegate<T?>(this, typeOf<T?>(), null, overrideName)
|
||||
|
||||
|
38
src/wasmJsTest/kotlin/StorageTest.kt
Normal file
38
src/wasmJsTest/kotlin/StorageTest.kt
Normal file
@ -0,0 +1,38 @@
|
||||
import net.sergeych.bintools.*
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNull
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class StorageTest {
|
||||
@Test
|
||||
fun storageTest() {
|
||||
val s1 = defaultNamedStorage("test_mp_bintools")
|
||||
|
||||
for (n in s1.keys.toList()) s1.delete(n)
|
||||
|
||||
assertTrue(s1.keys.isEmpty())
|
||||
var foo by s1("unknown")
|
||||
assertEquals(foo, "unknown")
|
||||
foo = "bar"
|
||||
assertEquals(foo, "bar")
|
||||
var answer by s1.optStored<Int>()
|
||||
assertNull(answer)
|
||||
answer = 42
|
||||
assertEquals(answer, 42)
|
||||
answer = 43
|
||||
|
||||
println("----------------------------------------------------------------")
|
||||
val s2 = defaultNamedStorage("test_mp_bintools")
|
||||
val foo1 by s2.stored("?", "foo")
|
||||
val answer1: Int? by s2.optStored("answer")
|
||||
|
||||
assertEquals("bar", foo1)
|
||||
assertEquals(43, answer1)
|
||||
|
||||
for (i in 0..<13) {
|
||||
s2.write("test_$i", "payload_$i")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user