Home | History | Annotate | Download | only in makeconv

Lines Matching refs:extData

76     CnvExtData *extData;
78 extData=(CnvExtData *)uprv_malloc(sizeof(CnvExtData));
79 if(extData==NULL) {
83 uprv_memset(extData, 0, sizeof(CnvExtData));
85 extData->ucm=ucm; /* aliased, not owned */
87 extData->newConverter.close=CnvExtClose;
88 extData->newConverter.isValid=CnvExtIsValid;
89 extData->newConverter.addTable=CnvExtAddTable;
90 extData->newConverter.write=CnvExtWrite;
91 return &extData->newConverter;
96 CnvExtData *extData=(CnvExtData *)cnvData;
97 if(extData!=NULL) {
98 utm_close(extData->toUTable);
99 utm_close(extData->toUUChars);
100 utm_close(extData->fromUTableUChars);
101 utm_close(extData->fromUTableValues);
102 utm_close(extData->fromUBytes);
116 CnvExtData *extData=(CnvExtData *)cnvData;
127 length=(int32_t)uprv_strlen(extData->ucm->baseName)+1;
130 extData->ucm->baseName[length++]=0;
142 udata_writeBlock(pData, extData->ucm->baseName, length);
152 indexes[UCNV_EXT_TO_U_LENGTH]=length=utm_countItems(extData->toUTable);
156 indexes[UCNV_EXT_TO_U_UCHARS_LENGTH]=length=utm_countItems(extData->toUUChars);
160 length=utm_countItems(extData->fromUTableUChars);
165 *((UChar *)utm_alloc(extData->fromUTableUChars))=0;
166 *((uint32_t *)utm_alloc(extData->fromUTableValues))=0;
176 length=utm_countItems(extData->fromUBytes);
181 *((uint8_t *)utm_alloc(extData->fromUBytes))=0;
188 indexes[UCNV_EXT_FROM_U_STAGE_1_LENGTH]=length=extData->stage1Top;
189 indexes[UCNV_EXT_FROM_U_STAGE_12_LENGTH]=length+=extData->stage2Top;
193 length=extData->stage3Top;
198 extData->stage3[extData->stage3Top++]=0;
205 indexes[UCNV_EXT_FROM_U_STAGE_3B_LENGTH]=length=extData->stage3bTop;
212 (extData->maxInBytes<<16)|
213 (extData->maxOutBytes<<8)|
214 extData->maxBytesPerUChar;
216 (extData->maxInUChars<<16)|
217 (extData->maxOutUChars<<8)|
218 extData->maxUCharsPerByte;
220 indexes[UCNV_EXT_FLAGS]=extData->ucm->ext->unicodeMask;
224 udata_writeBlock(pData, utm_getStart(extData->toUTable), indexes[UCNV_EXT_TO_U_LENGTH]*4);
225 udata_writeBlock(pData, utm_getStart(extData->toUUChars), indexes[UCNV_EXT_TO_U_UCHARS_LENGTH]*2);
227 udata_writeBlock(pData, utm_getStart(extData->fromUTableUChars), indexes[UCNV_EXT_FROM_U_LENGTH]*2);
228 udata_writeBlock(pData, utm_getStart(extData->fromUTableValues), indexes[UCNV_EXT_FROM_U_LENGTH]*4);
229 udata_writeBlock(pData, utm_getStart(extData->fromUBytes), indexes[UCNV_EXT_FROM_U_BYTES_LENGTH]);
231 udata_writeBlock(pData, extData->stage1, extData->stage1Top*2);
232 udata_writeBlock(pData, extData->stage2, extData->stage2Top*2);
233 udata_writeBlock(pData, extData->stage3, extData->stage3Top*2);
234 udata_writeBlock(pData, extData->stage3b, extData->stage3bTop*4);
240 length=extData->stage1Top;
244 if(extData->stage1[i]!=length) {
245 printf("stage1[%04x]=%04x\n", i, extData->stage1[i]);
250 length=extData->stage2Top;
254 if(extData->stage2[i]!=0) {
255 printf("stage12[%04x]=%04x\n", j, extData->stage2[i]);
259 length=extData->stage3Top;
263 if(extData->stage3[i]!=0) {
264 printf("stage3[%04x]=%04x\n", i, extData->stage3[i]);
268 length=extData->stage3bTop;
272 if(extData->stage3b[i]!=0) {
273 printf("stage3b[%04x]=%08x\n", i, extData->stage3b[i]);
328 getToUnicodeValue(CnvExtData *extData, UCMTable *table, UCMapping *m) {
353 ((uint32_t)utm_countItems(extData->toUUChars));
354 u=utm_allocN(extData->toUUChars, u16Length);
368 if(m->bLen>extData->maxInBytes) {
369 extData->maxInBytes=m->bLen;
371 if(u16Length>extData->maxOutUChars) {
372 extData->maxOutUChars=u16Length;
376 if(ratio>extData->maxUCharsPerByte) {
377 extData->maxUCharsPerByte=ratio;
411 generateToUTable(CnvExtData *extData, UCMTable *table,
465 section=(uint32_t *)utm_allocN(extData->toUTable, 1+count);
524 defaultValue=getToUnicodeValue(extData, table, m);
532 section[j]|=(uint32_t)utm_countItems(extData->toUTable);
535 if(!generateToUTable(extData, table, subStart, subLimit, unitIndex+1, defaultValue)) {
549 makeToUTable(CnvExtData *extData, UCMTable *table) {
554 extData->toUTable=utm_open("cnv extension toUTable", 0x10000, UCNV_EXT_TO_U_MIN_CODE_POINT, 4);
555 extData->toUUChars=utm_open("cnv extension toUUChars", 0x10000, UCNV_EXT_TO_U_INDEX_MASK+1, 2);
557 return generateToUTable(extData, table, 0, toUCount, 0, 0);
635 getFromUBytesValue(CnvExtData *extData, UCMTable *table, UCMapping *m) {
666 value=(uint32_t)utm_countItems(extData->fromUBytes);
667 resultBytes=utm_allocN(extData->fromUBytes, m->bLen);
684 if(u16Length>extData->maxInUChars) {
685 extData->maxInUChars=u16Length;
687 if(m->bLen>extData->maxOutBytes) {
688 extData->maxOutBytes=m->bLen;
692 if(ratio>extData->maxBytesPerUChar) {
693 extData->maxBytesPerUChar=ratio;
708 generateFromUTable(CnvExtData *extData, UCMTable *table,
747 sectionUChars=(UChar *)utm_allocN(extData->fromUTableUChars, 1+count);
748 sectionValues=(uint32_t *)utm_allocN(extData->fromUTableValues, 1+count);
795 defaultValue=getFromUBytesValue(extData, table, m);
803 sectionValues[j]=(uint32_t)utm_countItems(extData->fromUTableValues);
806 if(!generateFromUTable(extData, table, subStart, subLimit, unitIndex+1, defaultValue)) {
820 addFromUTrieEntry(CnvExtData *extData, UChar32 c, uint32_t value) {
833 if(i1>=extData->stage1Top) {
834 extData->stage1Top=i1+1;
839 if(extData->stage1[i1]==0) {
841 newBlock=extData->stage2Top;
843 while(min<newBlock && extData->stage2[newBlock-1]==0) {
847 extData->stage1[i1]=(uint16_t)newBlock;
848 extData->stage2Top=newBlock+MBCS_STAGE_2_BLOCK_SIZE;
849 if(extData->stage2Top>LENGTHOF(extData->stage2)) {
855 i2=extData->stage1[i1]+nextOffset;
858 if(extData->stage2[i2]==0) {
860 newBlock=extData->stage3Top;
862 while(min<newBlock && extData->stage3[newBlock-1]==0) {
868 extData->stage2[i2]=(uint16_t)(newBlock>>UCNV_EXT_STAGE_2_LEFT_SHIFT);
870 extData->stage3Top=newBlock+MBCS_STAGE_3_BLOCK_SIZE;
871 if(extData->stage3Top>LENGTHOF(extData->stage3)) {
877 i3=((int32_t)extData->stage2[i2]<<UCNV_EXT_STAGE_2_LEFT_SHIFT)+nextOffset;
879 * assume extData->stage3[i3]==0 because we get
885 extData->stage3[i3]=1;
898 min<i3 && extData->stage3[min]==1;
903 if(extData->stage3Sub1Block!=0) {
905 extData->stage2[i2]=extData->stage3Sub1Block;
906 extData->stage3Top-=MBCS_STAGE_3_BLOCK_SIZE;
907 uprv_memset(extData->stage3+extData->stage3Top, 0, MBCS_STAGE_3_BLOCK_SIZE*2);
910 extData->stage3Sub1Block=extData->stage2[i2];
915 if((i3b=extData->stage3bTop++)>=LENGTHOF(extData->stage3b)) {
921 extData->stage3[i3]=(uint16_t)i3b;
922 extData->stage3b[i3b]=value;
927 generateFromUTrie(CnvExtData *extData, UCMTable *table, int32_t mapLength) {
983 value=getFromUBytesValue(extData, table, m);
988 addFromUTrieEntry(extData, c, value);
991 addFromUTrieEntry(extData, c, (uint32_t)utm_countItems(extData->fromUTableValues));
994 if(!generateFromUTable(extData, table, subStart, subLimit, 2, value)) {
1008 makeFromUTable(CnvExtData *extData, UCMTable *table) {
1014 extData->fromUTableUChars=utm_open("cnv extension fromUTableUChars", 0x10000, UCNV_EXT_FROM_U_DATA_MASK+1, 2);
1015 extData->fromUTableValues=utm_open("cnv extension fromUTableValues", 0x10000, UCNV_EXT_FROM_U_DATA_MASK+1, 4);
1016 extData
1019 extData->stage2Top=MBCS_STAGE_2_FIRST_ASSIGNED;
1020 extData->stage3Top=MBCS_STAGE_3_FIRST_ASSIGNED;
1027 extData->stage3b[1]=UCNV_EXT_FROM_U_SUBCHAR1;
1028 extData->stage3bTop=2;
1031 utm_alloc(extData->fromUTableUChars);
1032 utm_alloc(extData->fromUTableValues);
1034 if(!generateFromUTrie(extData, table, fromUCount)) {
1042 stage1=extData->stage1;
1043 stage1Top=extData->stage1Top;
1055 CnvExtData *extData;
1064 extData=(CnvExtData *)cnvData;
1074 makeToUTable(extData, table) &&
1075 makeFromUTable(extData, table);