Home | History | Annotate | Download | only in text
      1 /* GENERATED SOURCE. DO NOT MODIFY. */
      2 //  2016 and later: Unicode, Inc. and others.
      3 // License & terms of use: http://www.unicode.org/copyright.html#License
      4 /*
      5  *******************************************************************************
      6  * Copyright (C) 2000-2009, International Business Machines Corporation and    *
      7  * others. All Rights Reserved.                                                *
      8  *******************************************************************************
      9  */
     10 /* Written by Simon Montagu, Matitiahu Allouche
     11  * (ported from C code written by Markus W. Scherer)
     12  */
     13 
     14 package android.icu.text;
     15 
     16 /**
     17  * Overrides default Bidi class values with custom ones.
     18  *
     19  * <p>The override mechanism requires to define a subclass of
     20  * <code>BidiClassifier</code> which overrides the <code>classifier</code>
     21  * method to assign customized Bidi classes.</p>
     22  *
     23  * <p>This may be useful for assigning Bidi classes to PUA characters, or
     24  * for special application needs. For instance, an application may want to
     25  * handle all spaces like L or R characters (according to the base direction)
     26  * when creating the visual ordering of logical lines which are part of a report
     27  * organized in columns: there should not be interaction between adjacent
     28  * cells.</p>
     29  *
     30  * <p>To start using this customized
     31  * classifier with a Bidi object, it must be specified by calling the
     32  * <code>Bidi.setCustomClassifier</code> method; after that, the method
     33  * <code>classify</code> of the custom <code>BidiClassifier</code> will be
     34  * called by the UBA implementation any time the class of a character is
     35  * to be determined.</p>
     36  *
     37  * @see Bidi#setCustomClassifier
     38  * @hide Only a subset of ICU is exposed in Android
     39  */
     40 
     41 public /*abstract*/ class BidiClassifier {
     42 
     43     /**
     44      * This object can be used for any purpose by the caller to pass
     45      * information to the BidiClassifier methods, and by the BidiClassifier
     46      * methods themselves.<br>
     47      * For instance, this object can be used to save a reference to
     48      * a previous custom BidiClassifier while setting a new one, so as to
     49      * allow chaining between them.
     50      */
     51     protected Object context;
     52 
     53     /**
     54      * @param context Context for this classifier instance.
     55      *                May be null.
     56      */
     57     public BidiClassifier(Object context) {
     58         this.context = context;
     59     }
     60 
     61     /**
     62      * Sets classifier context, which can be used either by a caller or
     63      * callee for various purposes.
     64      *
     65      * @param context Context for this classifier instance.
     66      *                May be null.
     67      */
     68     public void setContext(Object context) {
     69         this.context = context;
     70     }
     71 
     72     /**
     73      * Returns the current classifier context.
     74      */
     75     public Object getContext() {
     76         return this.context;
     77     }
     78 
     79     /**
     80      * Gets customized Bidi class for the code point <code>c</code>.
     81      * <p>
     82      * Default implementation, to be overridden.
     83      *
     84      * @param c Code point to be classified.
     85      * @return An integer representing directional property / Bidi class for the
     86      *         given code point <code>c</code>, or Bidi.CLASS_DEFAULT=UCharacter.getIntPropertyMaxValue(UProperty.BIDI_CLASS)+1
     87      *         to signify that there is no need to override the standard Bidi class for
     88      *         the given code point.
     89      * @see Bidi#CLASS_DEFAULT
     90      */
     91     public int classify(int c) {
     92         return Bidi.CLASS_DEFAULT;
     93     }
     94 }
     95