| Index: source/tools/genrb/wrtjava.cpp
 | 
| diff --git a/source/tools/genrb/wrtjava.c b/source/tools/genrb/wrtjava.cpp
 | 
| similarity index 88%
 | 
| rename from source/tools/genrb/wrtjava.c
 | 
| rename to source/tools/genrb/wrtjava.cpp
 | 
| index 6239569d85e8939ccd8c6fe7642220108051c5e2..1788c8374feefaa1c63b2dc7edb06aa588b4f2be 100644
 | 
| --- a/source/tools/genrb/wrtjava.c
 | 
| +++ b/source/tools/genrb/wrtjava.cpp
 | 
| @@ -1,12 +1,12 @@
 | 
|  /*
 | 
|  *******************************************************************************
 | 
|  *
 | 
| -*   Copyright (C) 2000-2012, International Business Machines
 | 
| +*   Copyright (C) 2000-2015, International Business Machines
 | 
|  *   Corporation and others.  All Rights Reserved.
 | 
|  *
 | 
|  *******************************************************************************
 | 
|  *
 | 
| -* File wrtjava.c
 | 
| +* File wrtjava.cpp
 | 
|  *
 | 
|  * Modification History:
 | 
|  *
 | 
| @@ -18,6 +18,7 @@
 | 
|  */
 | 
|  
 | 
|  #include <assert.h>
 | 
| +#include "unicode/unistr.h"
 | 
|  #include "reslist.h"
 | 
|  #include "unewdata.h"
 | 
|  #include "unicode/ures.h"
 | 
| @@ -100,7 +101,7 @@ static const char* enc ="";
 | 
|  static UConverter* conv = NULL;
 | 
|  
 | 
|  static int32_t
 | 
| -uCharsToChars( char* target,int32_t targetLen, UChar* source, int32_t sourceLen,UErrorCode* status){
 | 
| +uCharsToChars(char *target, int32_t targetLen, const UChar *source, int32_t sourceLen, UErrorCode *status) {
 | 
|      int i=0, j=0;
 | 
|      char str[30]={'\0'};
 | 
|      while(i<sourceLen){
 | 
| @@ -225,7 +226,7 @@ static int32_t getColumnCount(int32_t len){
 | 
|      return columnCount;
 | 
|  }
 | 
|  static void
 | 
| -str_write_java( uint16_t* src, int32_t srcLen, UBool printEndLine, UErrorCode *status){
 | 
| +str_write_java(const UChar *src, int32_t srcLen, UBool printEndLine, UErrorCode *status) {
 | 
|  
 | 
|      uint32_t length = srcLen*8;
 | 
|      uint32_t bufLen = 0;
 | 
| @@ -304,23 +305,14 @@ str_write_java( uint16_t* src, int32_t srcLen, UBool printEndLine, UErrorCode *s
 | 
|  
 | 
|  /* 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);
 | 
| -    }
 | 
| +string_write_java(const StringResource *res,UErrorCode *status) {
 | 
| +    (void)res->getKeyString(srBundle);
 | 
|  
 | 
| +    str_write_java(res->getBuffer(), res->length(), TRUE, status);
 | 
|  }
 | 
|  
 | 
|  static void
 | 
| -array_write_java( struct SResource *res, UErrorCode *status) {
 | 
| +array_write_java(const ArrayResource *res, UErrorCode *status) {
 | 
|  
 | 
|      uint32_t  i         = 0;
 | 
|      const char* arr ="new String[] { \n";
 | 
| @@ -331,19 +323,19 @@ array_write_java( struct SResource *res, UErrorCode *status) {
 | 
|          return;
 | 
|      }
 | 
|  
 | 
| -    if (res->u.fArray.fCount > 0) {
 | 
| +    if (res->fCount > 0) {
 | 
|  
 | 
| -        current = res->u.fArray.fFirst;
 | 
| +        current = res->fFirst;
 | 
|          i = 0;
 | 
|          while(current != NULL){
 | 
| -            if(current->fType!=URES_STRING){
 | 
| +            if(!current->isString()){
 | 
|                  allStrings = FALSE;
 | 
|                  break;
 | 
|              }
 | 
|              current= current->fNext;
 | 
|          }
 | 
|  
 | 
| -        current = res->u.fArray.fFirst;
 | 
| +        current = res->fFirst;
 | 
|          if(allStrings==FALSE){
 | 
|              const char* object = "new Object[]{\n";
 | 
|              write_tabs(out);
 | 
| @@ -355,7 +347,7 @@ array_write_java( struct SResource *res, UErrorCode *status) {
 | 
|              tabCount++;
 | 
|          }
 | 
|          while (current != NULL) {
 | 
| -            /*if(current->fType==URES_STRING){
 | 
| +            /*if(current->isString()){
 | 
|                  write_tabs(out);
 | 
|              }*/
 | 
|              res_write_java(current, status);
 | 
| @@ -380,13 +372,12 @@ array_write_java( struct SResource *res, UErrorCode *status) {
 | 
|  }
 | 
|  
 | 
|  static void
 | 
| -intvector_write_java( struct SResource *res, UErrorCode *status) {
 | 
| +intvector_write_java(const IntVectorResource *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);
 | 
| +    const char *resname = res->getKeyString(srBundle);
 | 
|      char buf[100];
 | 
|      int len =0;
 | 
|      buf[0]=0;
 | 
| @@ -395,9 +386,9 @@ intvector_write_java( struct SResource *res, UErrorCode *status) {
 | 
|      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++) {
 | 
| +        for(i = 0; i<res->fCount; i++) {
 | 
|              write_tabs(out);
 | 
| -            len=itostr(buf,res->u.fIntVector.fArray[i],10,0);
 | 
| +            len=itostr(buf,res->fArray[i],10,0);
 | 
|              T_FileStream_write(out,"\"",1);
 | 
|              T_FileStream_write(out,buf,len);
 | 
|              T_FileStream_write(out,"\",",2);
 | 
| @@ -406,10 +397,10 @@ intvector_write_java( struct SResource *res, UErrorCode *status) {
 | 
|      }else{
 | 
|          T_FileStream_write(out, intArr, (int32_t)uprv_strlen(intArr));
 | 
|          tabCount++;
 | 
| -        for(i = 0; i<res->u.fIntVector.fCount; i++) {
 | 
| +        for(i = 0; i<res->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);
 | 
| +            len=itostr(buf,res->fArray[i],10,0);
 | 
|              T_FileStream_write(out,buf,len);
 | 
|              /* T_FileStream_write(out,"),",2);  */
 | 
|              /* T_FileStream_write(out,"\n",1);  */
 | 
| @@ -422,7 +413,7 @@ intvector_write_java( struct SResource *res, UErrorCode *status) {
 | 
|  }
 | 
|  
 | 
|  static void
 | 
| -int_write_java(struct SResource *res,UErrorCode *status) {
 | 
| +int_write_java(const IntResource *res, UErrorCode * /*status*/) {
 | 
|      const char* intC   =  "new Integer(";
 | 
|      char buf[100];
 | 
|      int len =0;
 | 
| @@ -431,25 +422,25 @@ int_write_java(struct SResource *res,UErrorCode *status) {
 | 
|      /* 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);
 | 
| +    len=itostr(buf, res->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) {
 | 
| +bytes_write_java(const BinaryResource *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;
 | 
| +    int32_t srcLen=res->fLength;
 | 
|  	
 | 
|      if(srcLen>0 )
 | 
|  	{
 | 
| -        byteArray = res->u.fBinaryValue.fData;
 | 
| +        byteArray = res->fData;
 | 
|  
 | 
|          write_tabs(out);
 | 
|          T_FileStream_write(out, type, (int32_t)uprv_strlen(type));
 | 
| @@ -504,7 +495,7 @@ bytes_write_java( struct SResource *res, UErrorCode *status) {
 | 
|  static UBool start = TRUE;
 | 
|  
 | 
|  static void
 | 
| -table_write_java(struct SResource *res, UErrorCode *status) {
 | 
| +table_write_java(const TableResource *res, UErrorCode *status) {
 | 
|      uint32_t  i         = 0;
 | 
|      struct SResource *current = NULL;
 | 
|      const char* obj = "new Object[][]{\n";
 | 
| @@ -513,22 +504,21 @@ table_write_java(struct SResource *res, UErrorCode *status) {
 | 
|          return ;
 | 
|      }
 | 
|  
 | 
| -    if (res->u.fTable.fCount > 0) {
 | 
| +    if (res->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;
 | 
| +        current = res->fFirst;
 | 
|          i       = 0;
 | 
|  
 | 
|  
 | 
|          while (current != NULL) {
 | 
| -            char currentKeyBuffer[8];
 | 
| -            const char *currentKeyString = res_getKeyString(srBundle, current, currentKeyBuffer);
 | 
| +            const char *currentKeyString = current->getKeyString(srBundle);
 | 
|  
 | 
| -            assert(i < res->u.fTable.fCount);
 | 
| +            assert(i < res->fCount);
 | 
|              write_tabs(out);
 | 
|  
 | 
|              T_FileStream_write(out, openBrace, 2);
 | 
| @@ -582,26 +572,26 @@ res_write_java(struct SResource *res,UErrorCode *status) {
 | 
|      if (res != NULL) {
 | 
|          switch (res->fType) {
 | 
|          case URES_STRING:
 | 
| -             string_write_java    (res, status);
 | 
| +             string_write_java    (static_cast<const StringResource *>(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);
 | 
| +             intvector_write_java (static_cast<const IntVectorResource *>(res), status);
 | 
|               return;
 | 
|          case URES_BINARY:
 | 
| -             bytes_write_java     (res, status);
 | 
| +             bytes_write_java     (static_cast<const BinaryResource *>(res), status);
 | 
|               return;
 | 
|          case URES_INT:
 | 
| -             int_write_java       (res, status);
 | 
| +             int_write_java       (static_cast<const IntResource *>(res), status);
 | 
|               return;
 | 
|          case URES_ARRAY:
 | 
| -             array_write_java     (res, status);
 | 
| +             array_write_java     (static_cast<const ArrayResource *>(res), status);
 | 
|               return;
 | 
|          case URES_TABLE:
 | 
| -             table_write_java     (res, status);
 | 
| +             table_write_java     (static_cast<const TableResource *>(res), status);
 | 
|               return;
 | 
|          default:
 | 
|              break;
 | 
| 
 |