diff options
author | Mark Spruiell <mes@zeroc.com> | 2004-04-13 18:58:58 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2004-04-13 18:58:58 +0000 |
commit | 0fec5927b3ec89549c3e78b935f0f075120037d0 (patch) | |
tree | 4bb9c1b344948a4a16cb058c50760362dab364a1 /java/src/IceInternal/StringUtil.java | |
parent | facet fix (diff) | |
download | ice-0fec5927b3ec89549c3e78b935f0f075120037d0.tar.bz2 ice-0fec5927b3ec89549c3e78b935f0f075120037d0.tar.xz ice-0fec5927b3ec89549c3e78b935f0f075120037d0.zip |
align with C++ facet changes
Diffstat (limited to 'java/src/IceInternal/StringUtil.java')
-rw-r--r-- | java/src/IceInternal/StringUtil.java | 347 |
1 files changed, 0 insertions, 347 deletions
diff --git a/java/src/IceInternal/StringUtil.java b/java/src/IceInternal/StringUtil.java deleted file mode 100644 index 21b237763ba..00000000000 --- a/java/src/IceInternal/StringUtil.java +++ /dev/null @@ -1,347 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003 -// ZeroC, Inc. -// Billerica, MA, USA -// -// All Rights Reserved. -// -// Ice is free software; you can redistribute it and/or modify it under -// the terms of the GNU General Public License version 2 as published by -// the Free Software Foundation. -// -// ********************************************************************** - -package IceInternal; - -public final class StringUtil -{ - // - // Return the index of the first character in str to - // appear in match, starting from 0. Returns -1 if none is - // found. - // - public static int - findFirstOf(String str, String match) - { - return findFirstOf(str, match, 0); - } - - // - // Return the index of the first character in str to - // appear in match, starting from start. Returns -1 if none is - // found. - // - public static int - findFirstOf(String str, String match, int start) - { - final int len = str.length(); - for(int i = start; i < len; i++) - { - char ch = str.charAt(i); - if(match.indexOf(ch) != -1) - { - return i; - } - } - - return -1; - } - - // - // Return the index of the first character in str which does - // not appear in match, starting from 0. Returns -1 if none is - // found. - // - public static int - findFirstNotOf(String str, String match) - { - return findFirstNotOf(str, match, 0); - } - - // - // Return the index of the first character in str which does - // not appear in match, starting from start. Returns -1 if none is - // found. - // - public static int - findFirstNotOf(String str, String match, int start) - { - final int len = str.length(); - for(int i = start; i < len; i++) - { - char ch = str.charAt(i); - if(match.indexOf(ch) == -1) - { - return i; - } - } - - return -1; - } - - private static void - encodeChar(byte b, StringBuffer s, String special) - { - switch(b) - { - case (byte)'\\': - { - s.append("\\\\"); - break; - } - case (byte)'\'': - { - s.append("\\'"); - break; - } - case (byte)'"': - { - s.append("\\\""); - break; - } - case (byte)'\b': - { - s.append("\\b"); - break; - } - case (byte)'\f': - { - s.append("\\f"); - break; - } - case (byte)'\n': - { - s.append("\\n"); - break; - } - case (byte)'\r': - { - s.append("\\r"); - break; - } - case (byte)'\t': - { - s.append("\\t"); - break; - } - default: - { - if(b <= (byte)31 || b == (byte)127) // Bytes are signed in Java (-128 to 127) - { - s.append('\\'); - String octal = Integer.toOctalString(b); - // - // Add leading zeroes so that we avoid problems during - // decoding. For example, consider the encoded string - // \0013 (i.e., a character with value 1 followed by - // the character '3'). If the leading zeroes were omitted, - // the result would be incorrectly interpreted by the - // decoder as a single character with value 11. - // - for(int j = octal.length(); j < 3; j++) - { - s.append('0'); - } - s.append(octal); - } - else if(special != null && special.indexOf((char)b) != -1) - { - s.append('\\'); - encodeChar(b, s, null); - } - else - { - s.append((char)b); - } - } - } - } - - // - // Encodes a string into UTF8, escaping all characters outside the range [32-126] - // as well as any special characters determined by the caller. - // - public static String - encodeString(String s, String special) - { - byte[] bytes = null; - try - { - bytes = s.getBytes("UTF8"); - } - catch(java.io.UnsupportedEncodingException ex) - { - assert(false); - return null; - } - - StringBuffer result = new StringBuffer(bytes.length); - - for(int i = 0; i < bytes.length; i++) - { - encodeChar(bytes[i], result, special); - } - - return result.toString(); - } - - // - // Decodes a UTF8 string. Decoding starts at the given start position - // (inclusive) and stops at the given end position (exclusive). Upon success, - // the result parameter holds the decoded string and true is returned. - // A return value of false indicates an error was detected in the encoding. - // - public static boolean - decodeString(String s, int start, int end, Ice.StringHolder result) - { - final int len = s.length(); - assert(start >= 0); - assert(end <= len); - assert(start <= end); - - byte[] bytes = new byte[len]; - int bc = 0; - while(start < end) - { - char ch = s.charAt(start); - if(ch == '\\') - { - start++; - if(start == end) - { - return false; // Missing character - } - ch = s.charAt(start); - switch(ch) - { - case '\\': - { - bytes[bc++] = (byte)'\\'; - break; - } - case '\'': - case '"': - { - bytes[bc++] = (byte)ch; - break; - } - case 'b': - { - bytes[bc++] = (byte)'\b'; - break; - } - case 'f': - { - bytes[bc++] = (byte)'\f'; - break; - } - case 'n': - { - bytes[bc++] = (byte)'\n'; - break; - } - case 'r': - { - bytes[bc++] = (byte)'\r'; - break; - } - case 't': - { - bytes[bc++] = (byte)'\t'; - break; - } - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - int count = 0; - int val = 0; - while(count < 3 && start < end && s.charAt(start) >= '0' && s.charAt(start) <= '9') - { - val <<= 3; - val |= s.charAt(start) - '0'; - start++; - count++; - } - if(val > 255) - { - return false; // Octal value out of range - } - bytes[bc++] = (byte)val; - continue; // don't increment start - } - default: - { - byte b = (byte)ch; - if(b <= (byte)31 || b == (byte)127) // Bytes are signed in Java (-128 to 127) - { - return false; // Malformed encoding - } - else - { - bytes[bc++] = b; - } - } - } - } - else - { - bytes[bc++] = (byte)ch; - } - start++; - } - - try - { - result.value = new String(bytes, 0, bc, "UTF8"); - } - catch(java.io.UnsupportedEncodingException ex) - { - assert(false); - } - - return true; - } - - public static int - checkQuote(String s) - { - return checkQuote(s, 0); - } - - // - // If a single or double quotation mark is found at the start position, - // then the position of the matching closing quote is returned. If no - // quotation mark is found at the start position, then 0 is returned. - // If no matching closing quote is found, then -1 is returned. - // - public static int - checkQuote(String s, int start) - { - char quoteChar = s.charAt(start); - if(quoteChar == '"' || quoteChar == '\'') - { - start++; - final int len = s.length(); - int pos; - while(start < len && (pos = s.indexOf(quoteChar, start)) != -1) - { - if(s.charAt(pos - 1) != '\\') - { - return pos; - } - start = pos + 1; - } - return -1; // Unmatched quote - } - return 0; // Not quoted - } -} |