[Interop][StubIr] Add classifier property to AnnotationStub
to make translation to metadata easier
This commit is contained in:
committed by
Sergey Bogolepov
parent
a194ec18e7
commit
cd07dec326
+42
-17
@@ -113,29 +113,54 @@ interface AnnotationHolder {
|
|||||||
val annotations: List<AnnotationStub>
|
val annotations: List<AnnotationStub>
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class AnnotationStub {
|
sealed class AnnotationStub(val classifier: Classifier) {
|
||||||
sealed class ObjC : AnnotationStub() {
|
|
||||||
object ConsumesReceiver : ObjC()
|
sealed class ObjC(classifier: Classifier) : AnnotationStub(classifier) {
|
||||||
object ReturnsRetained : ObjC()
|
object ConsumesReceiver :
|
||||||
class Method(val selector: String, val encoding: String, val isStret: Boolean = false) : ObjC()
|
ObjC(cCallClassifier.nested("ConsumesReceiver"))
|
||||||
class Factory(val selector: String, val encoding: String, val isStret: Boolean = false) : ObjC()
|
|
||||||
object Consumed : ObjC()
|
object ReturnsRetained :
|
||||||
class Constructor(val selector: String, val designated: Boolean) : ObjC()
|
ObjC(cCallClassifier.nested("ReturnsRetained"))
|
||||||
class ExternalClass(val protocolGetter: String = "", val binaryName: String = "") : ObjC()
|
|
||||||
|
class Method(val selector: String, val encoding: String, val isStret: Boolean = false) :
|
||||||
|
ObjC(Classifier.topLevel(cinteropPackage, "ObjCMethod"))
|
||||||
|
|
||||||
|
class Factory(val selector: String, val encoding: String, val isStret: Boolean = false) :
|
||||||
|
ObjC(Classifier.topLevel(cinteropPackage, "ObjCFactory"))
|
||||||
|
|
||||||
|
object Consumed :
|
||||||
|
ObjC(cCallClassifier.nested("Consumed"))
|
||||||
|
|
||||||
|
class Constructor(val selector: String, val designated: Boolean) :
|
||||||
|
ObjC(Classifier.topLevel(cinteropPackage, "ObjCConstructor"))
|
||||||
|
|
||||||
|
class ExternalClass(val protocolGetter: String = "", val binaryName: String = "") :
|
||||||
|
ObjC(Classifier.topLevel(cinteropPackage, "ExternalClass"))
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class CCall : AnnotationStub() {
|
sealed class CCall(classifier: Classifier) : AnnotationStub(classifier) {
|
||||||
object CString : CCall()
|
object CString : CCall(cCallClassifier.nested("CString"))
|
||||||
object WCString : CCall()
|
object WCString : CCall(cCallClassifier.nested("WCString"))
|
||||||
class Symbol(val symbolName: String) : CCall()
|
class Symbol(val symbolName: String) : CCall(cCallClassifier)
|
||||||
}
|
}
|
||||||
|
|
||||||
class CStruct(val struct: String) : AnnotationStub()
|
class CStruct(val struct: String) :
|
||||||
class CNaturalStruct(val members: List<StructMember>) : AnnotationStub()
|
AnnotationStub(Classifier.topLevel(cinteropInternalPackage, "CStruct"))
|
||||||
|
|
||||||
class CLength(val length: Long) : AnnotationStub()
|
class CNaturalStruct(val members: List<StructMember>) :
|
||||||
|
AnnotationStub(Classifier.topLevel(cinteropPackage, "CNaturalStruct"))
|
||||||
|
|
||||||
class Deprecated(val message: String, val replaceWith: String) : AnnotationStub()
|
class CLength(val length: Long) :
|
||||||
|
AnnotationStub(Classifier.topLevel(cinteropPackage, "CLength"))
|
||||||
|
|
||||||
|
class Deprecated(val message: String, val replaceWith: String) :
|
||||||
|
AnnotationStub(Classifier.topLevel("kotlin", "Deprecated"))
|
||||||
|
|
||||||
|
private companion object {
|
||||||
|
const val cinteropInternalPackage = "kotlinx.cinterop.internal"
|
||||||
|
const val cinteropPackage = "kotlinx.cinterop"
|
||||||
|
val cCallClassifier = Classifier.topLevel(cinteropInternalPackage, "CCall")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user