added user module
This commit is contained in:
+4
-8
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user