Hashtable, RuleBasedCollator and natIconv (again)

Vladimir Puškaš vpuskas@eunet.yu
Wed Mar 5 21:20:00 GMT 2003


Hi,
I am using "gcc version 3.3 20030305 (prerelease)", configured with: 
"../gcc/configure --prefix=/home/support/gcc-3.3 \ 
--enable-threads=posix --enable-languages=c,c++,java \ 
--enable-java-awt=xlib", on Slackware 8.1 Linux.
I had some problems, here are solutions which work for me.
First - java.util.Hashtable
Xalan 1.2 (yes, it's old, but it's included with project I have to build 
native) has a simple class "org.apache.xalan.xpath.xml.StringKey". 
StringKey caches hash values of its String for fast lookups when used 
in Hashtables. Idea is to fill StringKeys into hashtable, then using a 
String (!?!) get values out.
 hashtable.put(new StringKey("one"),new Integer(1));
 hashtable.put(new StringKey("two"),new Integer(2));
 hashtable.put(new StringKey("three"),new Integer(3));
 someInteger = hashtable.get("two");
GNU Classpaths's Hashtable doesn't work this way. All methods use 
key.equals(element), instead element.equals(key), thus invalidating the 
concept, so get method returns null.
One solution is attached bellow :), other approach would be to search 
and replace all hashtable gets in Xalan which use this little trick :(
Second - Tom's patch for natIconv.cc
It's discussed earlier (last August) on the list, so I'll repeat only 
test class:
---sample-- (by Suresh Raman)
public class encodingtest
{
 public static void main(String args[]) throws Exception
 {
 String encoding = "UTF-16BE";
 String str = "hello world";
 byte[] strbytes = str.getBytes(encoding);
 String newstr = new String(strbytes, encoding);
 System.out.println(newstr);
 }
}
--end sample---
Third - java.text.RuleBasedCollator
Collator.getInstance throws an exception for "de" locale. Problem is in 
RuleBasedCollator constructor which doesn't handle '&' reset properly.
---sample---
import java.text.Collator;
import java.text.RuleBasedCollator;
import java.util.Locale;
class TestCollator {
 public static void main (String[]argv) throws Throwable
 {
 Collator c = Collator.getInstance (new Locale ("de"));
 printCompare (c, "stra\u00dfe", "stra\u00dfe");
 printCompare (c, "M\u00fcnchen", "Muenchen");
 c = new RuleBasedCollator ("<a<b<c&c<d<e");
 printCompare (c, "bc", "bc");
 printCompare (c, "abcde", "abcd");
 }
 public static void printCompare (Collator c, String one, String two)
 {
 System.out.println (one +"-("+ c.compare (one, two) +")-"+ two);
 }
}
--end sample---
This diff helps me, if you find it good enough to merge in, please do.
V.Puskas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gcc-3.3.diff
Type: text/x-diff
Size: 4246 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/java/attachments/20030305/66066f6d/attachment.bin>


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /