use thread specific memory for conversions
[nvi.git] / common / conv.h
blobdbf9cbc61a0687beff2fb4adf44a6414c3e2d7bf
1 /* temporary assumption */
2 #define CHAR_WIDTH(sp, ch) \
3 ((UCHAR_T)(ch) > 255) ? 2 : 1
4 #define KEY_COL(sp, ch) \
5 (CHAR_WIDTH(sp, ch) > 1 ? CHAR_WIDTH(sp, ch) : KEY_LEN(sp,ch))
7 #define F_GB 'A'
9 #define INT9494(f,r,c) ((f) << 16) | ((r) << 8) | (c)
10 #define INTIS9494(c) !!(((c) >> 16) & 0x7F)
11 #define INT9494F(c) ((c) >> 16) & 0x7F
12 #define INT9494R(c) ((c) >> 8) & 0x7F
13 #define INT9494C(c) (c) & 0x7F
14 #define INTILL(c) (1 << 23) | (c)
16 struct _conv {
17 void *buffer;
18 size_t size;
20 int (*char2int) (struct _conv*, const char *, ssize_t, CHAR_T **, size_t *, size_t *);
21 int (*int2char) (struct _conv*, const CHAR_T *, ssize_t, char **, size_t *, size_t *);
22 int (*file2int) (struct _conv*, const char *, ssize_t, CHAR_T **, size_t *, size_t *);
23 int (*int2file) (struct _conv*, const CHAR_T *, ssize_t, char **, size_t *, size_t *);
24 int (*int2disp) (struct _conv*, const CHAR_T *, ssize_t, char **, size_t *, size_t *);