in src/main/java/org/apache/uima/json/jsoncas2/encoding/Utf8ByteOffsetConverter.java [32:60]
public Utf8ByteOffsetConverter(String aString) {
if (aString == null) {
internalToExternal = null;
externalToInternal = null;
return;
}
int byteCount = aString.getBytes(UTF_8).length;
externalToInternal = new int[byteCount + 1];
fill(externalToInternal, UNMAPPED);
int codeUnitCount = aString.length();
internalToExternal = new int[codeUnitCount + 1];
fill(internalToExternal, UNMAPPED);
int cbi = 0;
int cui = 0;
while (cui < aString.length()) {
externalToInternal[cbi] = cui;
internalToExternal[cui] = cbi;
int cp = aString.codePointAt(cui);
cbi += String.valueOf(toChars(cp)).getBytes(UTF_8).length;
cui += charCount(cp);
}
externalToInternal[cbi] = cui;
internalToExternal[cui] = cbi;
}