diff --git a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/CommonLibsodiumGenerator.kt b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/CommonLibsodiumGenerator.kt index e2a17a7..4fda61d 100644 --- a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/CommonLibsodiumGenerator.kt +++ b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/CommonLibsodiumGenerator.kt @@ -32,7 +32,7 @@ object CommonLibsodiumGenerator { MultiplatformModifier.EXPECT, ::createCommonMethodSpec ) - fileBuilder.addType(commonClassSpec) + fileBuilder.addType(commonClassSpec.build()) } val file = fileBuilder.build() file.writeTo(System.out) diff --git a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/Coordinator.kt b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/Coordinator.kt index ae5966c..c347f7c 100644 --- a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/Coordinator.kt +++ b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/Coordinator.kt @@ -18,13 +18,13 @@ object Coordinator { val nativeFileSpec = NativeLibsodiumGenerator.createNativeFile(packageName, LibSodiumDefinitions.testKotlinFile) val jsFileSpec = JsLibsodiumGenerator.createJsFile(packageName, LibSodiumDefinitions.testKotlinFile) - val commonFile = File("../multiplatform-crypto-libsodium-bindings/src/commonMain/kotlin/") + val commonFile = File("multiplatform-crypto-libsodium-bindings/src/commonMain/kotlin/") commonFileSpec.writeTo(commonFile) - val jvmFile = File("../multiplatform-crypto-libsodium-bindings/src/jvmMain/kotlin/") + val jvmFile = File("multiplatform-crypto-libsodium-bindings/src/jvmMain/kotlin/") jvmFileSpec.writeTo(jvmFile) - val nativeFile = File("../multiplatform-crypto-libsodium-bindings/src/nativeMain/kotlin/") + val nativeFile = File("multiplatform-crypto-libsodium-bindings/src/nativeMain/kotlin/") nativeFileSpec.writeTo(nativeFile) - val jsFile = File("../multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/") + val jsFile = File("multiplatform-crypto-libsodium-bindings/src/jsMain/kotlin/") jsFileSpec.writeTo(jsFile) } diff --git a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/JsLibsodiumGenerator.kt b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/JsLibsodiumGenerator.kt index 2df839c..2a1ae5e 100644 --- a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/JsLibsodiumGenerator.kt +++ b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/JsLibsodiumGenerator.kt @@ -26,7 +26,7 @@ object JsLibsodiumGenerator { MultiplatformModifier.ACTUAL, ::createJsFunctionImplementation ) - fileBuilder.addType(commonClassSpec) + fileBuilder.addType(commonClassSpec.build()) } val file = fileBuilder.build() file.writeTo(System.out) diff --git a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/JvmLibsodiumGenerator.kt b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/JvmLibsodiumGenerator.kt index c80d5ae..32fff5c 100644 --- a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/JvmLibsodiumGenerator.kt +++ b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/JvmLibsodiumGenerator.kt @@ -27,7 +27,7 @@ object JvmLibsodiumGenerator { MultiplatformModifier.ACTUAL, ::createJvmFunctionImplementation ) - fileBuilder.addType(commonClassSpec) + fileBuilder.addType(commonClassSpec.build()) } val file = fileBuilder.build() file.writeTo(System.out) diff --git a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/NativeLibsodiumGenerator.kt b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/NativeLibsodiumGenerator.kt index 0745001..98050c7 100644 --- a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/NativeLibsodiumGenerator.kt +++ b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/NativeLibsodiumGenerator.kt @@ -18,6 +18,7 @@ object NativeLibsodiumGenerator { fileBuilder.addImport("kotlinx.cinterop", "ptr") fileBuilder.addImport("kotlinx.cinterop", "pin") fileBuilder.addImport("kotlinx.cinterop", "addressOf") + for (commonClassDefinition in fileDefinition.commonClassList) { //Create type-aliases commonClassDefinition.innerClasses.forEach { @@ -29,7 +30,14 @@ object NativeLibsodiumGenerator { MultiplatformModifier.ACTUAL, ::createNativeFunctionImplementation ) - fileBuilder.addType(commonClassSpec) + //Workarounds for native not emitting types + val byteEmitter = PropertySpec.builder("_emitByte", Byte::class.asTypeName()) + byteEmitter.initializer(CodeBlock.of("0")) + val byteArrayEmitter = PropertySpec.builder("_emitByteArray", Byte::class.asTypeName()) + byteArrayEmitter.initializer(CodeBlock.of("ByteArray(0) {}")) + commonClassSpec.addProperty(byteEmitter.build()) + commonClassSpec.addProperty(byteArrayEmitter.build()) + fileBuilder.addType(commonClassSpec.build()) } val file = fileBuilder.build() file.writeTo(System.out) diff --git a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/SharedCreators.kt b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/SharedCreators.kt index 2d27595..14af224 100644 --- a/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/SharedCreators.kt +++ b/kotlin-multiplatform-libsodium-generator/src/main/kotlin/com/ionspin/kotlin/crypto/generator/libsodium/generator/SharedCreators.kt @@ -15,13 +15,13 @@ fun createClass( classDefinition: ClassDefinition, multiplatformModifier: MultiplatformModifier, methodCreator: (FunctionDefinition) -> FunSpec -): TypeSpec { +): TypeSpec.Builder { val commonClassBuilder = TypeSpec.classBuilder(classDefinition.name) commonClassBuilder.modifiers += multiplatformModifier.modifierList for (methodDefinition in classDefinition.methods) { commonClassBuilder.addFunction(methodCreator(methodDefinition)) } - return commonClassBuilder.build() + return commonClassBuilder } diff --git a/multiplatform-crypto-libsodium-bindings/src/nativeMain/kotlin/com.ionspin.kotlin.crypto/Initializer.kt b/multiplatform-crypto-libsodium-bindings/src/nativeMain/kotlin/com/ionspin/kotlin/crypto/Initializer.kt similarity index 100% rename from multiplatform-crypto-libsodium-bindings/src/nativeMain/kotlin/com.ionspin.kotlin.crypto/Initializer.kt rename to multiplatform-crypto-libsodium-bindings/src/nativeMain/kotlin/com/ionspin/kotlin/crypto/Initializer.kt diff --git a/multiplatform-crypto-libsodium-bindings/src/nativeMain/kotlin/debug/test/DebugTest.kt b/multiplatform-crypto-libsodium-bindings/src/nativeMain/kotlin/debug/test/DebugTest.kt index 0d8d97e..37b4cc7 100644 --- a/multiplatform-crypto-libsodium-bindings/src/nativeMain/kotlin/debug/test/DebugTest.kt +++ b/multiplatform-crypto-libsodium-bindings/src/nativeMain/kotlin/debug/test/DebugTest.kt @@ -1,5 +1,6 @@ package debug.test +import kotlin.Byte import kotlin.Int import kotlin.UByteArray import kotlinx.cinterop.addressOf @@ -18,6 +19,10 @@ actual typealias Sha512State = crypto_hash_sha512_state actual typealias GenericHashState = crypto_generichash_blake2b_state actual class Crypto { + val _emitByte: Byte = 0 + + val _emitByteArray: Byte = ByteArray(0) {} + actual fun crypto_hash_sha256_init(state: Sha256State): Int { println("Debug") return libsodium.crypto_hash_sha256_init(state.ptr)