File: utf8.h

package info (click to toggle)
joe 3.7-2.4
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 3,304 kB
  • ctags: 2,460
  • sloc: ansic: 34,071; sh: 3,426; makefile: 140
file content (66 lines) | stat: -rw-r--r-- 1,906 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
 *	UTF-8 Utilities
 *	Copyright
 *		(C) 2004 Joseph H. Allen
 *
 *	This file is part of JOE (Joe's Own Editor)
 */
#ifndef _Iutf8
#define _Iutf8 1

/* UTF-8 Encoder
 *
 * c is unicode character.
 * buf is 7 byte buffer- utf-8 coded character is written to this followed by a 0 termination.
 * returns length (not including terminator).
 */

int utf8_encode PARAMS((unsigned char *buf,int c));

/* UTF-8 decoder state machine */

struct utf8_sm {
	unsigned char buf[8];	/* Record of sequence */
	int ptr;		/* Record pointer */
	int state;		/* Current state.  0 = idle, anything else is no. of chars left in sequence */
	int accu;		/* Character accumulator */
};

/* UTF-8 Decoder
 *
 * Returns 0 - 7FFFFFFF: decoded character
 *                   -1: character accepted, nothing decoded yet.
 *                   -2: incomplete sequence
 *                   -3: no sequence started, but character is between 128 - 191, 254 or 255
 */

int utf8_decode PARAMS((struct utf8_sm *utf8_sm,unsigned char c));

int utf8_decode_string PARAMS((unsigned char *s));

int utf8_decode_fwrd PARAMS((unsigned char **p,int *plen));

/* Initialize state machine */

void utf8_init PARAMS((struct utf8_sm *utf8_sm));

void joe_locale();
void to_utf8 PARAMS((struct charmap *map,unsigned char *s,int c));
int from_utf8 PARAMS((struct charmap *map,unsigned char *s));

int unictrl PARAMS((int ucs));
int mk_wcwidth PARAMS((int wide,int c));

extern struct charmap *locale_map;	/* Default bytemap of terminal */
extern unsigned char *locale_lang;	/* Locale language (like de_DE) */
extern unsigned char *locale_msgs;	/* Locale language for editor messages (like de_DE) */

void my_iconv PARAMS((unsigned char *dest,struct charmap *dest_map,
              unsigned char *src,struct charmap *src_map));

struct charmap *guess_map PARAMS((unsigned char *buf, int len));

extern int guess_non_utf8;
extern int guess_utf8;

#endif