diff options
author | Adam Lesinski <adamlesinski@google.com> | 2014-11-03 11:21:19 -0800 |
---|---|---|
committer | Adam Lesinski <adamlesinski@google.com> | 2014-11-03 11:49:47 -0800 |
commit | 4bf58108d442b37ab4adf5ce3a4ecd63472ce254 (patch) | |
tree | 2b6359ad85861bf339e6a45813c599ab683fc7c3 /tools/aapt/StringPool.cpp | |
parent | e8d9810cdef5b3e288f54f42adc3205532343406 (diff) |
Fix issues that will be present in C++11
- char16_t is a distinct type, so stay consistent
with it throughout the code base.
- char16_t is defined as minimum size of 16 bits.
Since we mmap and cast data structures onto raw memory,
we need a precise definition (uint16_t), so we cast between
that (and static_assert that they are the same size).
Change-Id: I869c32637543bbcfb39d2643e7d9df10d33acd3c
Diffstat (limited to 'tools/aapt/StringPool.cpp')
-rw-r--r-- | tools/aapt/StringPool.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/tools/aapt/StringPool.cpp b/tools/aapt/StringPool.cpp index 06769e4a6b4d..2727b3dc9252 100644 --- a/tools/aapt/StringPool.cpp +++ b/tools/aapt/StringPool.cpp @@ -21,7 +21,8 @@ #define NOISY(x) //x -void strcpy16_htod(uint16_t* dst, const uint16_t* src) +#if __cplusplus >= 201103L +void strcpy16_htod(char16_t* dst, const char16_t* src) { while (*src) { char16_t s = htods(*src); @@ -30,6 +31,17 @@ void strcpy16_htod(uint16_t* dst, const uint16_t* src) } *dst = 0; } +#endif + +void strcpy16_htod(uint16_t* dst, const char16_t* src) +{ + while (*src) { + uint16_t s = htods(static_cast<uint16_t>(*src)); + *dst++ = s; + src++; + } + *dst = 0; +} void printStringPool(const ResStringPool* pool) { @@ -416,7 +428,7 @@ status_t StringPool::writeStringBlock(const sp<AaptFile>& pool) return NO_MEMORY; } - const size_t charSize = mUTF8 ? sizeof(uint8_t) : sizeof(char16_t); + const size_t charSize = mUTF8 ? sizeof(uint8_t) : sizeof(uint16_t); size_t strPos = 0; for (i=0; i<STRINGS; i++) { |