aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/re2/util/utf.h
blob: f29404a5612fba855aa15598773b56508558e434 (plain) (blame)
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
/* 
 * The authors of this software are Rob Pike and Ken Thompson. 
 *              Copyright (c) 2002 by Lucent Technologies. 
 * Permission to use, copy, modify, and distribute this software for any 
 * purpose without fee is hereby granted, provided that this entire notice 
 * is included in all copies of any software which is or includes a copy 
 * or modification of this software and in all copies of the supporting 
 * documentation for such software. 
 * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED 
 * WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY 
 * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY 
 * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. 
 * 
 * This file and rune.cc have been converted to compile as C++ code 
 * in name space re2. 
 */ 
 
#ifndef UTIL_UTF_H_
#define UTIL_UTF_H_

#include <stdint.h>
 
namespace re2 { 
 
typedef signed int Rune;	/* Code-point values in Unicode 4.0 are 21 bits wide.*/ 
 
enum 
{ 
  UTFmax	= 4,		/* maximum bytes per rune */ 
  Runesync	= 0x80,		/* cannot represent part of a UTF sequence (<) */ 
  Runeself	= 0x80,		/* rune and UTF sequences are the same (<) */ 
  Runeerror	= 0xFFFD,	/* decoding error in UTF */ 
  Runemax	= 0x10FFFF,	/* maximum rune value */ 
}; 
 
int runetochar(char* s, const Rune* r); 
int chartorune(Rune* r, const char* s); 
int fullrune(const char* s, int n); 
int utflen(const char* s); 
char* utfrune(const char*, Rune); 
 
}  // namespace re2 
 
#endif  // UTIL_UTF_H_