ascii.h
Go to the documentation of this file.
1 #ifndef NVIM_ASCII_H
2 #define NVIM_ASCII_H
3 
4 #include <stdbool.h>
5 
6 #include "nvim/macros.h"
7 #include "nvim/func_attr.h"
8 #include "nvim/os/os_defs.h"
9 
10 // Definitions of various common control characters.
11 
12 #define CharOrd(x) ((uint8_t)(x) < 'a' \
13  ? (uint8_t)(x) - 'A'\
14  : (uint8_t)(x) - 'a')
15 #define CharOrdLow(x) ((uint8_t)(x) - 'a')
16 #define CharOrdUp(x) ((uint8_t)(x) - 'A')
17 #define ROT13(c, a) (((((c) - (a)) + 13) % 26) + (a))
18 
19 #define NUL '\000'
20 #define BELL '\007'
21 #define BS '\010'
22 #define TAB '\011'
23 #define NL '\012'
24 #define NL_STR "\012"
25 #define FF '\014'
26 #define CAR '\015' // CR is used by Mac OS X
27 #define ESC '\033'
28 #define ESC_STR "\033"
29 #define DEL 0x7f
30 #define DEL_STR "\177"
31 #define CSI 0x9b // Control Sequence Introducer
32 #define CSI_STR "\233"
33 #define DCS 0x90 // Device Control String
34 #define DCS_STR "\033P"
35 #define STERM 0x9c // String Terminator
36 #define STERM_STR "\033\\"
37 
38 #define POUND 0xA3
39 
40 #define Ctrl_chr(x) (TOUPPER_ASC(x) ^ 0x40) // '?' -> DEL, '@' -> ^@, etc.
41 #define Meta(x) ((x) | 0x80)
42 
43 #define CTRL_F_STR "\006"
44 #define CTRL_H_STR "\010"
45 #define CTRL_V_STR "\026"
46 
47 #define Ctrl_AT 0 // @
48 #define Ctrl_A 1
49 #define Ctrl_B 2
50 #define Ctrl_C 3
51 #define Ctrl_D 4
52 #define Ctrl_E 5
53 #define Ctrl_F 6
54 #define Ctrl_G 7
55 #define Ctrl_H 8
56 #define Ctrl_I 9
57 #define Ctrl_J 10
58 #define Ctrl_K 11
59 #define Ctrl_L 12
60 #define Ctrl_M 13
61 #define Ctrl_N 14
62 #define Ctrl_O 15
63 #define Ctrl_P 16
64 #define Ctrl_Q 17
65 #define Ctrl_R 18
66 #define Ctrl_S 19
67 #define Ctrl_T 20
68 #define Ctrl_U 21
69 #define Ctrl_V 22
70 #define Ctrl_W 23
71 #define Ctrl_X 24
72 #define Ctrl_Y 25
73 #define Ctrl_Z 26
74 // CTRL- [ Left Square Bracket == ESC
75 #define Ctrl_BSL 28 // \ BackSLash
76 #define Ctrl_RSB 29 // ] Right Square Bracket
77 #define Ctrl_HAT 30 // ^
78 #define Ctrl__ 31
79 
80 
81 // Character that separates dir names in a path.
82 #ifdef BACKSLASH_IN_FILENAME
83 # define PATHSEP psepc
84 # define PATHSEPSTR pseps
85 #else
86 # define PATHSEP '/'
87 # define PATHSEPSTR "/"
88 #endif
89 
90 static inline bool ascii_iswhite(int)
93 
94 static inline bool ascii_isdigit(int)
96  REAL_FATTR_ALWAYS_INLINE;
97 
98 static inline bool ascii_isxdigit(int)
100  REAL_FATTR_ALWAYS_INLINE;
101 
102 static inline bool ascii_isident(int)
104  REAL_FATTR_ALWAYS_INLINE;
105 
106 static inline bool ascii_isbdigit(int)
108  REAL_FATTR_ALWAYS_INLINE;
109 
110 static inline bool ascii_isspace(int)
112  REAL_FATTR_ALWAYS_INLINE;
113 
117 static inline bool ascii_iswhite(int c)
118 {
119  return c == ' ' || c == '\t';
120 }
121 
131 static inline bool ascii_isdigit(int c)
132 {
133  return c >= '0' && c <= '9';
134 }
135 
139 static inline bool ascii_isxdigit(int c)
140 {
141  return (c >= '0' && c <= '9')
142  || (c >= 'a' && c <= 'f')
143  || (c >= 'A' && c <= 'F');
144 }
145 
149 static inline bool ascii_isident(int c)
150 {
151  return ASCII_ISALNUM(c) || c == '_';
152 }
153 
157 static inline bool ascii_isbdigit(int c)
158 {
159  return (c == '0' || c == '1');
160 }
161 
166 static inline bool ascii_isspace(int c)
167 {
168  return (c >= 9 && c <= 13) || c == ' ';
169 }
170 
171 #endif // NVIM_ASCII_H
#define ASCII_ISALNUM(c)
Definition: macros.h:56
#define REAL_FATTR_CONST
Definition: func_attr.h:167
#define inline
Definition: stack.c:17
static int REAL_FATTR_WARN_UNUSED_RESULT REAL_FATTR_ALWAYS_INLINE
Definition: typval_encode.c.h:258