Adde emitters, paths are different when running from gradle or intellij, will fix later

This commit is contained in:
Ugljesa Jovanovic 2020-08-02 19:49:29 +02:00
parent 641fbceb3f
commit d8b92a6970
No known key found for this signature in database
GPG Key ID: 178E6DFCECCB0E0F
8 changed files with 23 additions and 10 deletions

View File

@ -32,7 +32,7 @@ object CommonLibsodiumGenerator {
MultiplatformModifier.EXPECT, MultiplatformModifier.EXPECT,
::createCommonMethodSpec ::createCommonMethodSpec
) )
fileBuilder.addType(commonClassSpec) fileBuilder.addType(commonClassSpec.build())
} }
val file = fileBuilder.build() val file = fileBuilder.build()
file.writeTo(System.out) file.writeTo(System.out)

View File

@ -18,13 +18,13 @@ object Coordinator {
val nativeFileSpec = NativeLibsodiumGenerator.createNativeFile(packageName, LibSodiumDefinitions.testKotlinFile) val nativeFileSpec = NativeLibsodiumGenerator.createNativeFile(packageName, LibSodiumDefinitions.testKotlinFile)
val jsFileSpec = JsLibsodiumGenerator.createJsFile(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) 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) 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) 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) jsFileSpec.writeTo(jsFile)
} }

View File

@ -26,7 +26,7 @@ object JsLibsodiumGenerator {
MultiplatformModifier.ACTUAL, MultiplatformModifier.ACTUAL,
::createJsFunctionImplementation ::createJsFunctionImplementation
) )
fileBuilder.addType(commonClassSpec) fileBuilder.addType(commonClassSpec.build())
} }
val file = fileBuilder.build() val file = fileBuilder.build()
file.writeTo(System.out) file.writeTo(System.out)

View File

@ -27,7 +27,7 @@ object JvmLibsodiumGenerator {
MultiplatformModifier.ACTUAL, MultiplatformModifier.ACTUAL,
::createJvmFunctionImplementation ::createJvmFunctionImplementation
) )
fileBuilder.addType(commonClassSpec) fileBuilder.addType(commonClassSpec.build())
} }
val file = fileBuilder.build() val file = fileBuilder.build()
file.writeTo(System.out) file.writeTo(System.out)

View File

@ -18,6 +18,7 @@ object NativeLibsodiumGenerator {
fileBuilder.addImport("kotlinx.cinterop", "ptr") fileBuilder.addImport("kotlinx.cinterop", "ptr")
fileBuilder.addImport("kotlinx.cinterop", "pin") fileBuilder.addImport("kotlinx.cinterop", "pin")
fileBuilder.addImport("kotlinx.cinterop", "addressOf") fileBuilder.addImport("kotlinx.cinterop", "addressOf")
for (commonClassDefinition in fileDefinition.commonClassList) { for (commonClassDefinition in fileDefinition.commonClassList) {
//Create type-aliases //Create type-aliases
commonClassDefinition.innerClasses.forEach { commonClassDefinition.innerClasses.forEach {
@ -29,7 +30,14 @@ object NativeLibsodiumGenerator {
MultiplatformModifier.ACTUAL, MultiplatformModifier.ACTUAL,
::createNativeFunctionImplementation ::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() val file = fileBuilder.build()
file.writeTo(System.out) file.writeTo(System.out)

View File

@ -15,13 +15,13 @@ fun createClass(
classDefinition: ClassDefinition, classDefinition: ClassDefinition,
multiplatformModifier: MultiplatformModifier, multiplatformModifier: MultiplatformModifier,
methodCreator: (FunctionDefinition) -> FunSpec methodCreator: (FunctionDefinition) -> FunSpec
): TypeSpec { ): TypeSpec.Builder {
val commonClassBuilder = TypeSpec.classBuilder(classDefinition.name) val commonClassBuilder = TypeSpec.classBuilder(classDefinition.name)
commonClassBuilder.modifiers += multiplatformModifier.modifierList commonClassBuilder.modifiers += multiplatformModifier.modifierList
for (methodDefinition in classDefinition.methods) { for (methodDefinition in classDefinition.methods) {
commonClassBuilder.addFunction(methodCreator(methodDefinition)) commonClassBuilder.addFunction(methodCreator(methodDefinition))
} }
return commonClassBuilder.build() return commonClassBuilder
} }

View File

@ -1,5 +1,6 @@
package debug.test package debug.test
import kotlin.Byte
import kotlin.Int import kotlin.Int
import kotlin.UByteArray import kotlin.UByteArray
import kotlinx.cinterop.addressOf import kotlinx.cinterop.addressOf
@ -18,6 +19,10 @@ actual typealias Sha512State = crypto_hash_sha512_state
actual typealias GenericHashState = crypto_generichash_blake2b_state actual typealias GenericHashState = crypto_generichash_blake2b_state
actual class Crypto { actual class Crypto {
val _emitByte: Byte = 0
val _emitByteArray: Byte = ByteArray(0) {}
actual fun crypto_hash_sha256_init(state: Sha256State): Int { actual fun crypto_hash_sha256_init(state: Sha256State): Int {
println("Debug") println("Debug")
return libsodium.crypto_hash_sha256_init(state.ptr) return libsodium.crypto_hash_sha256_init(state.ptr)