mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-21 03:50:16 +00:00
73 lines
1.9 KiB
C
73 lines
1.9 KiB
C
#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){
|
|
|
|
} |