preparatory changes
[nvi.git] / common / conv.h
blob66e6a7bed3a414247082a28a56e045fbe479d233
1 #define F_GB 'A'
3 #define INT9494(f,r,c) ((f) << 16) | ((r) << 8) | (c)
4 #define INTIS9494(c) !!(((c) >> 16) & 0x7F)
5 #define INTISUCS(c) ((c & ~0x7F) && !(((c) >> 16) & 0x7F))
6 #define INTUCS(c) (c)
7 #define INT9494F(c) ((c) >> 16) & 0x7F
8 #define INT9494R(c) ((c) >> 8) & 0x7F
9 #define INT9494C(c) (c) & 0x7F
10 #define INTILL(c) (1 << 23) | (c)
11 #ifdef USE_WIDECHAR
12 #define INTISWIDE(c) (!!(c >> 8))
13 #define CHAR_WIDTH(sp, ch) \
14 (INTISUCS(ch) && ucswidth(ch) > 0 ? ucswidth(ch) : INTISWIDE(ch) ? 2 : 1)
15 #else
16 #define INTISWIDE(c) 0
17 #define CHAR_WIDTH(sp, ch) 1
18 #endif
20 #define KEY_COL(sp, ch) \
21 (INTISWIDE(ch) ? CHAR_WIDTH(sp, ch) : KEY_LEN(sp,ch))
23 struct _conv_win {
24 void *bp1;
25 size_t blen1;
26 void *bp2;
27 size_t blen2;
30 struct _conv {
31 int (*char2int) (struct _conv*, const char *, ssize_t, struct _conv_win *, size_t *);
32 int (*int2char) (struct _conv*, const CHAR_T *, ssize_t, struct _conv_win *, size_t *);
33 int (*file2int) (struct _conv*, const char *, ssize_t, struct _conv_win *, size_t *);
34 int (*int2file) (struct _conv*, const CHAR_T *, ssize_t, struct _conv_win *, size_t *);
35 int (*int2disp) (struct _conv*, const CHAR_T *, ssize_t, struct _conv_win *, size_t *);