Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,27 @@
|
|||
#include <extensions/embed.h>
|
||||
|
||||
#define min(x,y) (x < y ? x : y)
|
||||
|
||||
extern unsigned char repl[];
|
||||
int Query(char *Data, size_t *Length) {
|
||||
ol_t ol;
|
||||
embed_new(&ol, repl, 0);
|
||||
|
||||
word s = embed_eval(&ol, new_string(&ol,
|
||||
"(define sample \"Here am I\")"
|
||||
"sample"
|
||||
), 0);
|
||||
if (!is_string(s))
|
||||
goto fail;
|
||||
|
||||
int i = *Length = min(string_length(s), *Length);
|
||||
|
||||
memcpy(Data, string_value(s), i);
|
||||
*Length = i;
|
||||
|
||||
OL_free(ol.vm);
|
||||
return 1;
|
||||
fail:
|
||||
OL_free(ol.vm);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
#include <extensions/embed.h>
|
||||
|
||||
extern unsigned char repl[];
|
||||
int Query(char *Data, size_t *Length) {
|
||||
ol_t ol;
|
||||
embed_new(&ol, repl, 0);
|
||||
|
||||
embed_eval(&ol, new_string(&ol,
|
||||
"(import (otus ffi))"
|
||||
"(define lib (load-dynamic-library #f))"
|
||||
"(define memcpy (lib fft-void* \"memcpy\" fft-void* type-string fft-int))"
|
||||
"(define (Query Data Length)"
|
||||
" (define sample (c-string \"Here am I\"))"
|
||||
" (when (memcpy Data sample (min (string-length sample) Length))"
|
||||
" (min (string-length sample) Length)))"
|
||||
), 0);
|
||||
word r =
|
||||
embed_eval(&ol, new_string(&ol, "Query"), new_vptr(&ol, Data), make_integer(*Length), 0);
|
||||
if (!is_number(r))
|
||||
goto fail;
|
||||
*Length = ol2int(r);
|
||||
|
||||
OL_free(ol.vm);
|
||||
return 1;
|
||||
|
||||
fail:
|
||||
OL_free(ol.vm);
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue