]> git.sur5r.net Git - cc65/commitdiff
Add a new chartype module for character classification. Use the new
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 5 Jan 2001 19:06:20 +0000 (19:06 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 5 Jan 2001 19:06:20 +0000 (19:06 +0000)
function IsDigit in target.c.

git-svn-id: svn://svn.cc65.org/cc65/trunk@592 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/common/chartype.c [new file with mode: 0644]
src/common/chartype.h [new file with mode: 0644]
src/common/make/gcc.mak
src/common/make/watcom.mak
src/common/target.c

diff --git a/src/common/chartype.c b/src/common/chartype.c
new file mode 100644 (file)
index 0000000..3141294
--- /dev/null
@@ -0,0 +1,128 @@
+/*****************************************************************************/
+/*                                                                           */
+/*                               chartype.c                                 */
+/*                                                                           */
+/*                   Character classification functions                     */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (C) 2000     Ullrich von Bassewitz                                        */
+/*              Wacholderweg 14                                              */
+/*              D-70597 Stuttgart                                            */
+/* EMail:       uz@musoftware.de                                             */
+/*                                                                           */
+/*                                                                           */
+/* This software is provided 'as-is', without any expressed or implied       */
+/* warranty.  In no event will the authors be held liable for any damages    */
+/* arising from the use of this software.                                    */
+/*                                                                           */
+/* Permission is granted to anyone to use this software for any purpose,     */
+/* including commercial applications, and to alter it and redistribute it    */
+/* freely, subject to the following restrictions:                            */
+/*                                                                           */
+/* 1. The origin of this software must not be misrepresented; you must not   */
+/*    claim that you wrote the original software. If you use this software   */
+/*    in a product, an acknowledgment in the product documentation would be  */
+/*    appreciated but is not required.                                       */
+/* 2. Altered source versions must be plainly marked as such, and must not   */
+/*    be misrepresented as being the original software.                      */
+/* 3. This notice may not be removed or altered from any source              */
+/*    distribution.                                                          */
+/*                                                                           */
+/*****************************************************************************/
+
+
+
+#include "chartype.h"
+
+
+
+/* This module contains replacements for functions in ctype.h besides other
+ * functions. There is a problem with using ctype.h directly:
+ * The parameter must have a value of "unsigned char" or EOF.
+ * So on platforms where a char is signed, this may give problems or at
+ * least warnings. The wrapper functions below will have an "char" parameter
+ * but handle it correctly. They will NOT work for EOF, but this is not a
+ * problem, since EOF is always handled separately.
+ */
+
+
+
+/*****************************************************************************/
+/*                                          Code                                    */
+/*****************************************************************************/
+
+
+
+int IsAlpha (char C)
+/* Check for a letter */
+{
+    return (C >= 'a' && C <= 'z') || (C >= 'A' && C <= 'Z');
+}
+
+
+
+int IsAlNum (char C)
+/* Check for letter or digit */
+{
+    return (C >= 'a' && C <= 'z') || (C >= 'A' && C <= 'Z') || (C >= '0' && C <= '9');
+}
+
+
+
+int IsAscii (char C)
+/* Check for an ASCII character */
+{
+    return (C & ~0x7F) == 0;
+}
+
+
+
+int IsBlank (char C)
+/* Check for a space, tab or newline */
+{
+    return (C == ' ' || C == '\t' || C == '\n');
+}
+
+
+
+int IsDigit (char C)
+/* Check for a digit */
+{
+    return (C >= '0' && C <= '9');
+}
+
+
+
+int IsLower (char C)
+/* Check for a lower case char */
+{
+    return (C >= 'a' && C <= 'z');
+}
+
+
+
+int IsUpper (char C)
+/* Check for upper case characters */
+{
+    return (C >= 'A' && C <= 'Z');
+}
+
+
+
+int IsXDigit (char C)
+/* Check for hexadecimal digits */
+{
+    return (C >= 'a' && C <= 'f') || (C >= 'A' && C <= 'F') || (C >= '0' && C <= '9');
+}
+
+
+
+int IsQuote (char C)
+/* Check for a single or double quote */
+{
+    return (C == '"' || C == '\'');
+}
+
+
+
diff --git a/src/common/chartype.h b/src/common/chartype.h
new file mode 100644 (file)
index 0000000..3f895e4
--- /dev/null
@@ -0,0 +1,95 @@
+/*****************************************************************************/
+/*                                                                           */
+/*                               chartype.h                                 */
+/*                                                                           */
+/*                   Character classification functions                     */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (C) 2000     Ullrich von Bassewitz                                        */
+/*              Wacholderweg 14                                              */
+/*              D-70597 Stuttgart                                            */
+/* EMail:       uz@musoftware.de                                             */
+/*                                                                           */
+/*                                                                           */
+/* This software is provided 'as-is', without any expressed or implied       */
+/* warranty.  In no event will the authors be held liable for any damages    */
+/* arising from the use of this software.                                    */
+/*                                                                           */
+/* Permission is granted to anyone to use this software for any purpose,     */
+/* including commercial applications, and to alter it and redistribute it    */
+/* freely, subject to the following restrictions:                            */
+/*                                                                           */
+/* 1. The origin of this software must not be misrepresented; you must not   */
+/*    claim that you wrote the original software. If you use this software   */
+/*    in a product, an acknowledgment in the product documentation would be  */
+/*    appreciated but is not required.                                       */
+/* 2. Altered source versions must be plainly marked as such, and must not   */
+/*    be misrepresented as being the original software.                      */
+/* 3. This notice may not be removed or altered from any source              */
+/*    distribution.                                                          */
+/*                                                                           */
+/*****************************************************************************/
+
+
+
+#ifndef CHARTYPE_H
+#define CHARTYPE_H
+
+
+
+/* This module contains replacements for functions in ctype.h besides other
+ * functions. There is a problem with using ctype.h directly:
+ * The parameter must have a value of "unsigned char" or EOF.
+ * So on platforms where a char is signed, this may give problems or at
+ * least warnings. The wrapper functions below will have an "char" parameter
+ * but handle it correctly. They will NOT work for EOF, but this is not a
+ * problem, since EOF is always handled separately.
+ */
+
+
+
+/*****************************************************************************/
+/*                                          Code                                    */
+/*****************************************************************************/
+
+
+
+int IsAlpha (char C);
+/* Check for a letter */
+
+int IsAlNum (char C);
+/* Check for letter or digit */
+
+int IsAscii (char C);
+/* Check for an ASCII character */
+
+int IsBlank (char C);
+/* Check for a space, tab or newline */
+
+int IsDigit (char C);
+/* Check for a digit */
+
+int IsLower (char C);
+/* Check for a lower case char */
+
+int IsSpace (char C);
+/* Check for white space characters */
+
+int IsUpper (char C);
+/* Check for upper case characters */
+
+int IsXDigit (char C);
+/* Check for hexadecimal digits */
+
+int IsQuote (char C);
+/* Check for a single or double quote */
+
+
+
+/* End of chartype.h */
+
+#endif
+
+
+
index f2bd0336e44692888895cab8ada8071f02c9c3d8..7ae5818b36f0dc4ffba41ce45a04cd10141f6c5f 100644 (file)
@@ -11,6 +11,7 @@ LIB   = common.a
 
 OBJS = abend.o         \
        bitops.o        \
+       chartype.o      \
        check.o         \
        cmdline.o       \
        coll.o          \
index 11dddb0a989a2cfeeacf69a17bdbcb8795bccd1f..65b18eff8cf2f154c497028c65db131fbce4af89 100644 (file)
@@ -61,12 +61,13 @@ CCCFG  = -bt=$(TARGET) -d1 -onatx -zp4 -5 -zq -w2
 .c.obj:
   $(CC) $(CCCFG) $<
 
-
+                        
 # ------------------------------------------------------------------------------
 # All library OBJ files
-                        
+
 OBJS = abend.obj       \
        bitops.obj      \
+       chartype.obj    \
        check.obj       \
        cmdline.obj     \
        coll.obj        \
index a5f31654d9b5ad2026c0b59aff77909697b9736d..4955ad57ae5e080e3877bb7127143d31a959f932 100644 (file)
@@ -35,8 +35,8 @@
 
 #include <stdlib.h>
 #include <string.h>
-#include <ctype.h>
 
+#include "chartype.h"
 #include "target.h"
 
 
@@ -81,7 +81,7 @@ target_t FindTarget (const char* Name)
     unsigned I;
 
     /* Check for a numeric target */
-    if (isdigit (*Name)) {
+    if (IsDigit (*Name)) {
                int Target = atoi (Name);
        if (Target >= 0 && Target < TGT_COUNT) {
            return (target_t)Target;