mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
1.3 KiB
1.3 KiB
icon | label | order |
---|---|---|
dot | Interop with PyObject | 90 |
In pkpy, any python object is represented by a PyObject*
.
There are 3 macros for you to do convert.
VAR(...)
, create aPyObject*
from a C typeCAST(T, ...)
, cast aPyObject*
to a C type_CAST(T, ...)
, cast aPyObject*
to a C type, without type check
PyObject* x = VAR(12); // cast a C int to PyObject*
int y = CAST(int, x); // cast a PyObject* to C int
PyObject* i = VAR("abc");
std::cout << CAST(Str, i); // abc
Types
python type | C type | note |
---|---|---|
int |
i64 |
62 bits integer |
float |
f64 |
62 bits floating point |
str |
pkpy::Str |
|
bool |
bool |
|
list |
pkpy::List |
|
tuple |
pkpy::Tuple |
|
function |
pkpy::Function |
|
... | ... | ... |
Type check
is_type(PyObject* obj, Type type)
is_non_tagged_type(PyObject* obj, Type type)
VM::check_type(PyObject* obj, Type type)