#include "pocketpy/pocketpy.h" #include "pocketpy/common/utils.h" #include "pocketpy/objects/object.h" #include "pocketpy/interpreter/vm.h" void py_newint(py_Ref self, int64_t val){ self->type = tp_int; self->is_ptr = false; self->_i64 = val; } void py_newfloat(py_Ref self, double val){ self->type = tp_float; self->is_ptr = false; self->_f64 = val; } void py_newbool(py_Ref self, bool val){ pk_VM* vm = pk_current_vm; *self = val ? vm->True : vm->False; } void py_newstr(py_Ref self, const char* data){ pk_ManagedHeap* heap = &pk_current_vm->heap; PyObject* obj = pk_ManagedHeap__gcnew(heap, tp_str, 0, sizeof(py_Str)); py_Str__ctor((py_Str*)PyObject__value(obj), data); self->type = tp_str; self->is_ptr = true; self->_obj = obj; } void py_newstrn(py_Ref self, const char* data, int size){ pk_ManagedHeap* heap = &pk_current_vm->heap; PyObject* obj = pk_ManagedHeap__gcnew(heap, tp_str, 0, sizeof(py_Str)); py_Str__ctor2((py_Str*)PyObject__value(obj), data, size); self->type = tp_str; self->is_ptr = true; self->_obj = obj; } void py_newnone(py_Ref self){ pk_VM* vm = pk_current_vm; *self = vm->None; } void py_newnull(py_Ref self){ self->type = 0; } void py_newtuple(py_Ref self, int n){ pk_VM* vm = pk_current_vm; PyObject* obj = pk_ManagedHeap__gcnew(&vm->heap, tp_tuple, n, 0); self->type = tp_tuple; self->is_ptr = true; self->_obj = obj; } void py_newfunction(py_Ref self, py_CFunction f, const char* sig, BindType bt){ py_newfunction2(self, f, sig, bt, NULL, NULL); } void py_newfunction2(py_Ref self, py_CFunction f, const char *sig, BindType bt, const char *docstring, const py_Ref userdata){ } void py_newnativefunc(py_Ref self, py_CFunction f, int argc, BindType bt){ py_newnativefunc2(self, f, argc, bt, NULL, NULL); } void py_newnativefunc2(py_Ref self, py_CFunction f, int argc, BindType bt, const char *docstring, const py_Ref userdata){ }