Home | History | Annotate | Download | only in makeconv

Lines Matching full: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);
103 uprv_free(extData);
117 CnvExtData *extData=(CnvExtData *)cnvData;
128 length=(int32_t)uprv_strlen(extData->ucm->baseName)+1;
131 extData->ucm->baseName[length++]=0;
143 udata_writeBlock(pData, extData->ucm->baseName, length);
153 indexes[UCNV_EXT_TO_U_LENGTH]=length=utm_countItems(extData->toUTable);
157 indexes[UCNV_EXT_TO_U_UCHARS_LENGTH]=length=utm_countItems(extData->toUUChars);
161 length=utm_countItems(extData->fromUTableUChars);
166 *((UChar *)utm_alloc(extData->fromUTableUChars))=0;
167 *((uint32_t *)utm_alloc(extData->fromUTableValues))=0;
177 length=utm_countItems(extData->fromUBytes);
182 *((uint8_t *)utm_alloc(extData->fromUBytes))=0;
189 indexes[UCNV_EXT_FROM_U_STAGE_1_LENGTH]=length=extData->stage1Top;
190 indexes[UCNV_EXT_FROM_U_STAGE_12_LENGTH]=length+=extData->stage2Top;
194 length=extData->stage3Top;
199 extData->stage3[extData->stage3Top++]=0;
206 indexes[UCNV_EXT_FROM_U_STAGE_3B_LENGTH]=length=extData->stage3bTop;
213 (extData->maxInBytes<<16)|
214 (extData->maxOutBytes<<8)|
215 extData->maxBytesPerUChar;
217 (extData->maxInUChars<<16)|
218 (extData->maxOutUChars<<8)|
219 extData->maxUCharsPerByte;
221 indexes[UCNV_EXT_FLAGS]=extData->ucm->ext->unicodeMask;
225 udata_writeBlock(pData, utm_getStart(extData->toUTable), indexes[UCNV_EXT_TO_U_LENGTH]*4);
226 udata_writeBlock(pData, utm_getStart(extData->toUUChars), indexes[UCNV_EXT_TO_U_UCHARS_LENGTH]*2);
228 udata_writeBlock(pData, utm_getStart(extData->fromUTableUChars), indexes[UCNV_EXT_FROM_U_LENGTH]*2);
229 udata_writeBlock(pData, utm_getStart(extData->fromUTableValues), indexes[UCNV_EXT_FROM_U_LENGTH]*4);
230 udata_writeBlock(pData, utm_getStart(extData->fromUBytes), indexes[UCNV_EXT_FROM_U_BYTES_LENGTH]);
232 udata_writeBlock(pData, extData->stage1, extData->stage1Top*2);
233 udata_writeBlock(pData, extData->stage2, extData->stage2Top*2);
234 udata_writeBlock(pData, extData->stage3, extData->stage3Top*2);
235 udata_writeBlock(pData, extData->stage3b, extData->stage3bTop*4);
241 length=extData->stage1Top;
245 if(extData->stage1[i]!=length) {
246 printf("stage1[%04x]=%04x\n", i, extData->stage1[i]);
251 length=extData->stage2Top;
255 if(extData->stage2[i]!=0) {
256 printf("stage12[%04x]=%04x\n", j, extData->stage2[i]);
260 length=extData->stage3Top;
264 if(extData->stage3[i]!=0) {
265 printf("stage3[%04x]=%04x\n", i, extData->stage3[i]);
269 length=extData->stage3bTop;
273 if(extData->stage3b[i]!=0) {
274 printf("stage3b[%04x]=%08x\n", i, extData->stage3b[i]);
329 getToUnicodeValue(CnvExtData *extData, UCMTable *table, UCMapping *m) {
354 ((uint32_t)utm_countItems(extData->toUUChars));
355 u=utm_allocN(extData->toUUChars, u16Length);
369 if(m->bLen>extData->maxInBytes) {
370 extData->maxInBytes=m->bLen;
372 if(u16Length>extData->maxOutUChars) {
373 extData->maxOutUChars=u16Length;
377 if(ratio>extData->maxUCharsPerByte) {
378 extData->maxUCharsPerByte=ratio;
412 generateToUTable(CnvExtData *extData, UCMTable *table,
466 section=(uint32_t *)utm_allocN(extData->toUTable, 1+count);
525 defaultValue=getToUnicodeValue(extData, table, m);
533 section[j]|=(uint32_t)utm_countItems(extData->toUTable);
536 if(!generateToUTable(extData, table, subStart, subLimit, unitIndex+1, defaultValue)) {
550 makeToUTable(CnvExtData *extData, UCMTable *table) {
555 extData->toUTable=utm_open("cnv extension toUTable", 0x10000, UCNV_EXT_TO_U_MIN_CODE_POINT, 4);
556 extData->toUUChars=utm_open("cnv extension toUUChars", 0x10000, UCNV_EXT_TO_U_INDEX_MASK+1, 2);
558 return generateToUTable(extData, table, 0, toUCount, 0, 0);
636 getFromUBytesValue(CnvExtData *extData, UCMTable *table, UCMapping *m) {
667 value=(uint32_t)utm_countItems(extData->fromUBytes);
668 resultBytes=utm_allocN(extData->fromUBytes, m->bLen);
685 if(u16Length>extData->maxInUChars) {
686 extData->maxInUChars=u16Length;
688 if(m->bLen>extData->maxOutBytes) {
689 extData->maxOutBytes=m->bLen;
693 if(ratio>extData->maxBytesPerUChar) {
694 extData->maxBytesPerUChar=ratio;
709 generateFromUTable(CnvExtData *extData, UCMTable *table,
748 sectionUChars=(UChar *)utm_allocN(extData->fromUTableUChars, 1+count);
749 sectionValues=(uint32_t *)utm_allocN(extData->fromUTableValues, 1+count);
796 defaultValue=getFromUBytesValue(extData, table, m);
804 sectionValues[j]=(uint32_t)utm_countItems(extData->fromUTableValues);
807 if(!generateFromUTable(extData, table, subStart, subLimit, unitIndex+1, defaultValue)) {
821 addFromUTrieEntry(CnvExtData *extData, UChar32 c, uint32_t value) {
834 if(i1>=extData->stage1Top) {
835 extData->stage1Top=i1+1;
840 if(extData->stage1[i1]==0) {
842 newBlock=extData->stage2Top;
844 while(min<newBlock && extData->stage2[newBlock-1]==0) {
848 extData->stage1[i1]=(uint16_t)newBlock;
849 extData->stage2Top=newBlock+MBCS_STAGE_2_BLOCK_SIZE;
850 if(extData->stage2Top>LENGTHOF(extData->stage2)) {
856 i2=extData->stage1[i1]+nextOffset;
859 if(extData->stage2[i2]==0) {
861 newBlock=extData->stage3Top;
863 while(min<newBlock && extData->stage3[newBlock-1]==0) {
869 extData->stage2[i2]=(uint16_t)(newBlock>>UCNV_EXT_STAGE_2_LEFT_SHIFT);
871 extData->stage3Top=newBlock+MBCS_STAGE_3_BLOCK_SIZE;
872 if(extData->stage3Top>LENGTHOF(extData->stage3)) {
878 i3=((int32_t)extData->stage2[i2]<<UCNV_EXT_STAGE_2_LEFT_SHIFT)+nextOffset;
880 * assume extData->stage3[i3]==0 because we get
886 extData->stage3[i3]=1;
899 min<i3 && extData->stage3[min]==1;
904 if(extData->stage3Sub1Block!=0) {
906 extData->stage2[i2]=extData->stage3Sub1Block;
907 extData->stage3Top-=MBCS_STAGE_3_BLOCK_SIZE;
908 uprv_memset(extData->stage3+extData->stage3Top, 0, MBCS_STAGE_3_BLOCK_SIZE*2);
911 extData->stage3Sub1Block=extData->stage2[i2];
916 if((i3b=extData->stage3bTop++)>=LENGTHOF(extData->stage3b)) {
922 extData->stage3[i3]=(uint16_t)i3b;
923 extData->stage3b[i3b]=value;
928 generateFromUTrie(CnvExtData *extData, UCMTable *table, int32_t mapLength) {
984 value=getFromUBytesValue(extData, table, m);
989 addFromUTrieEntry(extData, c, value);
992 addFromUTrieEntry(extData, c, (uint32_t)utm_countItems(extData->fromUTableValues));
995 if(!generateFromUTable(extData, table, subStart, subLimit, 2, value)) {
1009 makeFromUTable(CnvExtData *extData, UCMTable *table) {
1015 extData->fromUTableUChars=utm_open("cnv extension fromUTableUChars", 0x10000, UCNV_EXT_FROM_U_DATA_MASK+1, 2);
1016 extData->fromUTableValues=utm_open("cnv extension fromUTableValues", 0x10000, UCNV_EXT_FROM_U_DATA_MASK+1, 4);
1017 extData->fromUBytes=utm_open("cnv extension fromUBytes", 0x10000, UCNV_EXT_FROM_U_DATA_MASK+1, 1);
1020 extData->stage2Top=MBCS_STAGE_2_FIRST_ASSIGNED;
1021 extData->stage3Top=MBCS_STAGE_3_FIRST_ASSIGNED;
1028 extData->stage3b[1]=UCNV_EXT_FROM_U_SUBCHAR1;
1029 extData->stage3bTop=2;
1032 utm_alloc(extData->fromUTableUChars);
1033 utm_alloc(extData->fromUTableValues);
1035 if(!generateFromUTrie(extData, table, fromUCount)) {
1043 stage1=extData->stage1;
1044 stage1Top=extData->stage1Top;
1056 CnvExtData *extData;
1065 extData=(CnvExtData *)cnvData;
1075 makeToUTable(extData, table) &&
1076 makeFromUTable(extData, table);