st

st fork
git clone git://git.rr3.xyz/st
Log | Files | Refs | README | LICENSE

util.h (1280B)


      1 /* See LICENSE for license details. */
      2 /* Requires: stdint.h, size_t, ssize_t */
      3 
      4 #define UTF_INVALID 0xFFFD
      5 #define UTF_SIZ     4
      6 
      7 #define MIN(a, b)              ((a) < (b) ? (a) : (b))
      8 #define MAX(a, b)              ((a) < (b) ? (b) : (a))
      9 #define LEN(a)                 (sizeof(a) / sizeof(a)[0])
     10 #define BETWEEN(x, a, b)       ((a) <= (x) && (x) <= (b))
     11 #define DIVCEIL(n, d)          (((n) + ((d) - 1)) / (d))
     12 #define DEFAULT(a, b)          (a) = (a) ? (a) : (b)
     13 #define LIMIT(x, a, b)         (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)
     14 #define TIMEDIFF(t1, t2)       ((t1.tv_sec-t2.tv_sec)*1000 + \
     15                                 (t1.tv_nsec-t2.tv_nsec)/1E6)
     16 #define MODBIT(x, set, bit)    ((set) ? ((x) |= (bit)) : ((x) &= ~(bit)))
     17 #define MATCH(state, set, clr) (((set & ~state) | (clr & state)) == 0)
     18 
     19 typedef unsigned char uchar;
     20 typedef unsigned short ushort;
     21 typedef unsigned int uint;
     22 typedef unsigned long ulong;
     23 
     24 typedef uint_least32_t Rune;
     25 
     26 void die(const char *, ...);
     27 void *xmalloc(size_t);
     28 void *xrealloc(void *, size_t);
     29 char *xstrdup(const char *);
     30 ssize_t xwrite(int, const char *, size_t);
     31 size_t utf8dec(const char *, Rune *, size_t);
     32 size_t utf8enc(Rune, char *);
     33 char *base64dec(const char *);
     34 size_t csienc(char *, size_t, uint, uint, uint, char);