summaryrefslogtreecommitdiffstats
path: root/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/src/unc_ctype.h
diff options
context:
space:
mode:
Diffstat (limited to 'debian/uncrustify-trinity/uncrustify-trinity-0.75.0/src/unc_ctype.h')
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/src/unc_ctype.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/src/unc_ctype.h b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/src/unc_ctype.h
new file mode 100644
index 00000000..50b7a6f3
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/src/unc_ctype.h
@@ -0,0 +1,106 @@
+/**
+ * @file unc_ctype.h
+ * The ctype function are only required to handle values 0-255 and EOF.
+ * A char is sign-extended when cast to an int.
+ * With some C libraries, these values cause a crash.
+ * These wrappers will properly handle all char values.
+ *
+ * @author Ben Gardner
+ * @license GPL v2+
+ */
+
+#ifndef UNC_CTYPE_H_INCLUDED
+#define UNC_CTYPE_H_INCLUDED
+
+#include "options.h"
+
+#include <cctype> // to get std::tolower
+
+// TODO: better avoid inline and move implementation to cpp file
+
+
+//! Test anything EOF (-1) to 0-255
+static inline int unc_fix_ctype(int ch)
+{
+ if ( ch >= -1
+ && ch <= 255)
+ {
+ return(ch);
+ }
+ return(0); // Issue #3025
+}
+
+
+//! check if a character is a space
+static inline int unc_isspace(int ch)
+{
+ if ( (ch == 12) // Issue #2386
+ && uncrustify::options::use_form_feed_no_more_as_whitespace_character())
+ {
+ return(0);
+ }
+ else
+ {
+ return(isspace(unc_fix_ctype(ch)));
+ }
+}
+
+
+//! check if a character is a printing character
+static inline int unc_isprint(int ch)
+{
+ return(isprint(unc_fix_ctype(ch)));
+}
+
+
+//! check if a character is an alphabetic character (a letter).
+static inline int unc_isalpha(int ch)
+{
+ return(isalpha(unc_fix_ctype(ch)));
+}
+
+
+//! check if a character is an alphanumeric character.
+static inline int unc_isalnum(int ch)
+{
+ return(isalnum(unc_fix_ctype(ch)));
+}
+
+
+//! convert a character to upper case
+static inline int unc_toupper(int ch)
+{
+ return(toupper(unc_fix_ctype(ch)));
+}
+
+
+//! convert a character to lower case
+static inline int unc_tolower(int ch)
+{
+ return(tolower(unc_fix_ctype(ch)));
+}
+
+
+//! check if a character is a hexadecimal digit
+static inline int unc_isxdigit(int ch)
+{
+ return(isxdigit(unc_fix_ctype(ch)));
+}
+
+
+//! check if a character is a decimal digit
+static inline int unc_isdigit(int ch)
+{
+ return(isdigit(unc_fix_ctype(ch)));
+}
+
+
+//! check if a character is upper case
+static inline int unc_isupper(int ch)
+{
+ return( isalpha(unc_fix_ctype(ch))
+ && (unc_toupper(unc_fix_ctype(ch)) == ch));
+}
+
+
+#endif /* UNC_CTYPE_H_INCLUDED */