Module: Type
These types are meant to be used in NativeCall
and Callable
.
Floats
Python type: int
F32
F64
Unsigned
Python type: int
U8
U16
U32
U64
U128
Signed
Python type: int
I8
I16
I32
I64
I128
Strings
CStr
Python type: str
When received as a Callback
argument or a NativeCall
return, it’s a python string without null terminator. When used as a NativeCall
argument and Callback
return, you MUST include a null terminator in the string.
WStr
NativeCall
return type / Callback
argument: int
(pointer to address)
NativeCall
argument / Callback
return type: WStr
This may or may not be null terminated, depends on api requirements. Some functions require you to pass a length, sometimes it needs to be null terminated. This is up to you to manage according to the api.
On a Callback
, an argument of this type will be a ptr. On a NativeCall
, a return of this type will be a ptr. In order to convert the ptr into a string you can use, see WStr
.
To return a WStr
from a Callback
, or give a WStr
argument to a NativeCall
, use WStr
.
Chars
Python type: str
Char
Python type: str
(1 character that can fit in a u8
)
1 byte
WChar
Python type: str
(1 character that can fit in a u16
)
2 bytes
Misc
Ptr
Python type: int
Bool
Python type: boolean
Struct(size: int)
Python type: bytes
This is a by-value struct (not a ptr to a struct). You can use this type in arg or return position to indicate receiving or returning a struct by value.
The size must be correct or it’ll be ub.
Example
import cffi
def foo(arg: int):
pass
c = cffi.Callable(foo, cffi.Types.U64)