Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: source/tools/genrb/wrtjava.c

Issue 1621843002: ICU 56 update step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@561
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/tools/genrb/reslist.cpp ('k') | source/tools/genrb/wrtjava.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/tools/genrb/wrtjava.c
diff --git a/source/tools/genrb/wrtjava.c b/source/tools/genrb/wrtjava.c
deleted file mode 100644
index 6239569d85e8939ccd8c6fe7642220108051c5e2..0000000000000000000000000000000000000000
--- a/source/tools/genrb/wrtjava.c
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
-*******************************************************************************
-*
-* Copyright (C) 2000-2012, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-*
-* File wrtjava.c
-*
-* Modification History:
-*
-* Date Name Description
-* 01/11/02 Ram Creation.
-* 02/12/08 Spieth Fix errant 'new Object[][]{' insertion
-* 02/19/08 Spieth Removed ICUListResourceBundle dependancy
-*******************************************************************************
-*/
-
-#include <assert.h>
-#include "reslist.h"
-#include "unewdata.h"
-#include "unicode/ures.h"
-#include "errmsg.h"
-#include "filestrm.h"
-#include "cstring.h"
-#include "unicode/ucnv.h"
-#include "genrb.h"
-#include "rle.h"
-#include "uhash.h"
-#include "uresimp.h"
-#include "unicode/ustring.h"
-
-void res_write_java(struct SResource *res,UErrorCode *status);
-
-
-static const char copyRight[] =
- "/* \n"
- " *******************************************************************************\n"
- " *\n"
- " * Copyright (C) International Business Machines\n"
- " * Corporation and others. All Rights Reserved.\n"
- " *\n"
- " *******************************************************************************\n"
- " * $" "Source: $ \n"
- " * $" "Date: $ \n"
- " * $" "Revision: $ \n"
- " *******************************************************************************\n"
- " */\n\n";
-static const char warningMsg[] =
- "/*********************************************************************\n"
- "######################################################################\n"
- "\n"
- " WARNING: This file is generated by genrb Version " GENRB_VERSION ".\n"
- " If you edit this file, please make sure that, the source\n"
- " of this file (XXXX.txt in LocaleElements_XXXX.java)\n"
- " is also edited.\n"
- "######################################################################\n"
- " *********************************************************************\n"
- " */\n\n";
-static const char* openBrace="{\n";
-static const char* closeClass=" };\n"
- "}\n";
-
-static const char* javaClass = "import java.util.ListResourceBundle;\n\n"
- "public class ";
-
-static const char* javaClass1= " extends ListResourceBundle {\n\n"
- " /**\n"
- " * Overrides ListResourceBundle \n"
- " */\n"
- " public final Object[][] getContents() { \n"
- " return contents;\n"
- " }\n\n"
- " private static Object[][] contents = {\n";
-/*static const char* javaClassICU= " extends ListResourceBundle {\n\n"
- " public %s () {\n"
- " super.contents = data;\n"
- " }\n"
- " static final Object[][] data = new Object[][] { \n";*/
-static int tabCount = 3;
-
-static FileStream* out=NULL;
-static struct SRBRoot* srBundle ;
-/*static const char* outDir = NULL;*/
-
-static const char* bName=NULL;
-static const char* pName=NULL;
-
-static void write_tabs(FileStream* os){
- int i=0;
- for(;i<=tabCount;i++){
- T_FileStream_write(os," ",4);
- }
-}
-
-#define ZERO 0x30
-
-static const char* enc ="";
-static UConverter* conv = NULL;
-
-static int32_t
-uCharsToChars( char* target,int32_t targetLen, UChar* source, int32_t sourceLen,UErrorCode* status){
- int i=0, j=0;
- char str[30]={'\0'};
- while(i<sourceLen){
- if (source[i] == '\n') {
- if (j + 2 < targetLen) {
- uprv_strcat(target, "\\n");
- }
- j += 2;
- }else if(source[i]==0x0D){
- if(j+2<targetLen){
- uprv_strcat(target,"\\f");
- }
- j+=2;
- }else if(source[i] == '"'){
- if(source[i-1]=='\''){
- if(j+2<targetLen){
- uprv_strcat(target,"\\");
- target[j+1]= (char)source[i];
- }
- j+=2;
- }else if(source[i-1]!='\\'){
-
- if(j+2<targetLen){
- uprv_strcat(target,"\\");
- target[j+1]= (char)source[i];
- }
- j+=2;
- }else if(source[i-1]=='\\'){
- target[j++]= (char)source[i];
- }
- }else if(source[i]=='\\'){
- if(i+1<sourceLen){
- switch(source[i+1]){
- case ',':
- case '!':
- case '?':
- case '#':
- case '.':
- case '%':
- case '&':
- case ':':
- case ';':
- if(j+2<targetLen){
- uprv_strcat(target,"\\\\");
- }
- j+=2;
- break;
- case '"':
- case '\'':
- if(j+3<targetLen){
- uprv_strcat(target,"\\\\\\");
- }
- j+=3;
- break;
- default :
- if(j<targetLen){
- target[j]=(char)source[i];
- }
- j++;
- break;
- }
- }else{
- if(j<targetLen){
- uprv_strcat(target,"\\\\");
- }
- j+=2;
- }
- }else if(source[i]>=0x20 && source[i]<0x7F/*ASCII*/){
- if(j<targetLen){
- target[j] = (char) source[i];
- }
- j++;
- }else{
- if(*enc =='\0' || source[i]==0x0000){
- uprv_strcpy(str,"\\u");
- itostr(str+2,source[i],16,4);
- if(j+6<targetLen){
- uprv_strcat(target,str);
- }
- j+=6;
- }else{
- char dest[30] = {0};
- int retVal=ucnv_fromUChars(conv,dest,30,source+i,1,status);
- if(U_FAILURE(*status)){
- return 0;
- }
- if(j+retVal<targetLen){
- uprv_strcat(target,dest);
- }
- j+=retVal;
- }
- }
- i++;
- }
- return j;
-}
-
-
-static uint32_t
-strrch(const char* source,uint32_t sourceLen,char find){
- const char* tSourceEnd =source + (sourceLen-1);
- while(tSourceEnd>= source){
- if(*tSourceEnd==find){
- return (uint32_t)(tSourceEnd-source);
- }
- tSourceEnd--;
- }
- return (uint32_t)(tSourceEnd-source);
-}
-
-static int32_t getColumnCount(int32_t len){
- int32_t columnCount = 80;
- int32_t maxLines = 3000;
- int32_t adjustedLen = len*5; /* assume that every codepoint is represented in \uXXXX format*/
- /*
- * calculate the number of lines that
- * may be required if column count is 80
- */
- if (maxLines < (adjustedLen / columnCount) ){
- columnCount = adjustedLen / maxLines;
- }
- return columnCount;
-}
-static void
-str_write_java( uint16_t* src, int32_t srcLen, UBool printEndLine, UErrorCode *status){
-
- uint32_t length = srcLen*8;
- uint32_t bufLen = 0;
- uint32_t columnCount;
- char* buf = (char*) malloc(sizeof(char)*length);
-
- if(buf == NULL) {
- *status = U_MEMORY_ALLOCATION_ERROR;
- return;
- }
-
- columnCount = getColumnCount(srcLen);
- memset(buf,0,length);
-
- bufLen = uCharsToChars(buf,length,src,srcLen,status);
-
- if(printEndLine)
- write_tabs(out);
-
- if(U_FAILURE(*status)){
- uprv_free(buf);
- return;
- }
-
- if(bufLen+(tabCount*4) > columnCount ){
- uint32_t len = 0;
- char* current = buf;
- uint32_t add;
- while(len < bufLen){
- add = columnCount-(tabCount*4)-5/* for ", +\n */;
- current = buf +len;
- if (add < (bufLen-len)) {
- uint32_t idx = strrch(current,add,'\\');
- if (idx > add) {
- idx = add;
- } else {
- int32_t num =idx-1;
- uint32_t seqLen;
- while(num>0){
- if(current[num]=='\\'){
- num--;
- }else{
- break;
- }
- }
- if ((idx-num)%2==0) {
- idx--;
- }
- seqLen = (current[idx+1]=='u') ? 6 : 2;
- if ((add-idx) < seqLen) {
- add = idx + seqLen;
- }
- }
- }
- T_FileStream_write(out,"\"",1);
- if(len+add<bufLen){
- T_FileStream_write(out,current,add);
- T_FileStream_write(out,"\" +\n",4);
- write_tabs(out);
- }else{
- T_FileStream_write(out,current,bufLen-len);
- }
- len+=add;
- }
- }else{
- T_FileStream_write(out,"\"",1);
- T_FileStream_write(out, buf,bufLen);
- }
- if(printEndLine){
- T_FileStream_write(out,"\",\n",3);
- }else{
- T_FileStream_write(out,"\"",1);
- }
- 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);
- }
-
-}
-
-static void
-array_write_java( struct SResource *res, UErrorCode *status) {
-
- uint32_t i = 0;
- const char* arr ="new String[] { \n";
- struct SResource *current = NULL;
- UBool allStrings = TRUE;
-
- if (U_FAILURE(*status)) {
- return;
- }
-
- if (res->u.fArray.fCount > 0) {
-
- current = res->u.fArray.fFirst;
- i = 0;
- while(current != NULL){
- if(current->fType!=URES_STRING){
- allStrings = FALSE;
- break;
- }
- current= current->fNext;
- }
-
- current = res->u.fArray.fFirst;
- if(allStrings==FALSE){
- const char* object = "new Object[]{\n";
- write_tabs(out);
- T_FileStream_write(out, object, (int32_t)uprv_strlen(object));
- tabCount++;
- }else{
- write_tabs(out);
- T_FileStream_write(out, arr, (int32_t)uprv_strlen(arr));
- tabCount++;
- }
- while (current != NULL) {
- /*if(current->fType==URES_STRING){
- write_tabs(out);
- }*/
- res_write_java(current, status);
- if(U_FAILURE(*status)){
- return;
- }
- i++;
- current = current->fNext;
- }
- T_FileStream_write(out,"\n",1);
-
- tabCount--;
- write_tabs(out);
- T_FileStream_write(out,"},\n",3);
-
- } else {
- write_tabs(out);
- T_FileStream_write(out,arr,(int32_t)uprv_strlen(arr));
- write_tabs(out);
- T_FileStream_write(out,"},\n",3);
- }
-}
-
-static void
-intvector_write_java( struct SResource *res, UErrorCode *status) {
- uint32_t i = 0;
- const char* intArr = "new int[] {\n";
- /* const char* intC = "new Integer("; */
- const char* stringArr = "new String[]{\n";
- char resKeyBuffer[8];
- const char *resname = res_getKeyString(srBundle, res, resKeyBuffer);
- char buf[100];
- int len =0;
- buf[0]=0;
- write_tabs(out);
-
- if(resname != NULL && uprv_strcmp(resname,"DateTimeElements")==0){
- T_FileStream_write(out, stringArr, (int32_t)uprv_strlen(stringArr));
- tabCount++;
- for(i = 0; i<res->u.fIntVector.fCount; i++) {
- write_tabs(out);
- len=itostr(buf,res->u.fIntVector.fArray[i],10,0);
- T_FileStream_write(out,"\"",1);
- T_FileStream_write(out,buf,len);
- T_FileStream_write(out,"\",",2);
- T_FileStream_write(out,"\n",1);
- }
- }else{
- T_FileStream_write(out, intArr, (int32_t)uprv_strlen(intArr));
- tabCount++;
- for(i = 0; i<res->u.fIntVector.fCount; i++) {
- write_tabs(out);
- /* T_FileStream_write(out, intC, (int32_t)uprv_strlen(intC)); */
- len=itostr(buf,res->u.fIntVector.fArray[i],10,0);
- T_FileStream_write(out,buf,len);
- /* T_FileStream_write(out,"),",2); */
- /* T_FileStream_write(out,"\n",1); */
- T_FileStream_write(out,",\n",2);
- }
- }
- tabCount--;
- write_tabs(out);
- T_FileStream_write(out,"},\n",3);
-}
-
-static void
-int_write_java(struct SResource *res,UErrorCode *status) {
- const char* intC = "new Integer(";
- char buf[100];
- int len =0;
- buf[0]=0;
-
- /* write the binary data */
- write_tabs(out);
- T_FileStream_write(out, intC, (int32_t)uprv_strlen(intC));
- len=itostr(buf, res->u.fIntValue.fValue, 10, 0);
- T_FileStream_write(out,buf,len);
- T_FileStream_write(out,"),\n",3 );
-
-}
-
-static void
-bytes_write_java( struct SResource *res, UErrorCode *status) {
- const char* type = "new byte[] {";
- const char* byteDecl = "%i, ";
- char byteBuffer[100] = { 0 };
- uint8_t* byteArray = NULL;
- int byteIterator = 0;
-
- int32_t srcLen=res->u.fBinaryValue.fLength;
-
- if(srcLen>0 )
- {
- byteArray = res->u.fBinaryValue.fData;
-
- write_tabs(out);
- T_FileStream_write(out, type, (int32_t)uprv_strlen(type));
- T_FileStream_write(out, "\n", 1);
- tabCount++;
-
- for (;byteIterator<srcLen;byteIterator++)
- {
- if (byteIterator%16 == 0)
- {
- write_tabs(out);
- }
-
- if (byteArray[byteIterator] < 128)
- {
- sprintf(byteBuffer, byteDecl, byteArray[byteIterator]);
- }
- else
- {
- sprintf(byteBuffer, byteDecl, (byteArray[byteIterator]-256));
- }
-
- T_FileStream_write(out, byteBuffer, (int32_t)uprv_strlen(byteBuffer));
-
- if (byteIterator%16 == 15)
- {
- T_FileStream_write(out, "\n", 1);
- }
-
- }
-
- if (((byteIterator-1)%16) != 15)
- {
- T_FileStream_write(out, "\n", 1);
- }
-
- tabCount--;
- write_tabs(out);
- T_FileStream_write(out, "},\n", 3);
-
- }
- else
- {
- /* Empty array */
- write_tabs(out);
- T_FileStream_write(out,type,(int32_t)uprv_strlen(type));
- T_FileStream_write(out,"},\n",3);
- }
-
-}
-
-static UBool start = TRUE;
-
-static void
-table_write_java(struct SResource *res, UErrorCode *status) {
- uint32_t i = 0;
- struct SResource *current = NULL;
- const char* obj = "new Object[][]{\n";
-
- if (U_FAILURE(*status)) {
- return ;
- }
-
- if (res->u.fTable.fCount > 0) {
- if(start==FALSE){
- write_tabs(out);
- T_FileStream_write(out, obj, (int32_t)uprv_strlen(obj));
- tabCount++;
- }
- start = FALSE;
- current = res->u.fTable.fFirst;
- i = 0;
-
-
- while (current != NULL) {
- char currentKeyBuffer[8];
- const char *currentKeyString = res_getKeyString(srBundle, current, currentKeyBuffer);
-
- assert(i < res->u.fTable.fCount);
- write_tabs(out);
-
- T_FileStream_write(out, openBrace, 2);
-
-
- tabCount++;
-
- write_tabs(out);
- if(currentKeyString != NULL) {
- T_FileStream_write(out, "\"", 1);
- T_FileStream_write(out, currentKeyString,
- (int32_t)uprv_strlen(currentKeyString));
- T_FileStream_write(out, "\",\n", 2);
-
- T_FileStream_write(out, "\n", 1);
- }
- res_write_java(current, status);
- if(U_FAILURE(*status)){
- return;
- }
- i++;
- current = current->fNext;
- tabCount--;
- write_tabs(out);
- T_FileStream_write(out, "},\n", 3);
- }
- if(tabCount>4){
- tabCount--;
- write_tabs(out);
- T_FileStream_write(out, "},\n", 3);
- }
-
- } else {
- write_tabs(out);
- T_FileStream_write(out,obj,(int32_t)uprv_strlen(obj));
-
- write_tabs(out);
- T_FileStream_write(out,"},\n",3);
-
- }
-
-}
-
-void
-res_write_java(struct SResource *res,UErrorCode *status) {
-
- if (U_FAILURE(*status)) {
- return ;
- }
-
- if (res != NULL) {
- switch (res->fType) {
- case URES_STRING:
- string_write_java (res, status);
- return;
- case URES_ALIAS:
- printf("Encountered unsupported resource type %d of alias\n", res->fType);
- *status = U_UNSUPPORTED_ERROR;
- return;
- case URES_INT_VECTOR:
- intvector_write_java (res, status);
- return;
- case URES_BINARY:
- bytes_write_java (res, status);
- return;
- case URES_INT:
- int_write_java (res, status);
- return;
- case URES_ARRAY:
- array_write_java (res, status);
- return;
- case URES_TABLE:
- table_write_java (res, status);
- return;
- default:
- break;
- }
- }
-
- *status = U_INTERNAL_PROGRAM_ERROR;
-}
-
-void
-bundle_write_java(struct SRBRoot *bundle, const char *outputDir,const char* outputEnc,
- char *writtenFilename, int writtenFilenameLen,
- const char* packageName, const char* bundleName,
- UErrorCode *status) {
-
- char fileName[256] = {'\0'};
- char className[256]={'\0'};
- /*char constructor[1000] = { 0 };*/
- /*UBool j1 =FALSE;*/
- /*outDir = outputDir;*/
-
- start = TRUE; /* Reset the start indictor*/
-
- bName = (bundleName==NULL) ? "LocaleElements" : bundleName;
- pName = (packageName==NULL)? "com.ibm.icu.impl.data" : packageName;
-
- uprv_strcpy(className, bName);
- srBundle = bundle;
- if(uprv_strcmp(srBundle->fLocale,"root")!=0){
- uprv_strcat(className,"_");
- uprv_strcat(className,srBundle->fLocale);
- }
- if(outputDir){
- uprv_strcpy(fileName, outputDir);
- if(outputDir[uprv_strlen(outputDir)-1] !=U_FILE_SEP_CHAR){
- uprv_strcat(fileName,U_FILE_SEP_STRING);
- }
- uprv_strcat(fileName,className);
- uprv_strcat(fileName,".java");
- }else{
- uprv_strcat(fileName,className);
- uprv_strcat(fileName,".java");
- }
-
- if (writtenFilename) {
- uprv_strncpy(writtenFilename, fileName, writtenFilenameLen);
- }
-
- if (U_FAILURE(*status)) {
- return;
- }
-
- out= T_FileStream_open(fileName,"w");
-
- if(out==NULL){
- *status = U_FILE_ACCESS_ERROR;
- return;
- }
- if(getIncludeCopyright()){
- T_FileStream_write(out, copyRight, (int32_t)uprv_strlen(copyRight));
- T_FileStream_write(out, warningMsg, (int32_t)uprv_strlen(warningMsg));
- }
- T_FileStream_write(out,"package ",(int32_t)uprv_strlen("package "));
- T_FileStream_write(out,pName,(int32_t)uprv_strlen(pName));
- T_FileStream_write(out,";\n\n",3);
- T_FileStream_write(out, javaClass, (int32_t)uprv_strlen(javaClass));
- T_FileStream_write(out, className, (int32_t)uprv_strlen(className));
- T_FileStream_write(out, javaClass1, (int32_t)uprv_strlen(javaClass1));
-
- /* if(j1){
- T_FileStream_write(out, javaClass1, (int32_t)uprv_strlen(javaClass1));
- }else{
- sprintf(constructor,javaClassICU,className);
- T_FileStream_write(out, constructor, (int32_t)uprv_strlen(constructor));
- }
- */
-
- if(outputEnc && *outputEnc!='\0'){
- /* store the output encoding */
- enc = outputEnc;
- conv=ucnv_open(enc,status);
- if(U_FAILURE(*status)){
- return;
- }
- }
- res_write_java(bundle->fRoot, status);
-
- T_FileStream_write(out, closeClass, (int32_t)uprv_strlen(closeClass));
-
- T_FileStream_close(out);
-
- ucnv_close(conv);
-}
« no previous file with comments | « source/tools/genrb/reslist.cpp ('k') | source/tools/genrb/wrtjava.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698