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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
#ifndef KX
#define KX
typedef char*S, C; typedef unsigned char G; typedef short H; typedef int I; typedef long long J; typedef float E; typedef double F; typedef void V;
#ifdef __cplusplus
extern"C" {
#endif
#if !defined(KXVER)
#error "Set KXVER=3 for kdb+3.0 or standalone c-api after 2011-04-20. Otherwise set KXVER=2. e.g. #define KXVER 3 or gcc -DKXVER=3"
#endif
#if KXVER>=3
typedef struct k0 { signed char m, a, t; C u; I r; union { G g; H h; I i; J j; E e; F f; S s; struct k0*k; struct { J n; G G0[1]; }; }; }*K;
typedef struct { G g[16]; }U;
#define kU(x) ((U*)kG(x))
#define xU ((U*)xG)
extern K ku(U), knt(J, K), ktn(I, J), kpn(S, J);
extern I setm(I), ver();
#define DO(n,x) {J i=0,_i=(n);for(;i<_i;++i){x;}}
#else
typedef struct k0 { I r; H t, u; union { G g; H h; I i; J j; E e; F f; S s; struct k0*k; struct { I n; G G0[1]; }; }; }*K;
extern K ktn(I, I), kpn(S, I);
#define DO(n,x) {I i=0,_i=(n);for(;i<_i;++i){x;}}
#endif
#ifdef __cplusplus
}
#endif
//#include<string.h>
// vector accessors, e.g. kF(x)[i] for float&datetime
#define kG(x) ((x)->G0)
#define kC(x) kG(x)
#define kH(x) ((H*)kG(x))
#define kI(x) ((I*)kG(x))
#define kJ(x) ((J*)kG(x))
#define kE(x) ((E*)kG(x))
#define kF(x) ((F*)kG(x))
#define kS(x) ((S*)kG(x))
#define kK(x) ((K*)kG(x))
// type bytes qtype ctype accessor
#define KB 1 // 1 boolean char kG
#define UU 2 // 16 guid U kU
#define KG 4 // 1 byte char kG
#define KH 5 // 2 short short kH
#define KI 6 // 4 int int kI
#define KJ 7 // 8 long long kJ
#define KE 8 // 4 real float kE
#define KF 9 // 8 float double kF
#define KC 10 // 1 char char kC
#define KS 11 // * symbol char* kS
#define KP 12 // 8 timestamp long kJ (nanoseconds from 2000.01.01)
#define KM 13 // 4 month int kI (months from 2000.01.01)
#define KD 14 // 4 date int kI (days from 2000.01.01)
#define KN 16 // 8 timespan long kJ (nanoseconds)
#define KU 17 // 4 minute int kI
#define KV 18 // 4 second int kI
#define KT 19 // 4 time int kI (millisecond)
#define KZ 15 // 8 datetime double kF (DO NOT USE)
// table,dict
#define XT 98 // x->k is XD
#define XD 99 // kK(x)[0] is keys. kK(x)[1] is values.
#ifdef __cplusplus
extern"C" {
extern V m9();
#else
extern V m9(V);
#endif
extern I khpunc(S, I, S, I, I), khpun(const S, I, const S, I), khpu(const S, I, const S), khp(const S, I), okx(K), ymd(I, I, I), dj(I); extern V r0(K), sd0(I), sd0x(I d, I f), kclose(I); extern S sn(S, I), ss(S);
extern K ee(K), ktj(I, J), ka(I), kb(I), kg(I), kh(I), ki(I), kj(J), ke(F), kf(F), kc(I), ks(S), kd(I), kz(F), kt(I), sd1(I, K(*)(I)), dl(V*f, I),
knk(I, ...), kp(S), ja(K*, V*), js(K*, S), jk(K*, K), jv(K*k, K), k(I, const S, ...), xT(K), xD(K, K), ktd(K), r1(K), krr(const S), orr(const S), dot(K, K), b9(I, K), d9(K), sslInfo(K x);
#ifdef __cplusplus
}
#endif
// nulls(n?) and infinities(w?)
#define nh ((I)0xFFFF8000)
#define wh ((I)0x7FFF)
#define ni ((I)0x80000000)
#define wi ((I)0x7FFFFFFF)
#define nj ((J)0x8000000000000000LL)
#define wj 0x7FFFFFFFFFFFFFFFLL
#if defined(WIN32) || defined(_WIN32)
#define nf (log(-1.0))
#define wf (-log(0.0))
#define finite _finite
extern double log(double);
#else
#define nf (0/0.0)
#define wf (1/0.0)
#define closesocket(x) close(x)
#endif
// remove more clutter
#define O printf
#define R return
#define Z static
#define P(x,y) {if(x)R(y);}
#define U(x) P(!(x),0)
#define SW switch
#define CS(n,x) case n:x;break;
#define CD default
#define ZV Z V
#define ZK Z K
#define ZH Z H
#define ZI Z I
#define ZJ Z J
#define ZE Z E
#define ZF Z F
#define ZC Z C
#define ZS Z S
#define K1(f) K f(K x)
#define K2(f) K f(K x,K y)
#define TX(T,x) (*(T*)((G*)(x)+8))
#define xr x->r
#define xt x->t
#define xu x->u
#define xn x->n
#define xx xK[0]
#define xy xK[1]
#define xg TX(G,x)
#define xh TX(H,x)
#define xi TX(I,x)
#define xj TX(J,x)
#define xe TX(E,x)
#define xf TX(F,x)
#define xs TX(S,x)
#define xk TX(K,x)
#define xG x->G0
#define xH ((H*)xG)
#define xI ((I*)xG)
#define xJ ((J*)xG)
#define xE ((E*)xG)
#define xF ((F*)xG)
#define xS ((S*)xG)
#define xK ((K*)xG)
#define xC xG
#define xB ((G*)xG)
#endif
|