From a6b89e3a0d1a55d5667d122195ab5fd82c023a26 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Mon, 27 Mar 2017 19:58:45 +0300 Subject: [PATCH] Expose interop enum `.value` through CEnum interface --- Interop/Runtime/src/main/kotlin/kotlinx/cinterop/Types.kt | 3 +++ .../jetbrains/kotlin/native/interop/gen/jvm/StubGenerator.kt | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/Types.kt b/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/Types.kt index abc1626e1a6..cc244f922ca 100644 --- a/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/Types.kt +++ b/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/Types.kt @@ -214,6 +214,9 @@ sealed class CPrimitiveVar : CVariable { open class Type(size: Int) : CVariable.Type(size.toLong(), align = size) } +interface CEnum { + val value: Number +} abstract class CEnumVar : CPrimitiveVar() // generics below are used for typedef support diff --git a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/StubGenerator.kt b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/StubGenerator.kt index 6467f876e46..44e7ab9763e 100644 --- a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/StubGenerator.kt +++ b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/StubGenerator.kt @@ -612,7 +612,7 @@ class StubGenerator( val baseTypeMirror = mirror(e.baseType) - block("enum class ${e.kotlinName.asSimpleName()}(val value: ${e.baseType.kotlinType})") { + block("enum class ${e.kotlinName.asSimpleName()}(override val value: ${e.baseType.kotlinType}) : CEnum") { e.constants.forEach { out("${it.name.asSimpleName()}(${it.value}),") }