1 28 29 package com.caucho.xml2; 30 31 import com.caucho.util.L10N; 32 import com.caucho.vfs.ReadStream; 33 import com.caucho.vfs.TempCharBuffer; 34 import com.caucho.vfs.Vfs; 35 import com.caucho.xml.ExtendedLocator; 36 import com.caucho.xml.QName; 37 import com.caucho.xml.XmlChar; 38 39 import org.xml.sax.*; 40 41 import java.io.IOException ; 42 import java.io.InputStream ; 43 import java.io.Reader ; 44 import java.util.HashMap ; 45 46 49 public class Intern { 50 private static final int SIZE = 203; 51 52 private final InternQName []_entries = new InternQName[SIZE]; 53 54 InternQName add(char []buffer, int offset, int length, int colon) 55 { 56 int hash = 0; 57 58 for (int i = length - 1; i >= 0; i--) { 59 hash = 37 * hash + buffer[offset + i]; 60 } 61 62 int bucket = (hash & 0x7fffffff) % SIZE; 63 64 InternQName qName; 65 66 for (qName = _entries[bucket]; 67 qName != null; 68 qName = qName._next) { 69 if (qName.match(buffer, offset, length)) 70 return qName; 71 } 72 73 qName = new InternQName(_entries[bucket], buffer, offset, length, colon); 74 _entries[bucket] = qName; 75 76 return qName; 77 } 78 } 79 | Popular Tags |