1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
// C-ABI surface of the V library. Hand-maintained; ffigen parses this.
#ifndef VFLUTTER_H
#define VFLUTTER_H
#ifdef __cplusplus
extern "C" {
#endif
#if defined(_WIN32)
#define VF_API __declspec(dllexport)
#else
#define VF_API __attribute__((visibility("default")))
#endif
// Idempotent. Safe to call from any isolate; required only on platforms
// where the ELF/Mach-O constructor may not have run (iOS static archives).
VF_API void vf_init(void);
VF_API int vf_add(int a, int b);
// Returns a NUL-terminated string allocated by V. Caller MUST release it
// with vf_free. Never free it with Dart's calloc/malloc.
VF_API char *vf_greet(const char *name);
VF_API void vf_free(void *p);
// Fills rows [y0, y1) of a w x h Mandelbrot image as RGBA8888, packed from
// the start of `buf`. The buffer is owned by the CALLER: V allocates nothing
// here and there is nothing to vf_free. Bands are independent, so separate
// calls may run concurrently on different threads/isolates.
//
// `buf` must hold at least (y1 - y0) * w * 4 bytes.
VF_API void vf_mandelbrot(unsigned char *buf, int w, int h, double cx,
double cy, double scale, int max_iter, int y0,
int y1);
#ifdef __cplusplus
}
#endif
#endif // VFLUTTER_H
|