You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2009/06/29 07:47:11 UTC

svn commit: r789219 - in /commons/sandbox/runtime/trunk/src: main/java/org/apache/commons/runtime/util/Ascii.java test/org/apache/commons/runtime/TestStrings.java

Author: mturk
Date: Mon Jun 29 05:47:11 2009
New Revision: 789219

URL: http://svn.apache.org/viewvc?rev=789219&view=rev
Log:
Add tolower/toupper Ascii methods

Modified:
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Ascii.java
    commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestStrings.java

Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Ascii.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Ascii.java?rev=789219&r1=789218&r2=789219&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Ascii.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Ascii.java Mon Jun 29 05:47:11 2009
@@ -58,9 +58,81 @@
         _XL_L,  _XL_L,  _XL_L,  _XL_P,  _XL_P,  _XL_P,  _XL_P,  _XL_C
     };
 
+    private static final char[] ccs_clower = {
+        0x00,    0x01,    0x02,    0x03,    0x04,    0x05,    0x06,    0x07,
+        0x08,    0x09,    0x0a,    0x0b,    0x0c,    0x0d,    0x0e,    0x0f,
+        0x10,    0x11,    0x12,    0x13,    0x14,    0x15,    0x16,    0x17,
+        0x18,    0x19,    0x1a,    0x1b,    0x1c,    0x1d,    0x1e,    0x1f,
+        0x20,    0x21,    0x22,    0x23,    0x24,    0x25,    0x26,    0x27,
+        0x28,    0x29,    0x2a,    0x2b,    0x2c,    0x2d,    0x2e,    0x2f,
+        0x30,    0x31,    0x32,    0x33,    0x34,    0x35,    0x36,    0x37,
+        0x38,    0x39,    0x3a,    0x3b,    0x3c,    0x3d,    0x3e,    0x3f,
+        0x40,    'a',     'b',     'c',     'd',     'e',     'f',     'g',
+        'h',     'i',     'j',     'k',     'l',     'm',     'n',     'o',
+        'p',     'q',     'r',     's',     't',     'u',     'v',     'w',
+        'x',     'y',     'z',     0x5b,    0x5c,    0x5d,    0x5e,    0x5f,
+        0x60,    'a',     'b',     'c',     'd',     'e',     'f',     'g',
+        'h',     'i',     'j',     'k',     'l',     'm',     'n',     'o',
+        'p',     'q',     'r',     's',     't',     'u',     'v',     'w',
+        'x',     'y',     'z',     0x7b,    0x7c,    0x7d,    0x7e,    0x7f,
+        0x80,    0x81,    0x82,    0x83,    0x84,    0x85,    0x86,    0x87,
+        0x88,    0x89,    0x8a,    0x8b,    0x8c,    0x8d,    0x8e,    0x8f,
+        0x90,    0x91,    0x92,    0x93,    0x94,    0x95,    0x96,    0x97,
+        0x98,    0x99,    0x9a,    0x9b,    0x9c,    0x9d,    0x9e,    0x9f,
+        0xa0,    0xa1,    0xa2,    0xa3,    0xa4,    0xa5,    0xa6,    0xa7,
+        0xa8,    0xa9,    0xaa,    0xab,    0xac,    0xad,    0xae,    0xaf,
+        0xb0,    0xb1,    0xb2,    0xb3,    0xb4,    0xb5,    0xb6,    0xb7,
+        0xb8,    0xb9,    0xba,    0xbb,    0xbc,    0xbd,    0xbe,    0xbf,
+        0xc0,    0xc1,    0xc2,    0xc3,    0xc4,    0xc5,    0xc6,    0xc7,
+        0xc8,    0xc9,    0xca,    0xcb,    0xcc,    0xcd,    0xce,    0xcf,
+        0xd0,    0xd1,    0xd2,    0xd3,    0xd4,    0xd5,    0xd6,    0xd7,
+        0xd8,    0xd9,    0xda,    0xdb,    0xdc,    0xdd,    0xde,    0xdf,
+        0xe0,    0xe1,    0xe2,    0xe3,    0xe4,    0xe5,    0xe6,    0xe7,
+        0xe8,    0xe9,    0xea,    0xeb,    0xec,    0xed,    0xee,    0xef,
+        0xf0,    0xf1,    0xf2,    0xf3,    0xf4,    0xf5,    0xf6,    0xf7,
+        0xf8,    0xf9,    0xfa,    0xfb,    0xfc,    0xfd,    0xfe,    0xff,
+    };
+
+    private static final char[] ccs_cupper = {
+        0x00,    0x01,    0x02,    0x03,    0x04,    0x05,    0x06,    0x07,
+        0x08,    0x09,    0x0a,    0x0b,    0x0c,    0x0d,    0x0e,    0x0f,
+        0x10,    0x11,    0x12,    0x13,    0x14,    0x15,    0x16,    0x17,
+        0x18,    0x19,    0x1a,    0x1b,    0x1c,    0x1d,    0x1e,    0x1f,
+        0x20,    0x21,    0x22,    0x23,    0x24,    0x25,    0x26,    0x27,
+        0x28,    0x29,    0x2a,    0x2b,    0x2c,    0x2d,    0x2e,    0x2f,
+        0x30,    0x31,    0x32,    0x33,    0x34,    0x35,    0x36,    0x37,
+        0x38,    0x39,    0x3a,    0x3b,    0x3c,    0x3d,    0x3e,    0x3f,
+        0x40,    'A',     'B',     'C',     'D',     'E',     'F',     'G',
+        'H',     'I',     'J',     'K',     'L',     'M',     'N',     'O',
+        'P',     'Q',     'R',     'S',     'T',     'U',     'V',     'W',
+        'X',     'Y',     'Z',     0x5b,    0x5c,    0x5d,    0x5e,    0x5f,
+        0x60,    'A',     'B',     'C',     'D',     'E',     'F',     'G',
+        'H',     'I',     'J',     'K',     'L',     'M',     'N',     'O',
+        'P',     'Q',     'R',     'S',     'T',     'U',     'V',     'W',
+        'X',     'Y',     'Z',     0x7b,    0x7c,    0x7d,    0x7e,    0x7f,
+        0x80,    0x81,    0x82,    0x83,    0x84,    0x85,    0x86,    0x87,
+        0x88,    0x89,    0x8a,    0x8b,    0x8c,    0x8d,    0x8e,    0x8f,
+        0x90,    0x91,    0x92,    0x93,    0x94,    0x95,    0x96,    0x97,
+        0x98,    0x99,    0x9a,    0x9b,    0x9c,    0x9d,    0x9e,    0x9f,
+        0xa0,    0xa1,    0xa2,    0xa3,    0xa4,    0xa5,    0xa6,    0xa7,
+        0xa8,    0xa9,    0xaa,    0xab,    0xac,    0xad,    0xae,    0xaf,
+        0xb0,    0xb1,    0xb2,    0xb3,    0xb4,    0xb5,    0xb6,    0xb7,
+        0xb8,    0xb9,    0xba,    0xbb,    0xbc,    0xbd,    0xbe,    0xbf,
+        0xc0,    0xc1,    0xc2,    0xc3,    0xc4,    0xc5,    0xc6,    0xc7,
+        0xc8,    0xc9,    0xca,    0xcb,    0xcc,    0xcd,    0xce,    0xcf,
+        0xd0,    0xd1,    0xd2,    0xd3,    0xd4,    0xd5,    0xd6,    0xd7,
+        0xd8,    0xd9,    0xda,    0xdb,    0xdc,    0xdd,    0xde,    0xdf,
+        0xe0,    0xe1,    0xe2,    0xe3,    0xe4,    0xe5,    0xe6,    0xe7,
+        0xe8,    0xe9,    0xea,    0xeb,    0xec,    0xed,    0xee,    0xef,
+        0xf0,    0xf1,    0xf2,    0xf3,    0xf4,    0xf5,    0xf6,    0xf7,
+        0xf8,    0xf9,    0xfa,    0xfb,    0xfc,    0xfd,    0xfe,    0xff,
+    };
+
+
     public static boolean isascii(int c)
     {
-        if (c >= 0 && c < _XL_B)
+        c = c & 0xff;
+        if (c < _XL_B)
             return true;
         else
             return false;
@@ -68,7 +140,8 @@
 
     public static boolean isalnum(int c)
     {
-        if (c >= 0 && c < _XL_B)
+        c = c & 0xff;
+        if (c < _XL_B)
             return (ccs_ctype[c] & (_XL_U|_XL_L|_XL_N)) != 0;
         else
             return false;
@@ -76,7 +149,8 @@
 
     public static boolean isalpha(int c)
     {
-        if (c >= 0 && c < _XL_B)
+        c = c & 0xff;
+        if (c < _XL_B)
             return (ccs_ctype[c] & (_XL_U|_XL_L)) != 0;
         else
             return false;
@@ -84,7 +158,8 @@
 
     public static boolean isdigit(int c)
     {
-        if (c >= 0 && c < _XL_B)
+        c = c & 0xff;
+        if (c < _XL_B)
             return (ccs_ctype[c] & _XL_N) != 0;
         else
             return false;
@@ -92,7 +167,8 @@
 
     public static boolean isspace(int c)
     {
-        if (c >= 0 && c < _XL_B)
+        c = c & 0xff;
+        if (c < _XL_B)
             return (ccs_ctype[c] & _XL_S) != 0;
         else
             return false;
@@ -100,7 +176,8 @@
 
     public static boolean isblank(int c)
     {
-        if (c >= 0 && c < _XL_B)
+        c = c & 0xff;
+        if (c < _XL_B)
             return (ccs_ctype[c] & (_XL_S|_XL_B)) == (_XL_S|_XL_B);
         else
             return false;
@@ -108,7 +185,8 @@
 
     public static boolean iscntrl(int c)
     {
-        if (c >= 0 && c < _XL_B)
+        c = c & 0xff;
+        if (c < _XL_B)
             return (ccs_ctype[c] & _XL_C) != 0;
         else
             return false;
@@ -116,7 +194,8 @@
 
     public static boolean islower(int c)
     {
-        if (c >= 0 && c < _XL_B)
+        c = c & 0xff;
+        if (c < _XL_B)
             return (ccs_ctype[c] & _XL_L) != 0;
         else
             return false;
@@ -124,7 +203,8 @@
 
     public static boolean isupper(int c)
     {
-        if (c >= 0 && c < _XL_B)
+        c = c & 0xff;
+        if (c < _XL_B)
             return (ccs_ctype[c] & _XL_U) != 0;
         else
             return false;
@@ -132,7 +212,8 @@
 
     public static boolean ispunct(int c)
     {
-        if (c >= 0 && c < _XL_B)
+        c = c & 0xff;
+        if (c < _XL_B)
             return (ccs_ctype[c] & _XL_P) != 0;
         else
             return false;
@@ -149,11 +230,22 @@
      */
     public static boolean isxdigit(int c)
     {
-        if (c >= 0 && c < _XL_B)
+        c = c & 0xff;
+        if (c < _XL_B)
             return (ccs_ctype[c] & (_XL_X|_XL_N)) != 0;
         else
             return false;
     }
 
+    public static int tolower(int c)
+    {
+        return ccs_clower[c & 0xff];
+    }
+
+    public static int toupper(int c)
+    {
+        return ccs_cupper[c & 0xff];
+    }
+
 }
 

Modified: commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestStrings.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestStrings.java?rev=789219&r1=789218&r2=789219&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestStrings.java (original)
+++ commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestStrings.java Mon Jun 29 05:47:11 2009
@@ -141,5 +141,13 @@
         assertFalse("Lower Char",  Ascii.islower(b));
     }    
 
+    public void testAsciiCase()
+        throws Exception
+    {
+    	byte b = (byte)0xF4;    	
+        assertEquals("Lower Ascii",  'a', Ascii.tolower('A'));      
+        assertEquals("Lower Ascii",  0xF4, Ascii.tolower(b));      
+    }    
+
 }