blob: 58c860a0e49fce3395fb67e9b4b12309bd1392fd [file] [log] [blame]
Damien429d7192013-10-04 19:53:11 +01001#include <stdint.h>
Damien429d7192013-10-04 19:53:11 +01002
3#include "misc.h"
4
5// attribute flags
6#define FL_PRINT (0x01)
7#define FL_SPACE (0x02)
8#define FL_DIGIT (0x04)
9#define FL_ALPHA (0x08)
10#define FL_UPPER (0x10)
11#define FL_LOWER (0x20)
12
13// shorthand character attributes
14#define AT_PR (FL_PRINT)
15#define AT_SP (FL_SPACE | FL_PRINT)
16#define AT_DI (FL_DIGIT | FL_PRINT)
17#define AT_AL (FL_ALPHA | FL_PRINT)
18#define AT_UP (FL_UPPER | FL_ALPHA | FL_PRINT)
19#define AT_LO (FL_LOWER | FL_ALPHA | FL_PRINT)
20
21// table of attributes for ascii characters
22static const uint8_t attr[] = {
23 0, 0, 0, 0, 0, 0, 0, 0,
24 0, AT_SP, AT_SP, AT_SP, 0, AT_SP, 0, 0,
25 0, 0, 0, 0, 0, 0, 0, 0,
26 0, 0, 0, 0, 0, 0, 0, 0,
27 AT_SP, AT_PR, AT_PR, AT_PR, AT_PR, AT_PR, AT_PR, AT_PR,
28 AT_PR, AT_PR, AT_PR, AT_PR, AT_PR, AT_PR, AT_PR, AT_PR,
29 AT_DI, AT_DI, AT_DI, AT_DI, AT_DI, AT_DI, AT_DI, AT_DI,
30 AT_DI, AT_DI, AT_PR, AT_PR, AT_PR, AT_PR, AT_PR, AT_PR,
31 AT_PR, AT_UP, AT_UP, AT_UP, AT_UP, AT_UP, AT_UP, AT_UP,
32 AT_UP, AT_UP, AT_UP, AT_UP, AT_UP, AT_UP, AT_UP, AT_UP,
33 AT_UP, AT_UP, AT_UP, AT_UP, AT_UP, AT_UP, AT_UP, AT_UP,
34 AT_UP, AT_UP, AT_UP, AT_PR, AT_PR, AT_PR, AT_PR, AT_PR,
35 AT_PR, AT_LO, AT_LO, AT_LO, AT_LO, AT_LO, AT_LO, AT_LO,
36 AT_LO, AT_LO, AT_LO, AT_LO, AT_LO, AT_LO, AT_LO, AT_LO,
37 AT_LO, AT_LO, AT_LO, AT_LO, AT_LO, AT_LO, AT_LO, AT_LO,
38 AT_LO, AT_LO, AT_LO, AT_PR, AT_PR, AT_PR, AT_PR, 0
39};
40
Damien George8cc96a32013-12-30 18:23:50 +000041unichar utf8_get_char(const char *s) {
Damien429d7192013-10-04 19:53:11 +010042 return *s;
43}
44
Damien George8cc96a32013-12-30 18:23:50 +000045char *utf8_next_char(const char *s) {
Damien429d7192013-10-04 19:53:11 +010046 return (char*)(s + 1);
47}
48
Damien George8cc96a32013-12-30 18:23:50 +000049bool unichar_isspace(unichar c) {
Damien429d7192013-10-04 19:53:11 +010050 return c < 128 && (attr[c] & FL_SPACE) != 0;
51}
52
Damien George8cc96a32013-12-30 18:23:50 +000053bool unichar_isalpha(unichar c) {
Damien429d7192013-10-04 19:53:11 +010054 return c < 128 && (attr[c] & FL_ALPHA) != 0;
55}
56
Damien George8cc96a32013-12-30 18:23:50 +000057bool unichar_isprint(unichar c) {
Damien429d7192013-10-04 19:53:11 +010058 return c < 128 && (attr[c] & FL_PRINT) != 0;
59}
60
Damien George8cc96a32013-12-30 18:23:50 +000061bool unichar_isdigit(unichar c) {
Damien429d7192013-10-04 19:53:11 +010062 return c < 128 && (attr[c] & FL_DIGIT) != 0;
63}
64
65/*
66bool char_is_alpha_or_digit(unichar c) {
67 return c < 128 && (attr[c] & (FL_ALPHA | FL_DIGIT)) != 0;
68}
69
70bool char_is_upper(unichar c) {
71 return c < 128 && (attr[c] & FL_UPPER) != 0;
72}
73
74bool char_is_lower(unichar c) {
75 return c < 128 && (attr[c] & FL_LOWER) != 0;
76}
77*/