mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
made initial structure for new way of handling c bindings
This commit is contained in:
parent
46b1b1b900
commit
9b9a78524e
12
build_c.sh
Normal file
12
build_c.sh
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
python3 preprocess.py
|
||||||
|
|
||||||
|
echo "compiling c++ lib"
|
||||||
|
clang++ -c -o pocketpy_c.o c_bindings/pocketpy_c.cpp -Wfatal-errors --std=c++17 -O2 -Wall -Wno-sign-compare -Wno-unused-variable -fno-rtti -stdlib=libc++ -I src/
|
||||||
|
echo "compiling c executable"
|
||||||
|
clang -c -o main.o c_bindings/main.c -Wfatal-errors -O2 -Wall -Wno-sign-compare -Wno-unused-variable -I src/
|
||||||
|
echo "linking"
|
||||||
|
clang++ -o pocketpy_c main.o pocketpy_c.o -stdlib=libc++
|
||||||
|
echo "cleaning up"
|
||||||
|
rm pocketpy_c.o
|
||||||
|
rm main.o
|
||||||
|
|
13
c_bindings/main.c
Normal file
13
c_bindings/main.c
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include "pocketpy_c.h"
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char** argv) {
|
||||||
|
|
||||||
|
pkpy_vm vm = pkpy_vm_create(true, true);
|
||||||
|
|
||||||
|
pkpy_vm_exec(vm, "print('hello world!')");
|
||||||
|
|
||||||
|
pkpy_vm_destroy(vm);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
21
c_bindings/pocketpy_c.cpp
Normal file
21
c_bindings/pocketpy_c.cpp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#include "pocketpy.h"
|
||||||
|
#include "pocketpy_c.h"
|
||||||
|
|
||||||
|
pkpy_vm pkpy_vm_create(bool use_stdio, bool enable_os) {
|
||||||
|
pkpy::VM* p = new pkpy::VM(use_stdio, enable_os);
|
||||||
|
|
||||||
|
return (pkpy_vm) p;
|
||||||
|
}
|
||||||
|
|
||||||
|
void pkpy_vm_exec(pkpy_vm vm_handle, const char* source) {
|
||||||
|
pkpy::VM* vm = (pkpy::VM*) vm_handle;
|
||||||
|
|
||||||
|
vm->exec(source, "main.py", pkpy::EXEC_MODE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void pkpy_vm_destroy(pkpy_vm vm_handle) {
|
||||||
|
pkpy::VM* vm = (pkpy::VM*) vm_handle;
|
||||||
|
|
||||||
|
delete vm;
|
||||||
|
}
|
||||||
|
|
20
c_bindings/pocketpy_c.h
Normal file
20
c_bindings/pocketpy_c.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#ifndef POCKETPY_C_H
|
||||||
|
#define POCKETPY_C_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
typedef struct pkpy_vm_handle* pkpy_vm;
|
||||||
|
|
||||||
|
pkpy_vm pkpy_vm_create(bool use_stdio, bool enable_os);
|
||||||
|
void pkpy_vm_exec(pkpy_vm vm_handle, const char* source);
|
||||||
|
void pkpy_vm_destroy(pkpy_vm vm);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -975,6 +975,7 @@ inline void VM::post_init(){
|
|||||||
} // namespace pkpy
|
} // namespace pkpy
|
||||||
|
|
||||||
/*************************GLOBAL NAMESPACE*************************/
|
/*************************GLOBAL NAMESPACE*************************/
|
||||||
|
/*
|
||||||
static std::map<void*, void(*)(void*)> _pk_deleter_map;
|
static std::map<void*, void(*)(void*)> _pk_deleter_map;
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -1046,4 +1047,5 @@ extern "C" {
|
|||||||
std::string json = vm->read_output();
|
std::string json = vm->read_output();
|
||||||
return strdup(json.c_str());
|
return strdup(json.c_str());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
}*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user