com.ibm.icu.text.BidiClassifier Maven / Gradle / Ivy
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*
*******************************************************************************
* Copyright (C) 2000-2009, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
/* Written by Simon Montagu, Matitiahu Allouche
* (ported from C code written by Markus W. Scherer)
*/
package com.ibm.icu.text;
/**
* Overrides default Bidi class values with custom ones.
*
* The override mechanism requires to define a subclass of
* BidiClassifier
which overrides the classifier
* method to assign customized Bidi classes.
*
* This may be useful for assigning Bidi classes to PUA characters, or
* for special application needs. For instance, an application may want to
* handle all spaces like L or R characters (according to the base direction)
* when creating the visual ordering of logical lines which are part of a report
* organized in columns: there should not be interaction between adjacent
* cells.
*
* To start using this customized
* classifier with a Bidi object, it must be specified by calling the
* Bidi.setCustomClassifier
method; after that, the method
* classify
of the custom BidiClassifier
will be
* called by the UBA implementation any time the class of a character is
* to be determined.
*
* @see Bidi#setCustomClassifier
* @stable ICU 3.8
*/
public /*abstract*/ class BidiClassifier {
/**
* This object can be used for any purpose by the caller to pass
* information to the BidiClassifier methods, and by the BidiClassifier
* methods themselves.
* For instance, this object can be used to save a reference to
* a previous custom BidiClassifier while setting a new one, so as to
* allow chaining between them.
* @stable ICU 3.8
*/
protected Object context;
/**
* @param context Context for this classifier instance.
* May be null.
* @stable ICU 3.8
*/
public BidiClassifier(Object context) {
this.context = context;
}
/**
* Sets classifier context, which can be used either by a caller or
* callee for various purposes.
*
* @param context Context for this classifier instance.
* May be null.
* @stable ICU 3.8
*/
public void setContext(Object context) {
this.context = context;
}
/**
* Returns the current classifier context.
* @stable ICU 3.8
*/
public Object getContext() {
return this.context;
}
/**
* Gets customized Bidi class for the code point c
.
*
* Default implementation, to be overridden.
*
* @param c Code point to be classified.
* @return An integer representing directional property / Bidi class for the
* given code point c
, or UCharacter.getIntPropertyMaxValue(UProperty.BIDI_CLASS)+1
* to signify that there is no need to override the standard Bidi class for
* the given code point.
* @stable ICU 3.8
*/
public int classify(int c) {
return Bidi.CLASS_DEFAULT;
}
}