// CollationElementIterator.java - Iterate over decomposed characters.

/* Copyright (C) 1999  Cygnus Solutions

   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;

/**
 * @author Tom Tromey <tromey@cygnus.com>
 * @date March 25, 1999
 */
/* Written using "Java Class Libraries", 2nd edition, plus online
 * API docs for JDK 1.2 from http://www.javasoft.com.
 * Status: Believed complete and correct to JDK 1.1.
 */

public final class CollationElementIterator
{
  public static final int NULLORDER = 0xffffffff;

  public int next ()
  {
    if (index == text.length())
      return NULLORDER;
    return collator.ceiNext(this);
  }

  // This one returns int while the others return short.
  public static final int primaryOrder (int order)
  {
    // From the JDK 1.2 spec.
    return order >>> 16;
  }

  public void reset ()
  {
    index = 0;
  }

  public static final short secondaryOrder (int order)
  {
    // From the JDK 1.2 spec.
    return (order >>> 8) & 255;
  }

  public static final short tertiaryOrder (int order)
  {
    // From the JDK 1.2 spec.
    return order & 255;
  }

  // Non-public constructor.
  CollationElementIterator (String text, RuleBasedCollator collator)
  {
    this.text = text;
    this.index = 0;
    this.lookahead_set = false;
    this.lookahead = 0;
    this.collator = collator;
  }

  // Text over which we iterate.
  String text;

  // Index of next character to examine in TEXT.
  int index;

  // A piece of lookahead.
  boolean lookahead_set;
  int lookahead;

  // The RuleBasedCollator which created this object.
  RuleBasedCollator collator;
}
