[smsc75xx] Expose functionality shared with LAN78xx devices
[ipxe.git] / src / include / ctype.h
1 #ifndef _CTYPE_H
2 #define _CTYPE_H
3
4 /** @file
5 *
6 * Character types
7 *
8 */
9
10 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11
12 /**
13 * Check if character is a decimal digit
14 *
15 * @v character ASCII character
16 * @ret is_digit Character is a decimal digit
17 */
18 static inline int isdigit ( int character ) {
19
20 return ( ( character >= '0' ) && ( character <= '9' ) );
21 }
22
23 /**
24 * Check if character is a hexadecimal digit
25 *
26 * @v character ASCII character
27 * @ret is_xdigit Character is a hexadecimal digit
28 */
29 static inline int isxdigit ( int character ) {
30
31 return ( ( ( character >= '0' ) && ( character <= '9' ) ) ||
32 ( ( character >= 'A' ) && ( character <= 'F' ) ) ||
33 ( ( character >= 'a' ) && ( character <= 'f' ) ) );
34 }
35
36 /**
37 * Check if character is an upper-case letter
38 *
39 * @v character ASCII character
40 * @ret is_upper Character is an upper-case letter
41 */
42 static inline int isupper ( int character ) {
43
44 return ( ( character >= 'A' ) && ( character <= 'Z' ) );
45 }
46
47 /**
48 * Check if character is a lower-case letter
49 *
50 * @v character ASCII character
51 * @ret is_lower Character is a lower-case letter
52 */
53 static inline int islower ( int character ) {
54
55 return ( ( character >= 'a' ) && ( character <= 'z' ) );
56 }
57
58 /**
59 * Check if character is alphabetic
60 *
61 * @v character ASCII character
62 * @ret is_alpha Character is alphabetic
63 */
64 static inline int isalpha ( int character ) {
65
66 return ( isupper ( character ) || islower ( character ) );
67 }
68
69 /**
70 * Check if character is alphanumeric
71 *
72 * @v character ASCII character
73 * @ret is_alnum Character is alphanumeric
74 */
75 static inline int isalnum ( int character ) {
76
77 return ( isalpha ( character ) || isdigit ( character ) );
78 }
79
80 /**
81 * Check if character is printable
82 *
83 * @v character ASCII character
84 * @ret is_print Character is printable
85 */
86 static inline int isprint ( int character ) {
87
88 return ( ( character >= ' ' ) && ( character <= '~' ) );
89 }
90
91 /**
92 * Convert character to lower case
93 *
94 * @v character Character
95 * @v character Lower-case character
96 */
97 static inline int tolower ( int character ) {
98
99 return ( isupper ( character ) ?
100 ( character - 'A' + 'a' ) : character );
101 }
102
103 /**
104 * Convert character to upper case
105 *
106 * @v character Character
107 * @v character Upper-case character
108 */
109 static inline int toupper ( int character ) {
110
111 return ( islower ( character ) ?
112 ( character - 'a' + 'A' ) : character );
113 }
114
115 extern int isspace ( int character );
116
117 #endif /* _CTYPE_H */