Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

ucmp16.h

Go to the documentation of this file.
00001 
00002 /*
00003 **********************************************************************
00004 *   Copyright (C) 1995-1999, International Business Machines
00005 *   Corporation and others.  All Rights Reserved.
00006 **********************************************************************
00007  * @version 1.0 23/10/96
00008  * @author  Helena Shih
00009  * Based on Taligent international support for java
00010  * Modification History : 
00011  *
00012  * 05/07/97     helena      Added isBogus()
00013  * 07/15/98     erm         Synched with Java 1.2 CompactShortArray.java.
00014  * 07/30/98     erm         Added 07/29/98 code review changes.
00015  * 04/21/99     Damiba      Port to C/New API faster ucmp16_get
00016  */
00017 
00018 #ifndef UCMP16_H
00019 #define UCMP16_H
00020 
00021 
00022 #include "umemstrm.h"
00023 #include "unicode/utypes.h"
00024 
00025 /* 32-bits.
00026   Bump this whenever the internal structure changes.
00027 */
00028 #define ICU_UCMP16_VERSION 0x01270000
00029 
00030 /* internal constants*/
00031 #define UCMP16_kMaxUnicode_int 65535
00032 #define UCMP16_kUnicodeCount_int (UCMP16_kMaxUnicode_int + 1)
00033 #define UCMP16_kBlockShift_int 7
00034 #define UCMP16_kBlockCount_int (1 << UCMP16_kBlockShift_int)
00035 #define UCMP16_kBlockBytes_int (UCMP16_kBlockCount_int * sizeof(int16_t))
00036 #define UCMP16_kIndexShift_int (16 - UCMP16_kBlockShift_int)
00037 #define UCMP16_kIndexCount_int (1 << UCMP16_kIndexShift_int)
00038 #define UCMP16_kBlockMask_int (UCMP16_kBlockCount_int - 1)
00039 
00087 typedef struct CompactShortArray {
00088   int32_t fStructSize;
00089   int16_t* fArray;
00090   uint16_t* fIndex;
00091   int32_t* fHashes;
00092   int32_t fCount;
00093   int16_t fDefaultValue;
00094   UBool fCompact;    
00095   UBool fBogus;
00096   UBool fAlias;
00097   int32_t kBlockShift;
00098   int32_t kBlockMask;
00099   UBool fIAmOwned; /* don't free CSA on close */
00100 } CompactShortArray;
00101 
00102 
00103 U_CAPI int32_t U_EXPORT2 ucmp16_getkUnicodeCount(void);
00104 U_CAPI int32_t U_EXPORT2 ucmp16_getkBlockCount(void);
00105 
00110 U_CAPI  CompactShortArray* U_EXPORT2 ucmp16_open(int16_t defaultValue);
00111 U_CAPI void U_EXPORT2 ucmp16_init(CompactShortArray* array, int16_t defaultValue);
00112 U_CAPI void U_EXPORT2 ucmp16_initBogus(CompactShortArray* array);
00113 
00126 U_CAPI  CompactShortArray* U_EXPORT2 ucmp16_openAdopt(uint16_t *indexArray,
00127                                                       int16_t *newValues,
00128                                                       int32_t count,
00129                                                       int16_t defaultValue);
00130 
00131 U_CAPI  CompactShortArray* U_EXPORT2 ucmp16_openAdoptWithBlockShift(uint16_t *indexArray,
00132                                                       int16_t *newValues,
00133                                                       int32_t count,
00134                                                       int16_t defaultValue,
00135                                                       int32_t blockShift);
00136 
00137 U_CAPI  CompactShortArray* U_EXPORT2 ucmp16_openAlias(uint16_t *indexArray,
00138                                                       int16_t *newValues,
00139                                                       int32_t count,
00140                                                       int16_t defaultValue );
00141 
00155 U_CAPI  CompactShortArray* U_EXPORT2 ucmp16_initAdopt(CompactShortArray *this_obj,
00156                                                       uint16_t *indexArray,
00157                                                       int16_t *newValues,
00158                                                       int32_t count,
00159                                                       int16_t defaultValue );
00160 
00161 U_CAPI  CompactShortArray* U_EXPORT2 ucmp16_initAdoptWithBlockShift(CompactShortArray *this_obj,
00162                                                       uint16_t *indexArray,
00163                                                       int16_t *newValues,
00164                                                       int32_t count,
00165                                                       int16_t defaultValue,
00166                                                       int32_t blockShift);
00167 
00168 U_CAPI  CompactShortArray* U_EXPORT2 ucmp16_initAlias(CompactShortArray *this_obj,
00169                                                       uint16_t *indexArray,
00170                                                       int16_t *newValues,
00171                                                       int32_t count,
00172                                                       int16_t defaultValue );
00173 
00174 
00175 U_CAPI  CompactShortArray* U_EXPORT2 ucmp16_initAliasWithBlockShift(CompactShortArray *this_obj,
00176                                                       uint16_t *indexArray,
00177                                                       int16_t *newValues,
00178                                                       int32_t count,
00179                                                       int16_t defaultValue,
00180                                                       int32_t blockShift);
00181 
00182 U_CAPI  void U_EXPORT2 ucmp16_close(CompactShortArray* array);
00187 U_CAPI  UBool U_EXPORT2 ucmp16_isBogus(const CompactShortArray* array);
00188 
00196 #define ucmp16_get(array, index) (array->fArray[(array->fIndex[(index >> array->kBlockShift)] )+ \
00197                            (index & array->kBlockMask)])
00198 
00199 #define ucmp16_getu(array, index) (uint16_t)ucmp16_get(array, index)
00200 
00201 
00208 U_CAPI  void U_EXPORT2 ucmp16_set(CompactShortArray *array,
00209                                   UChar character,
00210                                   int16_t value);
00211 
00212 
00220 U_CAPI  void U_EXPORT2 ucmp16_setRange(CompactShortArray* array,
00221                                        UChar start,
00222                                        UChar end,
00223                                        int16_t value);
00224 
00225 
00232 U_CAPI  void U_EXPORT2 ucmp16_compact(CompactShortArray* array);
00233 
00237 U_CAPI  int16_t U_EXPORT2 ucmp16_getDefaultValue(const CompactShortArray* array);
00238 
00244 U_CAPI  uint32_t U_EXPORT2 ucmp16_getCount(const CompactShortArray* array);
00245 
00251 U_CAPI  const int16_t* U_EXPORT2 ucmp16_getArray(const CompactShortArray* array);
00252 
00258 U_CAPI  const uint16_t* U_EXPORT2 ucmp16_getIndex(const CompactShortArray* array);
00259 
00260 
00262 U_CAPI  uint32_t U_EXPORT2 ucmp16_flattenMem(const CompactShortArray* array, UMemoryStream *MS);
00263 U_CAPI void U_EXPORT2 ucmp16_initFromData(CompactShortArray* array, const uint8_t **source,  UErrorCode *status);
00264 
00265 #endif
00266 
00267 
00268 

Generated at Tue Dec 5 17:55:34 2000 for ICU by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000