static void alias_write_java(struct SResource *res,UErrorCode *status) { static const char str[] = "new ICUListResourceBundle.Alias("; write_tabs(out); T_FileStream_write(out,str,uprv_strlen(str)); /*str_write_java(res->u.fString.fChars,res->u.fString.fLength,FALSE,status);*/ /*if(*res->u.fString.fChars == RES_PATH_SEPARATOR) {*/ /* there is a path included locale = u_strchr(res->u.fString.fChars +1, RES_PATH_SEPARATOR); *locale = 0; locale++; T_FileStream_write(out,"\"/",2); T_FileStream_write(out,apName,(int32_t)uprv_strlen(apName)); T_FileStream_write(out,"/",1); T_FileStream_write(out,abName,(int32_t)uprv_strlen(abName)); T_FileStream_write(out,"/\"+",3); str_write_java(locale,res->u.fString.fLength-(locale-res->u.fString.fChars),FALSE,status); } else { str_write_java(res->u.fString.fChars,res->u.fString.fLength,FALSE,status); }*/ str_write_java(res->u.fString.fChars,res->u.fString.fLength,FALSE,status); T_FileStream_write(out,"),\n",3); }
/* Writing Functions */ static void string_write_java(struct SResource *res,UErrorCode *status) { str_write_java(res->u.fString.fChars,res->u.fString.fLength,TRUE,status); if(res->fKey > 0 && uprv_strcmp(srBundle->fKeys+res->fKey,"Rule")==0) { UChar* buf = (UChar*) uprv_malloc(sizeof(UChar)*res->u.fString.fLength); uprv_memcpy(buf,res->u.fString.fChars,res->u.fString.fLength); uprv_free(buf); } }
/* Writing Functions */ static void string_write_java(struct SResource *res,UErrorCode *status) { if(uprv_strcmp(srBundle->fKeys+res->fKey,"%%UCARULES")==0 ){ char fileName[1024] ={0}; const char* file = "UCARules.utf8"; FileStream* datFile = NULL; const char* type = "new ICUListResourceBundle.ResourceString("; char* dest = (char*) uprv_malloc( 8 * res->u.fString.fLength); int32_t len = 0; if(outDir){ uprv_strcat(fileName,outDir); if(outDir[uprv_strlen(outDir)-1]!=U_FILE_SEP_CHAR){ uprv_strcat(fileName,U_FILE_SEP_STRING); } } uprv_strcat(fileName,file);/* UCARULES.utf8 UTF-8 file */ write_tabs(out); T_FileStream_write(out, type, (int32_t)uprv_strlen(type)); T_FileStream_write(out, "\"", 1); T_FileStream_write(out, file, (int32_t)uprv_strlen(file)); T_FileStream_write(out, "\")\n", 3); datFile=T_FileStream_open(fileName,"w"); if(!dest){ *status=U_MEMORY_ALLOCATION_ERROR; } u_strToUTF8(dest,8*res->u.fString.fLength,&len,res->u.fString.fChars,res->u.fString.fLength,status); if(U_FAILURE(*status)){ T_FileStream_close(datFile); uprv_free(dest); return; } T_FileStream_write(datFile,dest,len); T_FileStream_close(datFile); uprv_free(dest); }else{ str_write_java(res->u.fString.fChars,res->u.fString.fLength,TRUE,status); if(uprv_strcmp(srBundle->fKeys+res->fKey,"Rule")==0){ UChar* buf = (UChar*) uprv_malloc(sizeof(UChar)*res->u.fString.fLength); uprv_memcpy(buf,res->u.fString.fChars,res->u.fString.fLength); uprv_free(buf); } } }
/* Writing Functions */ static void string_write_java(struct SResource *res,UErrorCode *status) { char resKeyBuffer[8]; const char *resname = res_getKeyString(srBundle, res, resKeyBuffer); str_write_java(res->u.fString.fChars,res->u.fString.fLength,TRUE,status); if(resname != NULL && uprv_strcmp(resname,"Rule")==0) { UChar* buf = (UChar*) uprv_malloc(sizeof(UChar)*res->u.fString.fLength); uprv_memcpy(buf,res->u.fString.fChars,res->u.fString.fLength); uprv_free(buf); } }
/* Writing Functions */ static void string_write_java(const StringResource *res,UErrorCode *status) { (void)res->getKeyString(srBundle); str_write_java(res->getBuffer(), res->length(), TRUE, status); }
static void bin_write_java( struct SResource *res, UErrorCode *status) { const char* type = "new ICUListResourceBundle.CompressedBinary("; const char* ext; int32_t srcLen=res->u.fBinaryValue.fLength; if(srcLen>0 ){ uint16_t* target=NULL; uint16_t* saveTarget = NULL; int32_t tgtLen = 0; if(uprv_strcmp(srBundle->fKeys+res->fKey,"%%CollationBin")==0 || uprv_strcmp(srBundle->fKeys+res->fKey,"BreakDictionaryData")==0){ char fileName[1024] ={0}; char fn[1024] = {0}; FileStream* datFile = NULL; if(uprv_strcmp(srBundle->fKeys+res->fKey,"BreakDictionaryData")==0){ uprv_strcat(fileName,"BreakDictionaryData"); ext = ".brk"; }else{ uprv_strcat(fileName,"CollationElements"); ext=".col"; } if(uprv_strcmp(srBundle->fLocale,"root")!=0){ uprv_strcat(fileName,"_"); uprv_strcat(fileName,srBundle->fLocale); } uprv_strcat(fileName,ext); if(outDir ){ uprv_strcat(fn,outDir); if(outDir[uprv_strlen(outDir)-1]!=U_FILE_SEP_CHAR){ uprv_strcat(fn,U_FILE_SEP_STRING); } } uprv_strcat(fn,fileName); type = "new ICUListResourceBundle.ResourceBinary("; write_tabs(out); T_FileStream_write(out, type, (int32_t)uprv_strlen(type)); T_FileStream_write(out, "\"", 1); T_FileStream_write(out, fileName, (int32_t)uprv_strlen(fileName)); T_FileStream_write(out, "\"),\n", 4); datFile=T_FileStream_open(fn,"w"); T_FileStream_write(datFile, res->u.fBinaryValue.fData, res->u.fBinaryValue.fLength); T_FileStream_close(datFile); }else{ srcLen = res->u.fBinaryValue.fLength; tgtLen = srcLen * 2; target = (uint16_t*)malloc(sizeof(uint16_t) * tgtLen); saveTarget = target; if(target){ tgtLen = byteArrayToRLEString(res->u.fBinaryValue.fData, srcLen,target, tgtLen,status); if(U_FAILURE(*status)){ printf("Could not encode got error : %s \n", u_errorName(*status)); return; } #if DEBUG /***************** Test Roundtripping *********************/ { int32_t myTargetLen = rleStringToByteArray(target,tgtLen,NULL,0,status); uint8_t* myTarget = (uint8_t*) malloc(sizeof(uint8_t) * myTargetLen); /* test for NULL */ if(myTarget == NULL) { *status = U_MEMORY_ALLOCATION_ERROR; return; } int i=0; int32_t retVal=0; *status = U_ZERO_ERROR; retVal=rleStringToByteArray(target,tgtLen,myTarget,myTargetLen,status); if(U_SUCCESS(*status)){ for(i=0; i< srcLen;i++){ if(res->u.fBinaryValue.fData[i]!= myTarget[i]){ printf("the encoded string cannot be decoded Expected : 0x%02X Got : %: 0x%02X at %i\n",res->u.fBinaryValue.fData[i],myTarget[i], i); } } }else{ printf("Could not decode got error : %s \n", u_errorName(*status)); } free(myTarget); } #endif }else{ *status = U_MEMORY_ALLOCATION_ERROR; return; } write_tabs(out); T_FileStream_write(out, type, (int32_t)uprv_strlen(type)); T_FileStream_write(out, "\n", 1); tabCount++; write_tabs(out); str_write_java(target, tgtLen,FALSE, status); tabCount--; T_FileStream_write(out, "),\n", 3); free(target); } }else{ write_tabs(out); T_FileStream_write(out,type,uprv_strlen(type)); T_FileStream_write(out,"null),\n",7); } }