mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
...
This commit is contained in:
parent
74b366b8cf
commit
4caf6a1110
@ -368,5 +368,15 @@ int main(int argc, char** argv) {
|
|||||||
check(pkpy_to_float(vm, -1, &r_float));
|
check(pkpy_to_float(vm, -1, &r_float));
|
||||||
printf("pi: %.2f\n", r_float);
|
printf("pi: %.2f\n", r_float);
|
||||||
check(pkpy_pop(vm, 1));
|
check(pkpy_pop(vm, 1));
|
||||||
|
check(pkpy_stack_size(vm) == 0);
|
||||||
|
|
||||||
|
PRINT_TITLE("test py_repr");
|
||||||
|
check(pkpy_eval(vm, "['1', 2, (3, '4')]"));
|
||||||
|
check(pkpy_py_repr(vm, -1));
|
||||||
|
check(pkpy_to_string(vm, -1, &r_string));
|
||||||
|
for(int i = 0; i < r_string.size; i++) putchar(r_string.data[i]);
|
||||||
|
putchar('\n');
|
||||||
|
check(pkpy_pop(vm, 1));
|
||||||
|
check(pkpy_stack_size(vm) == 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -98,3 +98,6 @@ pi: 3.14
|
|||||||
|
|
||||||
====== test eval ======
|
====== test eval ======
|
||||||
pi: 2.00
|
pi: 2.00
|
||||||
|
|
||||||
|
====== test py_repr ======
|
||||||
|
['1', 2, (3, '4')]
|
||||||
|
@ -140,3 +140,10 @@ PK_EXPORT bool pkpy_is_none(pkpy_vm*, int i);
|
|||||||
```
|
```
|
||||||
[obj] -> [obj.<name> self]
|
[obj] -> [obj.<name> self]
|
||||||
```
|
```
|
||||||
|
+ `bool pkpy_py_repr(pkpy_vm*, int i)`
|
||||||
|
|
||||||
|
Get the repr of the value at the given index and push it onto the stack.
|
||||||
|
|
||||||
|
```
|
||||||
|
[..., value, ...] -> [..., value, ..., repr(value)]
|
||||||
|
```
|
@ -75,6 +75,7 @@ PK_EXPORT bool pkpy_setglobal(pkpy_vm*, pkpy_CName);
|
|||||||
PK_EXPORT bool pkpy_eval(pkpy_vm*, const char* source);
|
PK_EXPORT bool pkpy_eval(pkpy_vm*, const char* source);
|
||||||
PK_EXPORT bool pkpy_unpack_sequence(pkpy_vm*, int size);
|
PK_EXPORT bool pkpy_unpack_sequence(pkpy_vm*, int size);
|
||||||
PK_EXPORT bool pkpy_get_unbound_method(pkpy_vm*, pkpy_CName);
|
PK_EXPORT bool pkpy_get_unbound_method(pkpy_vm*, pkpy_CName);
|
||||||
|
PK_EXPORT bool pkpy_py_repr(pkpy_vm*, int i);
|
||||||
|
|
||||||
/* Error Handling */
|
/* Error Handling */
|
||||||
PK_EXPORT bool pkpy_error(pkpy_vm*, const char* name, pkpy_CString);
|
PK_EXPORT bool pkpy_error(pkpy_vm*, const char* name, pkpy_CString);
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include "pocketpy.h"
|
#include "pocketpy.h"
|
||||||
#include "pocketpy/pocketpy_c.h"
|
|
||||||
#include "pocketpy_c.h"
|
#include "pocketpy_c.h"
|
||||||
|
|
||||||
using namespace pkpy;
|
using namespace pkpy;
|
||||||
@ -440,6 +439,18 @@ bool pkpy_get_unbound_method(pkpy_vm* vm_handle, pkpy_CName name){
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool pkpy_py_repr(pkpy_vm* vm_handle, int i) {
|
||||||
|
VM* vm = (VM*) vm_handle;
|
||||||
|
PK_ASSERT_NO_ERROR()
|
||||||
|
PK_ASSERT_N_EXTRA_ELEMENTS(1)
|
||||||
|
PK_PROTECTED(
|
||||||
|
PyObject* item = stack_item(vm, i);
|
||||||
|
PyObject* repr = vm->py_repr(item);
|
||||||
|
vm->s_data.push(repr);
|
||||||
|
)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/* Error Handling */
|
/* Error Handling */
|
||||||
bool pkpy_error(pkpy_vm* vm_handle, const char* name, pkpy_CString message) {
|
bool pkpy_error(pkpy_vm* vm_handle, const char* name, pkpy_CString message) {
|
||||||
VM* vm = (VM*) vm_handle;
|
VM* vm = (VM*) vm_handle;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user