[KN] CInterop: __attribute__((objc_direct)) support
Merge-request: KT-MR-8828 Merged-by: Gleb Lukianets <Gleb.Lukianets@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
ae07d0e9ce
commit
fc96eb6d8d
+11
-9
@@ -1150,14 +1150,15 @@ public open class NativeIndexImpl(val library: NativeLibrary, val verbose: Boole
|
||||
}
|
||||
|
||||
return ObjCMethod(
|
||||
selector, encoding, parameters, returnType,
|
||||
isVariadic = clang_Cursor_isVariadic(cursor) != 0,
|
||||
isClass = isClass,
|
||||
nsConsumesSelf = clang_Cursor_isObjCConsumingSelfMethod(cursor) != 0,
|
||||
nsReturnsRetained = clang_Cursor_isObjCReturningRetainedMethod(cursor) != 0,
|
||||
isOptional = (clang_Cursor_isObjCOptional(cursor) != 0),
|
||||
isInit = (clang_Cursor_isObjCInitMethod(cursor) != 0),
|
||||
isExplicitlyDesignatedInitializer = hasAttribute(cursor, OBJC_DESGINATED_INITIALIZER)
|
||||
selector, encoding, parameters, returnType,
|
||||
isVariadic = clang_Cursor_isVariadic(cursor) != 0,
|
||||
isClass = isClass,
|
||||
nsConsumesSelf = clang_Cursor_isObjCConsumingSelfMethod(cursor) != 0,
|
||||
nsReturnsRetained = clang_Cursor_isObjCReturningRetainedMethod(cursor) != 0,
|
||||
isOptional = (clang_Cursor_isObjCOptional(cursor) != 0),
|
||||
isInit = (clang_Cursor_isObjCInitMethod(cursor) != 0),
|
||||
isExplicitlyDesignatedInitializer = hasAttribute(cursor, OBJC_DESIGNATED_INITIALIZER),
|
||||
isDirect = hasAttribute(cursor, OBJC_DIRECT),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1201,7 +1202,8 @@ public open class NativeIndexImpl(val library: NativeLibrary, val verbose: Boole
|
||||
}
|
||||
|
||||
private val NS_CONSUMED = "ns_consumed"
|
||||
private val OBJC_DESGINATED_INITIALIZER = "objc_designated_initializer"
|
||||
private val OBJC_DESIGNATED_INITIALIZER = "objc_designated_initializer"
|
||||
private val OBJC_DIRECT = "objc_direct"
|
||||
|
||||
private fun hasAttribute(cursor: CValue<CXCursor>, name: String): Boolean {
|
||||
var result = false
|
||||
|
||||
+1
-1
@@ -257,7 +257,7 @@ sealed class ObjCClassOrProtocol(val name: String) : ObjCContainer(), TypeDeclar
|
||||
data class ObjCMethod(
|
||||
val selector: String, val encoding: String, val parameters: List<Parameter>, private val returnType: Type,
|
||||
val isVariadic: Boolean, val isClass: Boolean, val nsConsumesSelf: Boolean, val nsReturnsRetained: Boolean,
|
||||
val isOptional: Boolean, val isInit: Boolean, val isExplicitlyDesignatedInitializer: Boolean
|
||||
val isOptional: Boolean, val isInit: Boolean, val isExplicitlyDesignatedInitializer: Boolean, val isDirect: Boolean
|
||||
) {
|
||||
|
||||
fun returnsInstancetype(): Boolean = returnType is ObjCInstanceType
|
||||
|
||||
Reference in New Issue
Block a user