| Index: source/common/udata.cpp |
| =================================================================== |
| --- source/common/udata.cpp (revision 68397) |
| +++ source/common/udata.cpp (working copy) |
| @@ -610,7 +610,7 @@ |
| * our common data. * |
| * * |
| *----------------------------------------------------------------------*/ |
| -extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT; |
| +extern "C" const ICU_Data_Header U_DATA_API U_ICUDATA_ENTRY_POINT; |
| |
| /* |
| * This would be a good place for weak-linkage declarations of |
| @@ -656,7 +656,7 @@ |
| if(gCommonICUDataArray[commonDataIndex] == NULL) { |
| int32_t i; |
| for(i = 0; i < commonDataIndex; ++i) { |
| - if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) { |
| + if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT.hdr) { |
| /* The linked-in data is already in the list. */ |
| return NULL; |
| } |
| @@ -675,7 +675,7 @@ |
| setCommonICUDataPointer(uprv_getICUData_conversion(), FALSE, pErrorCode); |
| } |
| */ |
| - setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, FALSE, pErrorCode); |
| + setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT.hdr, FALSE, pErrorCode); |
| } |
| return gCommonICUDataArray[commonDataIndex]; |
| } |
| Index: source/common/ucmndata.h |
| =================================================================== |
| --- source/common/ucmndata.h (revision 68397) |
| +++ source/common/ucmndata.h (working copy) |
| @@ -44,6 +44,20 @@ |
| } DataHeader; |
| |
| typedef struct { |
| + DataHeader hdr; |
| + char padding[8]; |
| + uint32_t count, reserved; |
| + /* |
| + const struct { |
| + const char *const name; |
| + const void *const data; |
| + } toc[1]; |
| + */ |
| + int fakeNameAndData[4]; /* TODO: Change this header type from */ |
| + /* pointerTOC to OffsetTOC. */ |
| +} ICU_Data_Header; |
| + |
| +typedef struct { |
| uint32_t nameOffset; |
| uint32_t dataOffset; |
| } UDataOffsetTOCEntry; |
| Index: source/stubdata/stubdata.c |
| =================================================================== |
| --- source/stubdata/stubdata.c (revision 68397) |
| +++ source/stubdata/stubdata.c (working copy) |
| @@ -20,45 +20,34 @@ |
| #include "unicode/utypes.h" |
| #include "unicode/udata.h" |
| #include "unicode/uversion.h" |
| +#include "ucmndata.h" |
| |
| |
| -typedef struct { |
| - uint16_t headerSize; |
| - uint8_t magic1, magic2; |
| - UDataInfo info; |
| - char padding[8]; |
| - uint32_t count, reserved; |
| - /* |
| - const struct { |
| - const char *const name; |
| - const void *const data; |
| - } toc[1]; |
| - */ |
| - int fakeNameAndData[4]; /* TODO: Change this header type from */ |
| - /* pointerTOC to OffsetTOC. */ |
| -} ICU_Data_Header; |
| - |
| U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = { |
| - 32, /* headerSize */ |
| - 0xda, /* magic1, (see struct MappedData in udata.c) */ |
| - 0x27, /* magic2 */ |
| - { /*UDataInfo */ |
| - sizeof(UDataInfo), /* size */ |
| - 0, /* reserved */ |
| + { /* DataHeader */ |
| + { /* MappedData */ |
| + 32, /* headerSize */ |
| + 0xda, /* magic1, (see struct MappedData in udata.c) */ |
| + 0x27, /* magic2 */ |
| + }, |
| + { /*UDataInfo */ |
| + sizeof(UDataInfo), /* size */ |
| + 0, /* reserved */ |
| |
| #if U_IS_BIG_ENDIAN |
| - 1, |
| + 1, |
| #else |
| - 0, |
| + 0, |
| #endif |
| |
| - U_CHARSET_FAMILY, |
| - sizeof(UChar), |
| - 0, /* reserved */ |
| - { /* data format identifier */ |
| - 0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */ |
| - {1, 0, 0, 0}, /* format version major, minor, milli, micro */ |
| - {0, 0, 0, 0} /* dataVersion */ |
| + U_CHARSET_FAMILY, |
| + sizeof(UChar), |
| + 0, /* reserved */ |
| + { /* data format identifier */ |
| + 0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */ |
| + {1, 0, 0, 0}, /* format version major, minor, milli, micro */ |
| + {0, 0, 0, 0} /* dataVersion */ |
| + }, |
| }, |
| {0,0,0,0,0,0,0,0}, /* Padding[8] */ |
| 0, /* count */ |