]> git.ozlabs.org Git - ccan/blobdiff - ccan/str/str.h
ttxml: removed cruft from tests
[ccan] / ccan / str / str.h
index 54afca0f21c2afc671a7d0f5ad356e4fe1604b0f..14cd65ab38a3d418097ce49c26f625a79c4130f8 100644 (file)
@@ -1,3 +1,4 @@
+/* Placed into the public domain. */
 #ifndef CCAN_STR_H
 #define CCAN_STR_H
 #include "config.h"
 #ifndef CCAN_STR_H
 #define CCAN_STR_H
 #include "config.h"
@@ -71,6 +72,69 @@ static inline bool strends(const char *str, const char *postfix)
  */
 size_t strcount(const char *haystack, const char *needle);
 
  */
 size_t strcount(const char *haystack, const char *needle);
 
+/**
+ * cisalnum - isalnum() which takes a char (and doesn't accept EOF)
+ * @c: a character
+ *
+ * Surprisingly, the standard ctype.h isalnum() takes an int, which
+ * must have the value of EOF (-1) or an unsigned char.  This variant
+ * takes a real char, and doesn't accept EOF.
+ */
+static inline bool cisalnum(char c)
+{
+       return isalnum((unsigned char)c);
+}
+static inline bool cisalpha(char c)
+{
+       return isalpha((unsigned char)c);
+}
+static inline bool cisascii(char c)
+{
+       return isascii((unsigned char)c);
+}
+#if HAVE_ISBLANK
+static inline bool cisblank(char c)
+{
+       return isblank((unsigned char)c);
+}
+#endif
+static inline bool ciscntrl(char c)
+{
+       return iscntrl((unsigned char)c);
+}
+static inline bool cisdigit(char c)
+{
+       return isdigit((unsigned char)c);
+}
+static inline bool cisgraph(char c)
+{
+       return isgraph((unsigned char)c);
+}
+static inline bool cislower(char c)
+{
+       return islower((unsigned char)c);
+}
+static inline bool cisprint(char c)
+{
+       return isprint((unsigned char)c);
+}
+static inline bool cispunct(char c)
+{
+       return ispunct((unsigned char)c);
+}
+static inline bool cisspace(char c)
+{
+       return isspace((unsigned char)c);
+}
+static inline bool cisupper(char c)
+{
+       return isupper((unsigned char)c);
+}
+static inline bool cisxdigit(char c)
+{
+       return isxdigit((unsigned char)c);
+}
+
 #include <ccan/str/str_debug.h>
 
 /* These checks force things out of line, hence they are under DEBUG. */
 #include <ccan/str/str_debug.h>
 
 /* These checks force things out of line, hence they are under DEBUG. */
@@ -105,7 +169,9 @@ size_t strcount(const char *haystack, const char *needle);
 #define isalnum(i) str_isalnum(str_check_arg_(i))
 #define isalpha(i) str_isalpha(str_check_arg_(i))
 #define isascii(i) str_isascii(str_check_arg_(i))
 #define isalnum(i) str_isalnum(str_check_arg_(i))
 #define isalpha(i) str_isalpha(str_check_arg_(i))
 #define isascii(i) str_isascii(str_check_arg_(i))
+#if HAVE_ISBLANK
 #define isblank(i) str_isblank(str_check_arg_(i))
 #define isblank(i) str_isblank(str_check_arg_(i))
+#endif
 #define iscntrl(i) str_iscntrl(str_check_arg_(i))
 #define isdigit(i) str_isdigit(str_check_arg_(i))
 #define isgraph(i) str_isgraph(str_check_arg_(i))
 #define iscntrl(i) str_iscntrl(str_check_arg_(i))
 #define isdigit(i) str_isdigit(str_check_arg_(i))
 #define isgraph(i) str_isgraph(str_check_arg_(i))