use cross-gcc automatically; move configure args into variable
[alioth/jupp.git] / utf8.h
1 /* $MirOS: contrib/code/jupp/utf8.h,v 1.3 2010/04/08 15:31:06 tg Exp $ */
2 /*
3  *      UTF-8 Utilities
4  *      Copyright
5  *              (C) 2004 Joseph H. Allen
6  *
7  *      This file is part of JOE (Joe's Own Editor)
8  */
9 #ifndef _Iutf8
10 #define _Iutf8 1
11
12 #include "config.h"
13 #include "types.h"
14
15 #include "i18n.h"
16
17 /* UTF-8 Encoder
18  *
19  * c is unicode character.
20  * buf is 7 byte buffer- utf-8 coded character is written to this followed by a 0 termination.
21  * returns length (not including terminator).
22  */
23
24 int utf8_encode PARAMS((unsigned char *buf,int c));
25
26 /* UTF-8 decoder state machine */
27
28 struct utf8_sm {
29         unsigned char buf[8];   /* Record of sequence */
30         int ptr;                /* Record pointer */
31         int state;              /* Current state.  0 = idle, anything else is no. of chars left in sequence */
32         int accu;               /* Character accumulator */
33 };
34
35 /* UTF-8 Decoder
36  *
37  * Returns 0 - 7FFFFFFF: decoded character
38  *                   -1: character accepted, nothing decoded yet.
39  *                   -2: incomplete sequence
40  *                   -3: no sequence started, but character is between 128 - 191, 254 or 255
41  */
42
43 int utf8_decode PARAMS((struct utf8_sm *utf8_sm,unsigned char c));
44
45 int utf8_decode_string PARAMS((unsigned char *s));
46
47 int utf8_decode_fwrd PARAMS((unsigned char **p,int *plen));
48
49 /* Initialize state machine */
50
51 void utf8_init PARAMS((struct utf8_sm *utf8_sm));
52
53 void joe_locale();
54 void to_utf8 PARAMS((struct charmap *map,unsigned char *s,int c));
55 int from_utf8 PARAMS((struct charmap *map,unsigned char *s));
56
57 extern int utf8;
58
59 int mk_wcwidth PARAMS((int wide,int c));
60
61 extern struct charmap *locale_map;      /* Default bytemap of terminal */
62
63 #endif