pocketpy/docs/quick-start/02_interop.md
blueloveTH a0b1e6cafb ...
2023-04-23 14:06:32 +08:00

1.1 KiB

icon label order
code 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 a PyObject* from a C type
  • CAST(T, ...), cast a PyObject* to a C type
  • _CAST(T, ...), cast a PyObject* 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
... ... ...