blob: 8476339f499d95b10673663d52ca7745d6fcd287 [file] [log] [blame]
/*
*******************************************************************************
* Copyright (C) 2012, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.text;
import static com.ibm.icu.impl.CharacterIteration.DONE32;
import java.text.CharacterIterator;
import java.util.Stack;
import com.ibm.icu.lang.UCharacter;
import com.ibm.icu.lang.UProperty;
final class UnhandledBreakEngine implements LanguageBreakEngine {
// TODO: Use two arrays of UnicodeSet, one with all frozen sets, one with unfrozen.
// in handleChar(), update the unfrozen version, clone, freeze, replace the frozen one.
private final UnicodeSet[] fHandled = new UnicodeSet[BreakIterator.KIND_TITLE + 1];
public UnhandledBreakEngine() {
for (int i = 0; i < fHandled.length; i++) {
fHandled[i] = new UnicodeSet();
}
}
public boolean handles(int c, int breakType) {
return (breakType >= 0 && breakType < fHandled.length) &&
(fHandled[breakType].contains(c));
}
public int findBreaks(CharacterIterator text, int startPos, int endPos,
boolean reverse, int breakType, Stack<Integer> foundBreaks) {
text.setIndex(endPos);
return 0;
}
public synchronized void handleChar(int c, int breakType) {
if (breakType >= 0 && breakType < fHandled.length && c != DONE32) {
if (!fHandled[breakType].contains(c)) {
int script = UCharacter.getIntPropertyValue(c, UProperty.SCRIPT);
fHandled[breakType].applyIntPropertyValue(UProperty.SCRIPT, script);
}
}
}
}