int8_tplatform;/* +68: 1 platform of the converter (only IBM now) */
int8_tconversionType;/* +69: 1 conversion type */
int8_tminBytesPerChar;/* +70: 1 Minimum # bytes per char in this codepage */
int8_tmaxBytesPerChar;/* +71: 1 Maximum # bytes output per UChar in this codepage */
uint8_tsubChar[UCNV_MAX_SUBCHAR_LEN];/* +72: 4 [note: 4 and 8 byte boundary] */
int8_tsubCharLen;/* +76: 1 */
uint8_thasToUnicodeFallback;/* +77: 1 UBool needs to be changed to UBool to be consistent across platform */
uint8_thasFromUnicodeFallback;/* +78: 1 */
uint8_tunicodeMask;/* +79: 1 bit 0: has supplementary bit 1: has single surrogates */
uint8_tsubChar1;/* +80: 1 single-byte substitution character for IBM MBCS (0 if none) */
uint8_treserved[19];/* +81: 19 to round out the structure */
/* total size: 100 */
}UConverterStaticData;
/*
*DefinestheUConverterSharedDatastruct,
*theimmutable,sharedpartofUConverter.
*/
structUConverterSharedData{
uint32_tstructSize;/* Size of this structure */
uint32_treferenceCounter;/* used to count number of clients, unused for static/immutable SharedData */
constvoid*dataMemory;/* from udata_openChoice() - for cleanup */
constUConverterStaticData*staticData;/* pointer to the static (non changing) data. */
UBoolsharedDataCached;/* TRUE: shared data is in cache, don't destroy on ucnv_close() if 0 ref. FALSE: shared data isn't in the cache, do attempt to clean it up if the ref is 0 */
/** If FALSE, then referenceCounter is not used. Must not change after initialization. */
UBoolisReferenceCounted;
constUConverterImpl*impl;/* vtable-style struct of mostly function pointers */
/*initial values of some members of the mutable part of object */
UConverterSharedData*sharedData;/* Pointer to the shared immutable part of the converter object */
uint32_toptions;/* options flags from UConverterOpen, may contain additional bits */
UBoolsharedDataIsCached;/* TRUE: shared data is in cache, don't destroy on ucnv_close() if 0 ref. FALSE: shared data isn't in the cache, do attempt to clean it up if the ref is 0 */
UBoolisCopyLocal;/* TRUE if UConverter is not owned and not released in ucnv_close() (stack-allocated, safeClone(), etc.) */
UBoolisExtraLocal;/* TRUE if extraInfo is not owned and not released in ucnv_close() (stack-allocated, safeClone(), etc.) */
UBooluseFallback;
int8_ttoULength;/* number of bytes in toUBytes */
uint8_ttoUBytes[UCNV_MAX_CHAR_LEN-1];/* more "toU status"; keeps the bytes of the current character */
uint32_ttoUnicodeStatus;/* Used to internalize stream status information */