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