blob: bf376b2c607de44c9b72e8d7d3451d284dfe5886 (
plain)
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
|
#pragma once
#include <u.h>
#include <base.h>
#include <libunicode.h>
#define Bit(i) (7-(i))
/* N 0's preceded by i 1's e.g. T(Bit(2)) is 1100 0000 */
#define Tbyte(i) (((1 << (Bit(i)+1))-1) ^ 0xFF)
/* 0000 0000 0000 0111 1111 1111 */
#define RuneX(i) ((1 << (Bit(i) + ((i)-1)*Bitx))-1)
enum
{
Bitx = Bit(1),
Tx = Tbyte(1),
Rune1 = (1 << (Bit(0)+0*Bitx)) - 1,
Maskx = (1 << Bitx) - 1, /* 0011 1111 */
Testx = Maskx ^ 0xff, /* 1100 0000 */
SurrogateMin = 0xD800,
SurrogateMax = 0xDFFF,
Bad = RuneErr,
};
|