mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			141 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Java
		
	
	
	
// Collator.java - Locale-sensitive string comparison.
 | 
						|
 | 
						|
/* Copyright (C) 1999, 2000  Free Software Foundation
 | 
						|
 | 
						|
   This file is part of libgcj.
 | 
						|
 | 
						|
This software is copyrighted work licensed under the terms of the
 | 
						|
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
 | 
						|
details.  */
 | 
						|
 | 
						|
package java.text;
 | 
						|
 | 
						|
import java.util.Locale;
 | 
						|
import java.util.MissingResourceException;
 | 
						|
import java.util.ResourceBundle;
 | 
						|
import java.util.Comparator;
 | 
						|
 | 
						|
/**
 | 
						|
 * @author Tom Tromey <tromey@cygnus.com>
 | 
						|
 * @date March 18, 1999
 | 
						|
 */
 | 
						|
/* Written using "Java Class Libraries", 2nd edition, plus online
 | 
						|
 * API docs for JDK 1.2 from http://www.javasoft.com.
 | 
						|
 * Status: Mostly complete, but parts stubbed out.  Look for FIXME.
 | 
						|
 */
 | 
						|
 | 
						|
public abstract class Collator implements Comparator, Cloneable
 | 
						|
{
 | 
						|
  public static final int NO_DECOMPOSITION = 0;
 | 
						|
  public static final int CANONICAL_DECOMPOSITION = 1;
 | 
						|
  public static final int FULL_DECOMPOSITION = 2;
 | 
						|
 | 
						|
  public static final int PRIMARY = 0;
 | 
						|
  public static final int SECONDARY = 1;
 | 
						|
  public static final int TERTIARY = 2;
 | 
						|
  public static final int IDENTICAL = 3;
 | 
						|
 | 
						|
  protected Collator ()
 | 
						|
  {
 | 
						|
    strength = TERTIARY;
 | 
						|
    decmp = CANONICAL_DECOMPOSITION;
 | 
						|
  }
 | 
						|
 | 
						|
  public abstract int compare (String source, String target);
 | 
						|
 | 
						|
  public int compare (Object o1, Object o2)
 | 
						|
  {
 | 
						|
    return compare ((String) o1, (String) o2);
 | 
						|
  }
 | 
						|
 | 
						|
  public boolean equals (Object obj)
 | 
						|
  {
 | 
						|
    if (! (obj instanceof Collator))
 | 
						|
      return false;
 | 
						|
    Collator c = (Collator) obj;
 | 
						|
    return decmp == c.decmp && strength == c.strength;
 | 
						|
  }
 | 
						|
 | 
						|
  public boolean equals (String source, String target)
 | 
						|
  {
 | 
						|
    return compare (source, target) == 0;
 | 
						|
  }
 | 
						|
 | 
						|
  public Object clone ()
 | 
						|
  {
 | 
						|
    return super.clone ();
 | 
						|
  }
 | 
						|
 | 
						|
  public static synchronized Locale[] getAvailableLocales ()
 | 
						|
  {
 | 
						|
    // FIXME.
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  public abstract CollationKey getCollationKey (String source);
 | 
						|
 | 
						|
  public synchronized int getDecomposition ()
 | 
						|
  {
 | 
						|
    return decmp;
 | 
						|
  }
 | 
						|
 | 
						|
  public static Collator getInstance ()
 | 
						|
  {
 | 
						|
    return getInstance (Locale.getDefault());
 | 
						|
  }
 | 
						|
 | 
						|
  public static Collator getInstance (Locale loc)
 | 
						|
  {
 | 
						|
    ResourceBundle res;
 | 
						|
    String pattern;
 | 
						|
    try
 | 
						|
      {
 | 
						|
	res = ResourceBundle.getBundle("gnu.gcj.text.LocaleData", loc);
 | 
						|
	pattern = res.getString("collatorRule");
 | 
						|
      }
 | 
						|
    catch (MissingResourceException x)
 | 
						|
      {
 | 
						|
	return null;
 | 
						|
      }
 | 
						|
    try
 | 
						|
      {
 | 
						|
	return new RuleBasedCollator (pattern);
 | 
						|
      }
 | 
						|
    catch (ParseException x)
 | 
						|
      {
 | 
						|
	return null;
 | 
						|
      }
 | 
						|
  }
 | 
						|
 | 
						|
  public synchronized int getStrength ()
 | 
						|
  {
 | 
						|
    return strength;
 | 
						|
  }
 | 
						|
 | 
						|
  public abstract int hashCode ();
 | 
						|
 | 
						|
  public synchronized void setDecomposition (int mode)
 | 
						|
  {
 | 
						|
    if (mode != NO_DECOMPOSITION
 | 
						|
	&& mode != CANONICAL_DECOMPOSITION
 | 
						|
	&& mode != FULL_DECOMPOSITION)
 | 
						|
      throw new IllegalArgumentException ();
 | 
						|
    decmp = mode;
 | 
						|
  }
 | 
						|
 | 
						|
  public synchronized void setStrength (int strength)
 | 
						|
  {
 | 
						|
    if (strength != PRIMARY && strength != SECONDARY
 | 
						|
	&& strength != TERTIARY && strength != IDENTICAL)
 | 
						|
      throw new IllegalArgumentException ();
 | 
						|
    this.strength = strength;
 | 
						|
  }
 | 
						|
 | 
						|
  // Decompose a single character and append results to the buffer.
 | 
						|
  native final void decomposeCharacter (char c, StringBuffer buf);
 | 
						|
 | 
						|
  // These names are fixed by the serialization spec.
 | 
						|
  int decmp;
 | 
						|
  int strength;
 | 
						|
}
 |