mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
Added the ability to override the import handler in c.
This commit is contained in:
parent
d478f9802f
commit
075b9c776c
3
.gitignore
vendored
3
.gitignore
vendored
@ -3,6 +3,7 @@ __pycache__/
|
||||
.ipynb_checkpoints
|
||||
.DS_Store
|
||||
.coverage
|
||||
.idea
|
||||
|
||||
src/main
|
||||
gmon.out
|
||||
@ -35,5 +36,7 @@ main
|
||||
pypi/
|
||||
libpocketpy.dylib
|
||||
|
||||
cmake-build-*
|
||||
|
||||
.xmake/
|
||||
|
||||
|
@ -13,6 +13,7 @@ extern "C" {
|
||||
typedef struct pkpy_vm_handle pkpy_vm;
|
||||
typedef int (*pkpy_CFunction)(pkpy_vm*);
|
||||
typedef void (*pkpy_COutputHandler)(pkpy_vm*, const char*, int);
|
||||
typedef const char* (*pkpy_CImportHandler)(const char*);
|
||||
typedef int pkpy_CName;
|
||||
typedef int pkpy_CType;
|
||||
|
||||
@ -95,6 +96,7 @@ PK_EXPORT pkpy_CName pkpy_name(const char* s);
|
||||
PK_EXPORT pkpy_CString pkpy_name_to_string(pkpy_CName name);
|
||||
PK_EXPORT void pkpy_compile_to_string(pkpy_vm*, const char* source, const char* filename, int mode, bool* ok, char** out);
|
||||
PK_EXPORT void pkpy_set_output_handler(pkpy_vm*, pkpy_COutputHandler handler);
|
||||
PK_EXPORT void pkpy_set_import_handler(pkpy_vm*, pkpy_CImportHandler handler);
|
||||
|
||||
/* REPL */
|
||||
PK_EXPORT void* pkpy_new_repl(pkpy_vm*);
|
||||
|
@ -584,6 +584,16 @@ void pkpy_set_output_handler(pkpy_vm* vm_handle, pkpy_COutputHandler handler){
|
||||
vm->_stdout = reinterpret_cast<PrintFunc>(handler);
|
||||
}
|
||||
|
||||
void pkpy_set_import_handler(pkpy_vm* vm_handle, pkpy_CImportHandler handler){
|
||||
VM* vm = (VM*) vm_handle;
|
||||
static pkpy_CImportHandler activeHandler;
|
||||
activeHandler = handler;
|
||||
vm->_import_handler = [](const Str& str) -> pkpy::Bytes {
|
||||
const char* returnString = activeHandler(str.c_str());
|
||||
return { Str(returnString) };
|
||||
};
|
||||
}
|
||||
|
||||
void* pkpy_new_repl(pkpy_vm* vm_handle){
|
||||
return new REPL((VM*)vm_handle);
|
||||
}
|
||||
|
@ -246,6 +246,10 @@ void pkpy_set_output_handler(pkpy_vm* vm, pkpy_COutputHandler handler) {
|
||||
|
||||
}
|
||||
|
||||
void pkpy_set_import_handler(pkpy_vm* vm, pkpy_CImportHandler handler) {
|
||||
|
||||
}
|
||||
|
||||
void* pkpy_new_repl(pkpy_vm* vm) {
|
||||
void* returnValue;
|
||||
return returnValue;
|
||||
|
Loading…
x
Reference in New Issue
Block a user