kotlin-objective-c cross resolve: public objc types
This commit is contained in:
committed by
Svyatoslav Scherbina
parent
2faf7908ee
commit
2a63c409fa
+25
-14
@@ -29,19 +29,23 @@ sealed class ObjCType {
|
|||||||
if (attrsAndName.isEmpty()) this else "$this ${attrsAndName.trimStart()}"
|
if (attrsAndName.isEmpty()) this else "$this ${attrsAndName.trimStart()}"
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class ObjCRawType(private val rawText: String) : ObjCType() {
|
class ObjCRawType(
|
||||||
|
val rawText: String
|
||||||
|
) : ObjCType() {
|
||||||
override fun render(attrsAndName: String): String = rawText.withAttrsAndName(attrsAndName)
|
override fun render(attrsAndName: String): String = rawText.withAttrsAndName(attrsAndName)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal sealed class ObjCReferenceType : ObjCType()
|
sealed class ObjCReferenceType : ObjCType()
|
||||||
|
|
||||||
internal sealed class ObjCNonNullReferenceType : ObjCReferenceType()
|
sealed class ObjCNonNullReferenceType : ObjCReferenceType()
|
||||||
|
|
||||||
internal data class ObjCNullableReferenceType(val nonNullType: ObjCNonNullReferenceType) : ObjCReferenceType() {
|
data class ObjCNullableReferenceType(
|
||||||
|
val nonNullType: ObjCNonNullReferenceType
|
||||||
|
) : ObjCReferenceType() {
|
||||||
override fun render(attrsAndName: String) = nonNullType.render(" _Nullable".withAttrsAndName(attrsAndName))
|
override fun render(attrsAndName: String) = nonNullType.render(" _Nullable".withAttrsAndName(attrsAndName))
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class ObjCClassType(
|
class ObjCClassType(
|
||||||
val className: String,
|
val className: String,
|
||||||
val typeArguments: List<ObjCNonNullReferenceType> = emptyList()
|
val typeArguments: List<ObjCNonNullReferenceType> = emptyList()
|
||||||
) : ObjCNonNullReferenceType() {
|
) : ObjCNonNullReferenceType() {
|
||||||
@@ -58,21 +62,23 @@ internal class ObjCClassType(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class ObjCProtocolType(val protocolName: String) : ObjCNonNullReferenceType() {
|
class ObjCProtocolType(
|
||||||
|
val protocolName: String
|
||||||
|
) : ObjCNonNullReferenceType() {
|
||||||
override fun render(attrsAndName: String) = "id<$protocolName>".withAttrsAndName(attrsAndName)
|
override fun render(attrsAndName: String) = "id<$protocolName>".withAttrsAndName(attrsAndName)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal object ObjCIdType : ObjCNonNullReferenceType() {
|
object ObjCIdType : ObjCNonNullReferenceType() {
|
||||||
override fun render(attrsAndName: String) = "id".withAttrsAndName(attrsAndName)
|
override fun render(attrsAndName: String) = "id".withAttrsAndName(attrsAndName)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal object ObjCInstanceType : ObjCNonNullReferenceType() {
|
object ObjCInstanceType : ObjCNonNullReferenceType() {
|
||||||
override fun render(attrsAndName: String): String = "instancetype".withAttrsAndName(attrsAndName)
|
override fun render(attrsAndName: String): String = "instancetype".withAttrsAndName(attrsAndName)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class ObjCBlockPointerType(
|
class ObjCBlockPointerType(
|
||||||
val returnType: ObjCReferenceType, val parameterTypes: List<ObjCReferenceType>
|
val returnType: ObjCReferenceType,
|
||||||
|
val parameterTypes: List<ObjCReferenceType>
|
||||||
) : ObjCNonNullReferenceType() {
|
) : ObjCNonNullReferenceType() {
|
||||||
|
|
||||||
override fun render(attrsAndName: String) = returnType.render(buildString {
|
override fun render(attrsAndName: String) = returnType.render(buildString {
|
||||||
@@ -85,11 +91,16 @@ internal class ObjCBlockPointerType(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class ObjCPrimitiveType(val cName: String) : ObjCType() {
|
class ObjCPrimitiveType(
|
||||||
|
val cName: String
|
||||||
|
) : ObjCType() {
|
||||||
override fun render(attrsAndName: String) = cName.withAttrsAndName(attrsAndName)
|
override fun render(attrsAndName: String) = cName.withAttrsAndName(attrsAndName)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class ObjCPointerType(val pointee: ObjCType, val nullable: Boolean = false) : ObjCType() {
|
class ObjCPointerType(
|
||||||
|
val pointee: ObjCType,
|
||||||
|
val nullable: Boolean = false
|
||||||
|
) : ObjCType() {
|
||||||
override fun render(attrsAndName: String) =
|
override fun render(attrsAndName: String) =
|
||||||
pointee.render("*${if (nullable) {
|
pointee.render("*${if (nullable) {
|
||||||
" _Nullable".withAttrsAndName(attrsAndName)
|
" _Nullable".withAttrsAndName(attrsAndName)
|
||||||
@@ -98,7 +109,7 @@ internal class ObjCPointerType(val pointee: ObjCType, val nullable: Boolean = fa
|
|||||||
}}")
|
}}")
|
||||||
}
|
}
|
||||||
|
|
||||||
internal object ObjCVoidType : ObjCType() {
|
object ObjCVoidType : ObjCType() {
|
||||||
override fun render(attrsAndName: String) = "void".withAttrsAndName(attrsAndName)
|
override fun render(attrsAndName: String) = "void".withAttrsAndName(attrsAndName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user