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  */
isdigit(int character)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  */
isxdigit(int character)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  */
isupper(int character)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  */
islower(int character)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  */
isalpha(int character)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  */
isalnum(int character)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  */
isprint(int character)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  */
tolower(int character)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  */
toupper(int character)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 */
118