001: /*
002: * Portions Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025:
026: /*
027: *******************************************************************************
028: * (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
029: * *
030: * The original version of this source code and documentation is copyrighted *
031: * and owned by IBM, These materials are provided under terms of a License *
032: * Agreement between IBM and Sun. This technology is protected by multiple *
033: * US and International patents. This notice and attribution to IBM may not *
034: * to removed. *
035: *******************************************************************************
036: */
037:
038: package sun.text.normalizer;
039:
040: import java.text.ParsePosition;
041:
042: /**
043: * An interface that defines both lookup protocol and parsing of
044: * symbolic names.
045: *
046: * <p>A symbol table maintains two kinds of mappings. The first is
047: * between symbolic names and their values. For example, if the
048: * variable with the name "start" is set to the value "alpha"
049: * (perhaps, though not necessarily, through an expression such as
050: * "$start=alpha"), then the call lookup("start") will return the
051: * char[] array ['a', 'l', 'p', 'h', 'a'].
052: *
053: * <p>The second kind of mapping is between character values and
054: * UnicodeMatcher objects. This is used by RuleBasedTransliterator,
055: * which uses characters in the private use area to represent objects
056: * such as UnicodeSets. If U+E015 is mapped to the UnicodeSet [a-z],
057: * then lookupMatcher(0xE015) will return the UnicodeSet [a-z].
058: *
059: * <p>Finally, a symbol table defines parsing behavior for symbolic
060: * names. All symbolic names start with the SYMBOL_REF character.
061: * When a parser encounters this character, it calls parseReference()
062: * with the position immediately following the SYMBOL_REF. The symbol
063: * table parses the name, if there is one, and returns it.
064: *
065: * @draft ICU 2.8
066: * @deprecated This is a draft API and might change in a future release of ICU.
067: */
068: public interface SymbolTable {
069:
070: /**
071: * The character preceding a symbol reference name.
072: * @draft ICU 2.8
073: * @deprecated This is a draft API and might change in a future release of ICU.
074: */
075: static final char SYMBOL_REF = '$';
076:
077: /**
078: * Lookup the characters associated with this string and return it.
079: * Return <tt>null</tt> if no such name exists. The resultant
080: * array may have length zero.
081: * @param s the symbolic name to lookup
082: * @return a char array containing the name's value, or null if
083: * there is no mapping for s.
084: * @draft ICU 2.8
085: * @deprecated This is a draft API and might change in a future release of ICU.
086: */
087: char[] lookup(String s);
088:
089: /**
090: * Lookup the UnicodeMatcher associated with the given character, and
091: * return it. Return <tt>null</tt> if not found.
092: * @param ch a 32-bit code point from 0 to 0x10FFFF inclusive.
093: * @return the UnicodeMatcher object represented by the given
094: * character, or null if there is no mapping for ch.
095: * @draft ICU 2.8
096: * @deprecated This is a draft API and might change in a future release of ICU.
097: */
098: UnicodeMatcher lookupMatcher(int ch);
099:
100: /**
101: * Parse a symbol reference name from the given string, starting
102: * at the given position. If no valid symbol reference name is
103: * found, return null and leave pos unchanged. That is, if the
104: * character at pos cannot start a name, or if pos is at or after
105: * text.length(), then return null. This indicates an isolated
106: * SYMBOL_REF character.
107: * @param text the text to parse for the name
108: * @param pos on entry, the index of the first character to parse.
109: * This is the character following the SYMBOL_REF character. On
110: * exit, the index after the last parsed character. If the parse
111: * failed, pos is unchanged on exit.
112: * @param limit the index after the last character to be parsed.
113: * @return the parsed name, or null if there is no valid symbolic
114: * name at the given position.
115: * @draft ICU 2.8
116: * @deprecated This is a draft API and might change in a future release of ICU.
117: */
118: String parseReference(String text, ParsePosition pos, int limit);
119: }
|