Advertisement
Guest User

Untitled

a guest
Jun 10th, 2015
2,266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.00 KB | None | 0 0
  1. #ifndef KX
  2. #define KX
  3. 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;
  4. #ifdef __cplusplus
  5. extern"C"{
  6. #endif
  7. #ifndef KXVER
  8. #error "Set KXVER=3 for kdb+3.0 or standalone c-api after 2011-04-20. Otherwise set KXVER=2"
  9. #endif
  10. #if KXVER>=3
  11. 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;
  12. typedef struct{G g[16];}U;
  13. #define kU(x) ((U*)kG(x))
  14. #define xU ((U*)xG)
  15. extern K ku(U),ktn(I,J),kpn(S,J);
  16. extern I setm(I);
  17. #define DO(n,x) {J i=0,_i=(n);for(;i<_i;++i){x;}}
  18. #else
  19. 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;
  20. extern K ktn(I,I),kpn(S,I);
  21. #define DO(n,x) {I i=0,_i=(n);for(;i<_i;++i){x;}}
  22. #endif
  23. #ifdef __cplusplus
  24. }
  25. #endif
  26. //#include<string.h>
  27. // vector accessors, e.g. kF(x)[i] for float&datetime
  28. #define kG(x)   ((x)->G0)
  29. #define kC(x)   kG(x)
  30. #define kH(x)   ((H*)kG(x))
  31. #define kI(x)   ((I*)kG(x))
  32. #define kJ(x)   ((J*)kG(x))
  33. #define kE(x)   ((E*)kG(x))
  34. #define kF(x)   ((F*)kG(x))
  35. #define kS(x)   ((S*)kG(x))
  36. #define kK(x)   ((K*)kG(x))
  37.  
  38. //      type bytes qtype     ctype  accessor
  39. #define KB 1  // 1 boolean   char   kG
  40. #define UU 2  // 16 guid     U      kU
  41. #define KG 4  // 1 byte      char   kG
  42. #define KH 5  // 2 short     short  kH
  43. #define KI 6  // 4 int       int    kI
  44. #define KJ 7  // 8 long      long   kJ
  45. #define KE 8  // 4 real      float  kE
  46. #define KF 9  // 8 float     double kF
  47. #define KC 10 // 1 char      char   kC
  48. #define KS 11 // * symbol    char*  kS
  49.  
  50. #define KP 12 // 8 timestamp long   kJ (nanoseconds from 2000.01.01)
  51. #define KM 13 // 4 month     int    kI (months from 2000.01.01)
  52. #define KD 14 // 4 date      int    kI (days from 2000.01.01)
  53.  
  54. #define KN 16 // 8 timespan  long   kJ (nanoseconds)
  55. #define KU 17 // 4 minute    int    kI
  56. #define KV 18 // 4 second    int    kI
  57. #define KT 19 // 4 time      int    kI (millisecond)
  58.  
  59. #define KZ 15 // 8 datetime  double kF (DO NOT USE)
  60.  
  61. // table,dict
  62. #define XT 98 //   x->k is XD
  63. #define XD 99 //   kK(x)[0] is keys. kK(x)[1] is values.
  64.  
  65. #ifdef __cplusplus
  66. extern"C"{
  67. extern V m9();
  68. #else
  69. extern V m9(V);
  70. #endif
  71. extern 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),kclose(I);extern S sn(S,I),ss(S);
  72. extern 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),
  73.  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);
  74. #ifdef __cplusplus
  75. }
  76. #endif
  77.  
  78. // nulls(n?) and infinities(w?)
  79. #define nh ((I)0xFFFF8000)
  80. #define wh ((I)0x7FFF)
  81. #define ni ((I)0x80000000)
  82. #define wi ((I)0x7FFFFFFF)
  83. #define nj ((J)0x8000000000000000LL)
  84. #define wj 0x7FFFFFFFFFFFFFFFLL
  85. #if WIN32 || _WIN32
  86. #define nf (log(-1.0))
  87. #define wf (-log(0.0))
  88. #define isnan _isnan
  89. #define finite _finite
  90. extern double log(double);
  91. #else  
  92. #define nf (0/0.0)
  93. #define wf (1/0.0)
  94. #define closesocket(x) close(x)
  95. #endif
  96.  
  97. // remove more clutter
  98. #define O printf
  99. #define R return
  100. #define Z static
  101. #define P(x,y) {if(x)R(y);}
  102. #define U(x) P(!(x),0)
  103. #define SW switch
  104. #define CS(n,x) case n:x;break;
  105. #define CD default
  106.  
  107. #define ZV Z V
  108. #define ZK Z K
  109. #define ZH Z H
  110. #define ZI Z I
  111. #define ZJ Z J
  112. #define ZE Z E
  113. #define ZF Z F
  114. #define ZC Z C
  115. #define ZS Z S
  116.  
  117. #define K1(f) K f(K x)
  118. #define K2(f) K f(K x,K y)
  119. #define TX(T,x) (*(T*)((G*)(x)+8))
  120. #define xr x->r
  121. #define xt x->t
  122. #define xu x->u
  123. #define xn x->n
  124. #define xx xK[0]
  125. #define xy xK[1]
  126. #define xg TX(G,x)
  127. #define xh TX(H,x)
  128. #define xi TX(I,x)
  129. #define xj TX(J,x)
  130. #define xe TX(E,x)
  131. #define xf TX(F,x)
  132. #define xs TX(S,x)
  133. #define xk TX(K,x)
  134. #define xG x->G0
  135. #define xH ((H*)xG)
  136. #define xI ((I*)xG)
  137. #define xJ ((J*)xG)
  138. #define xE ((E*)xG)
  139. #define xF ((F*)xG)
  140. #define xS ((S*)xG)
  141. #define xK ((K*)xG)
  142. #define xC xG
  143. #define xB ((G*)xG)
  144.  
  145. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement