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
|
.ipynb_checkpoints
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.coverage
|
.coverage
|
||||||
|
.idea
|
||||||
|
|
||||||
src/main
|
src/main
|
||||||
gmon.out
|
gmon.out
|
||||||
@ -35,5 +36,7 @@ main
|
|||||||
pypi/
|
pypi/
|
||||||
libpocketpy.dylib
|
libpocketpy.dylib
|
||||||
|
|
||||||
|
cmake-build-*
|
||||||
|
|
||||||
.xmake/
|
.xmake/
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ extern "C" {
|
|||||||
typedef struct pkpy_vm_handle pkpy_vm;
|
typedef struct pkpy_vm_handle pkpy_vm;
|
||||||
typedef int (*pkpy_CFunction)(pkpy_vm*);
|
typedef int (*pkpy_CFunction)(pkpy_vm*);
|
||||||
typedef void (*pkpy_COutputHandler)(pkpy_vm*, const char*, int);
|
typedef void (*pkpy_COutputHandler)(pkpy_vm*, const char*, int);
|
||||||
|
typedef const char* (*pkpy_CImportHandler)(const char*);
|
||||||
typedef int pkpy_CName;
|
typedef int pkpy_CName;
|
||||||
typedef int pkpy_CType;
|
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 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_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_output_handler(pkpy_vm*, pkpy_COutputHandler handler);
|
||||||
|
PK_EXPORT void pkpy_set_import_handler(pkpy_vm*, pkpy_CImportHandler handler);
|
||||||
|
|
||||||
/* REPL */
|
/* REPL */
|
||||||
PK_EXPORT void* pkpy_new_repl(pkpy_vm*);
|
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);
|
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){
|
void* pkpy_new_repl(pkpy_vm* vm_handle){
|
||||||
return new REPL((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* pkpy_new_repl(pkpy_vm* vm) {
|
||||||
void* returnValue;
|
void* returnValue;
|
||||||
return returnValue;
|
return returnValue;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user