1use libc::size_t;
2use std::os::raw::{c_char, c_int, c_void};
3
4pub type KunExecutorHandle = *mut c_void;
6pub type KunLibraryHandle = *mut c_void;
7pub type KunModuleHandle = *mut c_void;
8pub type KunBufferNameMapHandle = *mut c_void;
9pub type KunStreamContextHandle = *mut c_void;
10
11#[link(name = "KunRuntime")]
12unsafe extern "C" {
13 pub fn kunCreateSingleThreadExecutor() -> KunExecutorHandle;
15 pub fn kunCreateMultiThreadExecutor(numthreads: c_int) -> KunExecutorHandle;
16 pub fn kunDestoryExecutor(ptr: KunExecutorHandle);
17
18 pub fn kunLoadLibrary(path_or_name: *const c_char) -> KunLibraryHandle;
20 pub fn kunGetModuleFromLibrary(lib: KunLibraryHandle, name: *const c_char) -> KunModuleHandle;
21 pub fn kunUnloadLibrary(ptr: KunLibraryHandle);
22
23 pub fn kunCreateBufferNameMap() -> KunBufferNameMapHandle;
25 pub fn kunDestoryBufferNameMap(ptr: KunBufferNameMapHandle);
26 pub fn kunSetBufferNameMap(ptr: KunBufferNameMapHandle, name: *const c_char, buffer: *mut f32);
27 pub fn kunEraseBufferNameMap(ptr: KunBufferNameMapHandle, name: *const c_char);
28
29 pub fn kunRunGraph(
31 exec: KunExecutorHandle,
32 m: KunModuleHandle,
33 buffers: KunBufferNameMapHandle,
34 num_stocks: size_t,
35 total_time: size_t,
36 cur_time: size_t,
37 length: size_t,
38 );
39
40 pub fn kunCreateStream(
42 exec: KunExecutorHandle,
43 m: KunModuleHandle,
44 num_stocks: size_t,
45 ) -> KunStreamContextHandle;
46
47 pub fn kunQueryBufferHandle(context: KunStreamContextHandle, name: *const c_char) -> size_t;
48
49 pub fn kunStreamGetCurrentBuffer(context: KunStreamContextHandle, handle: size_t)
50 -> *const f32;
51
52 pub fn kunStreamPushData(context: KunStreamContextHandle, handle: size_t, buffer: *const f32);
53
54 pub fn kunStreamRun(context: KunStreamContextHandle);
55 pub fn kunDestoryStream(context: KunStreamContextHandle);
56}