* as/link/lkar.h: sgetl and sputl are independent of endianness
[fw/sdcc] / device / include / ctype.h
index 4eb9215cf127126511f4b71baf3cdfe9573e8dc3..67a24ef06294be5c95bfd7ed3148057e2468db4a 100644 (file)
@@ -1,45 +1,50 @@
 /*-------------------------------------------------------------------------
   ctype.h - ANSI functions forward declarations
+
              Written By -  Sandeep Dutta . sandeep.dutta@usa.net (1998)
 
+   Revisions:
+   1.0 - June.1.2000 1.0 - Bela Torok / bela.torok@kssg.ch
+   order: function definitions -> macros
+   corretced macro: isalpha(c)
+   added macros: _tolower(c), _toupper(c), tolower(c), toupper(c) toascii(c)
+
+
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
    Free Software Foundation; either version 2, or (at your option) any
    later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-   
+
    In other words, you are welcome to use, share and improve this program.
    You are forbidden to forbid anyone else to use, share and improve
-   what you give them.   Help stamp out software-hoarding!  
+   what you give them.   Help stamp out software-hoarding!
 -------------------------------------------------------------------------*/
 
 #ifndef __SDC51_CTYPE_H
 #define __SDC51_CTYPE_H 1
 
-#define isalnum(x)   (isalpha(x) || isdigit(x))
-#define isalpha(x)   (isupper(x) || islower(c))
+#include <sdcc-lib.h>
 
 #ifdef SDCC_STACK_AUTO
-#warning Make sure you recompile _is*.c files as 'reentrant'
-
-extern char  iscntrl   (unsigned char ) reentrant ;
-extern char  isdigit   (unsigned char ) reentrant ;
-extern char  isgraph   (unsigned char ) reentrant ;
-extern char  islower   (unsigned char ) reentrant ;
-extern char  isupper   (unsigned char ) reentrant ;
-extern char  isprint   (unsigned char ) reentrant ;
-extern char  ispunct   (unsigned char ) reentrant ;
-extern char  isspace   (unsigned char ) reentrant ;
-extern char  isxdigit  (unsigned char ) reentrant ;
+
+extern char  iscntrl   (unsigned char ) _REENTRANT ;
+extern char  isdigit   (unsigned char ) _REENTRANT ;
+extern char  isgraph   (unsigned char ) _REENTRANT ;
+extern char  islower   (unsigned char ) _REENTRANT ;
+extern char  isupper   (unsigned char ) _REENTRANT ;
+extern char  isprint   (unsigned char ) _REENTRANT ;
+extern char  ispunct   (unsigned char ) _REENTRANT ;
+extern char  isspace   (unsigned char ) _REENTRANT ;
+extern char  isxdigit  (unsigned char ) _REENTRANT ;
 
 #else
 
@@ -54,10 +59,22 @@ extern char  isspace   (unsigned char )  ;
 extern char  isxdigit  (unsigned char )  ;
 
 #endif
-#endif
-
 
+#define isalnum(c)   (isalpha(c) || isdigit(c))
+#define isalpha(c)   (isupper(c) || islower(c))
 
+/* ANSI versions of _tolower & _toupper
+#define _tolower(c)  ((c) - ('a' - 'A'))
+#define _toupper(c)  ((c) + ('a' - 'A'))
+*/
 
+/* The _tolower & _toupper functions below can applied to any
+   alpha characters regardless of the case (upper or lower) */
+#define _tolower(c)  ((c) | ('a' - 'A'))
+#define _toupper(c)  ((c) & ~('a' - 'A'))
 
+#define tolower(c)  ((isupper(c)) ? _tolower(c) : (c))
+#define toupper(c)  ((islower(c)) ? _toupper(c) : (c))
+#define toascii(c)  ((c) & 0x7F)
 
+#endif