mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20: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
|
||||
|
||||
/*************************GLOBAL NAMESPACE*************************/
|
||||
/*
|
||||
static std::map<void*, void(*)(void*)> _pk_deleter_map;
|
||||
|
||||
extern "C" {
|
||||
@ -1046,4 +1047,5 @@ extern "C" {
|
||||
std::string json = vm->read_output();
|
||||
return strdup(json.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
}*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user