add oversampler

This commit is contained in:
2024-05-24 13:28:31 +02:00
parent e4a4a661a0
commit 989dba5a6b
484 changed files with 313937 additions and 0 deletions

View File

@@ -0,0 +1,104 @@
/*******************************************************************************************
* imported EEL
******************************************************************************************/
void (*NSEEL_addfunc_ret_type)(const char *name, int np, int ret_type, NSEEL_PPPROC pproc, void *fptr, eel_function_table *destination); // ret_type=-1 for bool, 1 for value, 0 for ptr
void (*NSEEL_addfunc_varparm_ex)(const char *name, int min_np, int want_exact, NSEEL_PPPROC pproc, EEL_F (NSEEL_CGEN_CALL *fptr)(void *, INT_PTR, EEL_F **), eel_function_table *destination);
NSEEL_VMCTX (*NSEEL_VM_alloc)(); // return a handle
void (*NSEEL_VM_SetGRAM)(NSEEL_VMCTX, void **);
void (*NSEEL_VM_free)(NSEEL_VMCTX ctx); // free when done with a VM and ALL of its code have been freed, as well
void (*NSEEL_VM_SetFunctionTable)(NSEEL_VMCTX, eel_function_table *tab); // use NULL to use default (global) table
EEL_F *(*NSEEL_VM_regvar)(NSEEL_VMCTX ctx, const char *name); // register a variable (before compilation)
void (*NSEEL_VM_SetCustomFuncThis)(NSEEL_VMCTX ctx, void *thisptr);
NSEEL_CODEHANDLE (*NSEEL_code_compile_ex)(NSEEL_VMCTX ctx, const char *code, int lineoffs, int flags);
void (*NSEEL_VM_set_var_resolver)(NSEEL_VMCTX ctx, EEL_F *(*res)(void *userctx, const char *name), void *userctx);
char *(*NSEEL_code_getcodeerror)(NSEEL_VMCTX ctx);
void (*NSEEL_code_execute)(NSEEL_CODEHANDLE code);
void (*NSEEL_code_free)(NSEEL_CODEHANDLE code);
EEL_F *(*nseel_int_register_var)(compileContext *ctx, const char *name, int isReg, const char **namePtrOut);
void (*NSEEL_VM_enumallvars)(NSEEL_VMCTX ctx, int (*func)(const char *name, EEL_F *val, void *ctx), void *userctx);
EEL_F *(*NSEEL_VM_getramptr)(NSEEL_VMCTX ctx, unsigned int offs, int *validAmt);
void ** (*eel_gmem_attach)(const char *nm, bool is_alloc);
void (*eel_fft_register)(eel_function_table*);
struct eelStringSegmentRec {
struct eelStringSegmentRec *_next;
const char *str_start; // escaped characters, including opening/trailing characters
int str_len;
};
void (*NSEEL_VM_SetStringFunc)(NSEEL_VMCTX ctx,
EEL_F (*onString)(void *caller_this, struct eelStringSegmentRec *list),
EEL_F (*onNamedString)(void *caller_this, const char *name));
// call with NULL to calculate size, or non-null to generate to buffer (returning size used -- will not null terminate, caller responsibility)
int (*nseel_stringsegments_tobuf)(char *bufOut, int bufout_sz, struct eelStringSegmentRec *list);
void *(*NSEEL_PProc_RAM)(void *data, int data_size, struct _compileContext *ctx);
void *(*NSEEL_PProc_THIS)(void *data, int data_size, struct _compileContext *ctx);
void (*eel_enterfp)(int s[2]);
void (*eel_leavefp)(int s[2]);
eel_function_table g_eel_function_table;
#define NSEEL_ADDFUNC_DESTINATION (&g_eel_function_table)
//
// adds a function that returns a value (EEL_F)
#define NSEEL_addfunc_retval(name,np,pproc,fptr) \
NSEEL_addfunc_ret_type(name,np,1,pproc,(void *)(fptr),NSEEL_ADDFUNC_DESTINATION)
// adds a function that returns a pointer (EEL_F*)
#define NSEEL_addfunc_retptr(name,np,pproc,fptr) \
NSEEL_addfunc_ret_type(name,np,0,pproc,(void *)(fptr),NSEEL_ADDFUNC_DESTINATION)
// adds a void or bool function
#define NSEEL_addfunc_retbool(name,np,pproc,fptr) \
NSEEL_addfunc_ret_type(name,np,-1,pproc,(void *)(fptr),NSEEL_ADDFUNC_DESTINATION)
// adds a function that takes min_np or more parameters (func sig needs to be EEL_F func(void *ctx, INT_PTR np, EEL_F **parms)
#define NSEEL_addfunc_varparm(name, min_np, pproc, fptr) \
NSEEL_addfunc_varparm_ex(name,min_np,0,pproc,fptr,NSEEL_ADDFUNC_DESTINATION)
// adds a function that takes np parameters via func: sig needs to be EEL_F func(void *ctx, INT_PTR np, EEL_F **parms)
#define NSEEL_addfunc_exparms(name, np, pproc, fptr) \
NSEEL_addfunc_varparm_ex(name,np,1,pproc,fptr,NSEEL_ADDFUNC_DESTINATION)
class eel_string_context_state;
#define __NS_EELINT_H__
#define EEL_IMPORT_ALL(IMPORT_FUNC) \
IMPORT_FUNC(NSEEL_addfunc_ret_type) \
IMPORT_FUNC(NSEEL_addfunc_varparm_ex) \
IMPORT_FUNC(NSEEL_VM_free) \
IMPORT_FUNC(NSEEL_VM_SetFunctionTable) \
IMPORT_FUNC(NSEEL_VM_regvar) \
IMPORT_FUNC(NSEEL_VM_SetCustomFuncThis) \
IMPORT_FUNC(NSEEL_code_compile_ex) \
IMPORT_FUNC(NSEEL_code_getcodeerror) \
IMPORT_FUNC(NSEEL_code_execute) \
IMPORT_FUNC(NSEEL_code_free) \
IMPORT_FUNC(NSEEL_PProc_THIS) \
IMPORT_FUNC(NSEEL_PProc_RAM) \
IMPORT_FUNC(NSEEL_VM_SetStringFunc) \
IMPORT_FUNC(NSEEL_VM_enumallvars) \
IMPORT_FUNC(NSEEL_VM_getramptr) \
IMPORT_FUNC(NSEEL_VM_SetGRAM) \
IMPORT_FUNC(eel_gmem_attach) \
IMPORT_FUNC(eel_fft_register) \
IMPORT_FUNC(nseel_stringsegments_tobuf) \
IMPORT_FUNC(nseel_int_register_var) \
IMPORT_FUNC(eel_leavefp) \
IMPORT_FUNC(eel_enterfp) \
IMPORT_FUNC(NSEEL_VM_set_var_resolver) \
IMPORT_FUNC(NSEEL_VM_alloc) /* keep NSEEL_VM_alloc last */
/*******************************************************************************************
* END of imported EEL
******************************************************************************************/