Skip to content
This repository was archived by the owner on Feb 21, 2020. It is now read-only.

Commit 291a859

Browse files
committed
added WCharacter.h to add caracter analysis operator
1 parent eb1d553 commit 291a859

File tree

2 files changed

+172
-0
lines changed

2 files changed

+172
-0
lines changed

cores/arduino/Arduino.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,9 @@
1515
#include "WProgram.h"
1616
#endif
1717

18+
typedef uint8 boolean;
19+
typedef uint8 byte;
20+
1821
#include "variant.h"
1922
#include "Tone.h"
23+
#include "WCharacter.h"

cores/arduino/WCharacter.h

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
/*
2+
WCharacter.h - Character utility functions for Wiring & Arduino
3+
Copyright (c) 2010 Hernando Barragan. All right reserved.
4+
5+
This library is free software; you can redistribute it and/or
6+
modify it under the terms of the GNU Lesser General Public
7+
License as published by the Free Software Foundation; either
8+
version 2.1 of the License, or (at your option) any later version.
9+
10+
This library is distributed in the hope that it will be useful,
11+
but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13+
Lesser General Public License for more details.
14+
15+
You should have received a copy of the GNU Lesser General Public
16+
License along with this library; if not, write to the Free Software
17+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18+
*/
19+
20+
#ifndef Character_h
21+
#define Character_h
22+
//ciao
23+
#include <ctype.h>
24+
25+
// WCharacter.h prototypes
26+
inline boolean isAlphaNumeric(int c) __attribute__((always_inline));
27+
inline boolean isAlpha(int c) __attribute__((always_inline));
28+
inline boolean isAscii(int c) __attribute__((always_inline));
29+
inline boolean isWhitespace(int c) __attribute__((always_inline));
30+
inline boolean isControl(int c) __attribute__((always_inline));
31+
inline boolean isDigit(int c) __attribute__((always_inline));
32+
inline boolean isGraph(int c) __attribute__((always_inline));
33+
inline boolean isLowerCase(int c) __attribute__((always_inline));
34+
inline boolean isPrintable(int c) __attribute__((always_inline));
35+
inline boolean isPunct(int c) __attribute__((always_inline));
36+
inline boolean isSpace(int c) __attribute__((always_inline));
37+
inline boolean isUpperCase(int c) __attribute__((always_inline));
38+
inline boolean isHexadecimalDigit(int c) __attribute__((always_inline));
39+
inline int toAscii(int c) __attribute__((always_inline));
40+
inline int toLowerCase(int c) __attribute__((always_inline));
41+
inline int toUpperCase(int c)__attribute__((always_inline));
42+
43+
44+
// Checks for an alphanumeric character.
45+
// It is equivalent to (isalpha(c) || isdigit(c)).
46+
inline boolean isAlphaNumeric(int c)
47+
{
48+
return ( isalnum(c) == 0 ? false : true);
49+
}
50+
51+
52+
// Checks for an alphabetic character.
53+
// It is equivalent to (isupper(c) || islower(c)).
54+
inline boolean isAlpha(int c)
55+
{
56+
return ( isalpha(c) == 0 ? false : true);
57+
}
58+
59+
60+
// Checks whether c is a 7-bit unsigned char value
61+
// that fits into the ASCII character set.
62+
inline boolean isAscii(int c)
63+
{
64+
return ( isascii (c) == 0 ? false : true);
65+
}
66+
67+
68+
// Checks for a blank character, that is, a space or a tab.
69+
inline boolean isWhitespace(int c)
70+
{
71+
return ( isblank (c) == 0 ? false : true);
72+
}
73+
74+
75+
// Checks for a control character.
76+
inline boolean isControl(int c)
77+
{
78+
return ( iscntrl (c) == 0 ? false : true);
79+
}
80+
81+
82+
// Checks for a digit (0 through 9).
83+
inline boolean isDigit(int c)
84+
{
85+
return ( isdigit (c) == 0 ? false : true);
86+
}
87+
88+
89+
// Checks for any printable character except space.
90+
inline boolean isGraph(int c)
91+
{
92+
return ( isgraph (c) == 0 ? false : true);
93+
}
94+
95+
96+
// Checks for a lower-case character.
97+
inline boolean isLowerCase(int c)
98+
{
99+
return (islower (c) == 0 ? false : true);
100+
}
101+
102+
103+
// Checks for any printable character including space.
104+
inline boolean isPrintable(int c)
105+
{
106+
return ( isprint (c) == 0 ? false : true);
107+
}
108+
109+
110+
// Checks for any printable character which is not a space
111+
// or an alphanumeric character.
112+
inline boolean isPunct(int c)
113+
{
114+
return ( ispunct (c) == 0 ? false : true);
115+
}
116+
117+
118+
// Checks for white-space characters. For the avr-libc library,
119+
// these are: space, formfeed ('\f'), newline ('\n'), carriage
120+
// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v').
121+
inline boolean isSpace(int c)
122+
{
123+
return ( isspace (c) == 0 ? false : true);
124+
}
125+
126+
127+
// Checks for an uppercase letter.
128+
inline boolean isUpperCase(int c)
129+
{
130+
return ( isupper (c) == 0 ? false : true);
131+
}
132+
133+
134+
// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7
135+
// 8 9 a b c d e f A B C D E F.
136+
inline boolean isHexadecimalDigit(int c)
137+
{
138+
return ( isxdigit (c) == 0 ? false : true);
139+
}
140+
141+
142+
// Converts c to a 7-bit unsigned char value that fits into the
143+
// ASCII character set, by clearing the high-order bits.
144+
inline int toAscii(int c)
145+
{
146+
return toascii (c);
147+
}
148+
149+
150+
// Warning:
151+
// Many people will be unhappy if you use this function.
152+
// This function will convert accented letters into random
153+
// characters.
154+
155+
// Converts the letter c to lower case, if possible.
156+
inline int toLowerCase(int c)
157+
{
158+
return tolower (c);
159+
}
160+
161+
162+
// Converts the letter c to upper case, if possible.
163+
inline int toUpperCase(int c)
164+
{
165+
return toupper (c);
166+
}
167+
168+
#endif

0 commit comments

Comments
 (0)