added user module

This commit is contained in:
2022-09-03 18:17:51 +08:00
parent 44ccc0b835
commit 4321422b4f
12 changed files with 60 additions and 29 deletions
+4 -8
View File
@@ -39,10 +39,6 @@ struct Context{
Session current;
#ifdef THREADING
void* thread_pool;
#endif
printf_type print = printf;
template <class ...Types>
void log(Types... args) {
@@ -57,7 +53,7 @@ struct Context{
void init_session();
void end_session();
void* get_module_function(const char*);
char remainder[];
char remainder[];
};
#ifdef _WIN32
@@ -68,10 +64,10 @@ struct Context{
#define __AQEXPORT__(_Ty) extern "C" _Ty __DLLEXPORT__
typedef void (*dealloctor_t) (void*);
typedef void (*deallocator_t) (void*);
extern void* Aalloc(size_t sz);
extern void* Aalloc(unsigned long long sz);
extern void Afree(void * mem);
extern size_t register_memory(void* ptr, dealloctor_t deallocator);
extern void register_memory(void* ptr, deallocator_t deallocator);
#endif
+7 -7
View File
@@ -1,7 +1,7 @@
#include "aquery.h"
#include <memory>
#include <stdlib>
#include <cstdlib>
#include <unordered_map>
Session* session;
@@ -9,19 +9,19 @@ Session* session;
void* Aalloc(size_t sz, deallocator_t deallocator){
void* mem = malloc(sz);
auto memmap = (std::unordered_map<void*, dealloctor_t>*) session->memory_map;
memmap[mem] = deallocator;
auto memmap = (std::unordered_map<void*, deallocator_t>*) session->memory_map;
memmap->operator[](mem) = deallocator;
return mem;
}
void Afree(void* mem){
auto memmap = (std::unordered_map<void*, dealloctor_t>*) session->memory_map;
memmap[mem](mem);
auto memmap = (std::unordered_map<void*, deallocator_t>*) session->memory_map;
memmap->operator[](mem)(mem);
memmap->erase(mem);
}
void register_memory(void* ptr, deallocator_t deallocator){
auto memmap = (std::unordered_map<void*, dealloctor_t>*) session->memory_map;
memmap[ptr] = deallocator;
auto memmap = (std::unordered_map<void*, deallocator_t>*) session->memory_map;
memmap->operator[](ptr) = deallocator;
}
+10
View File
@@ -0,0 +1,10 @@
#include "aquery.h"
#include "../server/table.h"
__AQEXPORT__(ColRef<float>) mulvec(int a, ColRef<float> b){
return a * b;
}
__AQEXPORT__(double) mydiv(int a, int b){
return a / (double)b;
}