NativeConverter.java revision bcf7c66e617ad0c33bb320184bb2401def517342
1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project******************************************************************************* 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project* Copyright (C) 1996-2006, International Business Machines Corporation and * 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project* others. All Rights Reserved. * 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project******************************************************************************* 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project* 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project******************************************************************************* 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project*/ 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage com.ibm.icu4jni.charset; 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 12bcf7c66e617ad0c33bb320184bb2401def517342Elliott Hughesimport java.nio.charset.Charset; 13bcf7c66e617ad0c33bb320184bb2401def517342Elliott Hughes 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Class for accessing the underlying JNI methods 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 18bcf7c66e617ad0c33bb320184bb2401def517342Elliott Hughesfinal class NativeConverter { 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //Native methods 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Converts an array of bytes containing characters in an external 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * encoding into an array of Unicode characters. This method allows 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a buffer by buffer conversion of a data stream. The state of the 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * conversion is saved between calls to convert. Among other things, 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this means multibyte input sequences can be split between calls. 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If a call to convert results in an Error, the conversion may be 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * continued by calling convert again with suitably modified parameters. 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * All conversions should be finished with a call to the flush method. 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by C code 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param input byte array containing text to be converted. 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param inEnd stop conversion at this offset in input array (exclusive). 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param output character array to receive conversion result. 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param outEnd stop writing to output array at this offset (exclusive). 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param data integer array containing the following data 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[0] = inputOffset 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[1] = outputOffset 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int convertByteToChar( long converterHandle, 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] input, int inEnd, 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] output, int outEnd, 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] data, 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean flush); 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Converts an array of bytes containing characters in an external 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * encoding into an array of Unicode characters. This method allows 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a buffer by buffer conversion of a data stream. The state of the 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * conversion is saved between calls to convert. Among other things, 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this means multibyte input sequences can be split between calls. 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If a call to convert results in an Error, the conversion may be 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * continued by calling convert again with suitably modified parameters. 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * All conversions should be finished with a call to the flush method. 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by C code 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param input byte array containing text to be converted. 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param inEnd stop conversion at this offset in input array (exclusive). 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param output character array to receive conversion result. 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param outEnd stop writing to output array at this offset (exclusive). 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param data integer array containing the following data 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[0] = inputOffset 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[1] = outputOffset 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int decode( long converterHandle, 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] input, int inEnd, 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] output, int outEnd, 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] data, 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean flush); 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Converts an array of Unicode chars containing characters in an 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * external encoding into an array of bytes. This method allows 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a buffer by buffer conversion of a data stream. The state of the 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * conversion is saved between calls to convert. Among other things, 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this means multibyte input sequences can be split between calls. 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If a call to convert results in an Error, the conversion may be 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * continued by calling convert again with suitably modified parameters. 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * All conversions should be finished with a call to the flush method. 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by C code 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param input char array containing text to be converted. 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param inEnd stop conversion at this offset in input array (exclusive). 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param output byte array to receive conversion result. 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param outEnd stop writing to output array at this offset (exclusive). 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param data integer array containing the following data 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[0] = inputOffset 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[1] = outputOffset 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int convertCharToByte(long converterHandle, 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] input, int inEnd, 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] output, int outEnd, 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] data, 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean flush); 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Converts an array of Unicode chars containing characters in an 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * external encoding into an array of bytes. This method allows 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a buffer by buffer conversion of a data stream. The state of the 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * conversion is saved between calls to convert. Among other things, 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this means multibyte input sequences can be split between calls. 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If a call to convert results in an Error, the conversion may be 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * continued by calling convert again with suitably modified parameters. 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * All conversions should be finished with a call to the flush method. 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by C code 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param input char array containing text to be converted. 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param inEnd stop conversion at this offset in input array (exclusive). 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param output byte array to receive conversion result. 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param outEnd stop writing to output array at this offset (exclusive). 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param data integer array containing the following data 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[0] = inputOffset 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[1] = outputOffset 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int encode(long converterHandle, 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] input, int inEnd, 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] output, int outEnd, 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] data, 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean flush); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Writes any remaining output to the output buffer and resets the 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * converter to its initial state. 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by C code 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param output byte array to receive flushed output. 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param outEnd stop writing to output array at this offset (exclusive). 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param data integer array containing the following data 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[0] = inputOffset 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[1] = outputOffset 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int flushCharToByte(long converterHandle, 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] output, 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int outEnd, 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] data); 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Writes any remaining output to the output buffer and resets the 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * converter to its initial state. 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param output char array to receive flushed output. 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param outEnd stop writing to output array at this offset (exclusive). 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param data integer array containing the following data 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[0] = inputOffset 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * data[1] = outputOffset 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int flushByteToChar(long converterHandle, 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] output, 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int outEnd, 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] data); 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Open the converter with the specified encoding 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle long array for recieving the adress of converter object 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * created by the native code 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param encoding string representing encoding 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native long openConverter(String encoding); 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Resets the ByteToChar (toUnicode) state of specified converter 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native void resetByteToChar(long converterHandle); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Resets the CharToByte (fromUnicode) state of specified converter 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native void resetCharToByte(long converterHandle); 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Closes the specified converter and releases the resources 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native void closeConverter(long converterHandle); 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets the substitution Unicode chars of the specified converter used 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * by encoder 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param subChars array of chars to used for substitution 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param length length of the array 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int setSubstitutionChars( long converterHandle, 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] subChars,int length); 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets the substitution bytes of the specified converter used by decoder 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param subChars array of bytes to used for substitution 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param length length of the array 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int setSubstitutionBytes( long converterHandle, 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] subChars,int length); 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets the substitution mode of CharToByte(fromUnicode) for the specified converter 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param mode to set the true/false 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int setSubstitutionModeCharToByte(long converterHandle, 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean mode); 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets the substitution mode of CharToByte(fromUnicode) for the specified converter 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param mode to set the true/false 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 3.6 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int setSubstitutionModeByteToChar(long converterHandle, 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean mode); 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the numnber of invalid bytes in the specified converter object 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * for the last error that has occured 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param length array of int to recieve length of the array 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int countInvalidBytes(long converterHandle, int[] length); 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the numnber of invalid chars in the specified converter object 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * for the last error that has occured 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param length array of int to recieve length of the array 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int countInvalidChars(long converterHandle, int[] length); 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the number of bytes needed for converting a char 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return number of bytes needed 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int getMaxBytesPerChar(long converterHandle); 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the number of bytes needed for converting a char 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return number of bytes needed 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 3.2 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int getMinBytesPerChar(long converterHandle); 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the average numnber of bytes needed for converting a char 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return number of bytes needed 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native float getAveBytesPerChar(long converterHandle); 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the number of chars needed for converting a byte 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return number of bytes needed 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int getMaxCharsPerByte(long converterHandle); 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the average numnber of chars needed for converting a byte 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return number of bytes needed 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native float getAveCharsPerByte(long converterHandle); 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //CSDL: added by Jack 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Determines whether charset1 contains charset2. 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native boolean contains(long converterHandle1, long converterHandle2); 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native byte[] getSubstitutionBytes(long converterHandle); 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Ascertains if a given Unicode code unit can 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * be converted to the target encoding 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param codeUnit the character to be converted 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return true if a character can be converted 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native boolean canEncode(long converterHandle,int codeUnit); 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Ascertains if a given a byte sequence can be converted to Unicode 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Address of converter object created by the native code 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param bytes the bytes to be converted 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return true if a character can be converted 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native boolean canDecode(long converterHandle,byte[] bytes); 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the canonical names of available converters 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return Object[] names as an object array 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native String[] getAvailable(); 340bcf7c66e617ad0c33bb320184bb2401def517342Elliott Hughes 341bcf7c66e617ad0c33bb320184bb2401def517342Elliott Hughes public static final native Charset charsetForName(String charsetName); 342bcf7c66e617ad0c33bb320184bb2401def517342Elliott Hughes 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the number of aliases for a converter name 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param enc encoding name 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return number of aliases for the converter 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int countAliases(String enc); 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the aliases associated with the converter name 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param enc converter name 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return converter names as elements in an object array 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native String[] getAliases(String enc); 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets the callback to Unicode for ICU conveter. The default behaviour of ICU callback 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is to call the specified callback function for both illegal and unmapped sequences. 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Adress of the converter object created by native code 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param mode call back mode to set. This is either STOP_CALLBACK, SKIP_CALLBACK or SUBSTITUE_CALLBACK 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The converter performs the specified callback when an error occurs 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param stopOnIllegal If true sets the alerts the converter callback to stop on an illegal sequence 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int setCallbackDecode(long converterHandle, int onMalformedInput, int onUnmappableInput, char[] subChars, int length); 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets the callback from Unicode for ICU conveter. The default behaviour of ICU callback 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is to call the specified callback function for both illegal and unmapped sequences. 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param converterHandle Adress of the converter object created by native code 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param mode call back mode to set. This is either STOP_CALLBACK, SKIP_CALLBACK or SUBSTITUE_CALLBACK 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The converter performs the specified callback when an error occurs 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param stopOnIllegal If true sets the alerts the converter callback to stop on an illegal sequence 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return int error code returned by ICU 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native int setCallbackEncode(long converterHandle, int onMalformedInput, int onUnmappableInput, byte[] subBytes, int length); 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a thread safe clone of the converter 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @internal ICU 2.4 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final native long safeClone(long converterHandle); 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** @internal ICU 2.4 */ 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int STOP_CALLBACK = 0;//CodingErrorAction.REPORT 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** @internal ICU 2.4 */ 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int SKIP_CALLBACK = 1;//CodingErrorAction.IGNORE 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** @internal ICU 2.4 */ 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int SUBSTITUTE_CALLBACK = 2;//CodingErrorAction.REPLACE 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 396