1#![allow(missing_docs)]
3
4use crate::date_time_types::{Minute, Month, Second};
5use crate::k::{F, I, J, K, S, V};
6use crate::k_type::{MINUTE_ATOM, MONTH_ATOM, SECOND_ATOM, TIMESPAN_ATOM, TIMESTAMP_ATOM};
7
8pub type KCallback = extern "C" fn(arg1: I) -> *const K;
9
10pub(crate) unsafe fn tst(nanos: i64) -> *const K {
11 ktj(TIMESTAMP_ATOM.into(), nanos)
12}
13
14pub(crate) unsafe fn tsp(nanos: i64) -> *const K {
15 ktj(TIMESPAN_ATOM.into(), nanos)
16}
17
18pub(crate) unsafe fn ksec(sec: Second) -> *mut K {
19 let atom = ka(SECOND_ATOM.into());
20 (*atom).union.sec = sec;
21 atom
22}
23
24pub(crate) unsafe fn kmin(min: Minute) -> *mut K {
25 let atom = ka(MINUTE_ATOM.into());
26 (*atom).union.min = min;
27 atom
28}
29
30pub(crate) unsafe fn kmonth(m: Month) -> *mut K {
31 let atom = ka(MONTH_ATOM.into());
32 (*atom).union.m = m;
33 atom
34}
35
36#[cfg_attr(not(feature = "embedded"), link(name = "kdb"))]
37extern "C" {
38 pub fn b9(mode: I, x: *const K) -> *mut K;
39
40 pub fn d9(x: *const K) -> *const K;
41 pub fn dj(date: I) -> I;
42 pub fn dl(f: *mut V, n: I) -> *const K;
43 pub fn dot(x: *const K, y: *const K) -> *mut K;
44
45 pub fn ee(x: *mut K) -> *mut K;
46
47 pub fn ja(list: *mut *mut K, atom: *const V) -> *mut K;
48 pub fn js(list: *mut *mut K, symbol: S) -> *mut K;
49 pub fn jk(list: *mut *mut K, k: *const K) -> *mut K;
50 pub fn jv(list1: *mut *mut K, list2: *const K) -> *mut K;
51
52 pub fn k(handle: I, query: S, ...) -> *mut K;
53 pub fn ka(k_type: I) -> *mut K;
54 pub fn kb(boolean: I) -> *mut K;
55 pub fn kc(c_char: I) -> *mut K;
56 pub fn kd(date: I) -> *mut K;
57 pub fn ke(real: F) -> *mut K;
58 pub fn kf(float: F) -> *mut K;
59 pub fn kg(byte: I) -> *mut K;
60 pub fn kh(short: I) -> *mut K;
61 pub fn ki(int: I) -> *mut K;
62 pub fn kj(long: J) -> *mut K;
63 pub fn kp(c_str: S) -> *mut K;
64 pub fn kpn(c_str: S, len: J) -> *mut K;
65 pub fn krr(c_str: S) -> *mut K;
66 pub fn ks(c_str: S) -> *mut K;
67 pub fn kt(time: I) -> *mut K;
68 pub fn ktd(keyed_table: *const K) -> *const K;
69 pub fn ktj(begin: I, end: J) -> *const K;
70 pub fn ktn(k_type: I, len: J) -> *mut K;
71
72 #[cfg(feature = "uuid")]
73 pub fn ku(guid: uuid::Uuid) -> *mut K;
74 pub fn kz(date_time: F) -> *const K;
75
76 pub fn m9() -> V;
77
78 pub fn orr(c_str: S) -> *const K;
79 pub fn okx(x: *const K) -> I;
80
81 pub fn r0(k: *mut K) -> V;
82 pub fn r1(k: *mut K) -> *mut K;
83
84 pub fn sd1(d: I, cb: Option<KCallback>) -> *mut K;
85 pub fn sd0(d: I) -> V;
86 pub fn sd0x(d: I, f: I) -> V;
87 pub fn setm(m: I) -> I;
88 pub fn ss(c_str: S) -> S;
89 pub fn sn(c_str: S, len: I) -> S;
90
91 pub fn xT(dict: *const K) -> *const K;
92 pub fn xD(keys: *const K, values: *const K) -> *const K;
93
94 pub fn ymd(y: I, m: I, d: I) -> I;
95}
96
97#[cfg(not(feature = "embedded"))]
98#[link(name = "kdb")]
99extern "C" {
100 pub fn kclose(handle: I) -> V;
101 pub fn khp(hostname: S, port: I) -> I;
102 pub fn khpu(hostname: S, port: I, credentials: S) -> I;
103 pub fn khpun(hostname: S, port: I, credentials: S, timeout: I) -> I;
104}