when libutils is statically linked, the ordering of the static
initializer is not guaranteed and therefore it's unsafe to use
empty static strings: e.g.:
static String8 sThisStaticStringIsNotSafe;
instead, this new constructor can be used:
static String8 sThisStaticStringIsSafe(kEmptyString);
Change-Id: Ia3daf1cab1c97d021c0ee9c2b394b5e27e8d6c0d
Many of our basic data structures are trivially movable using
memcpy() even if they are not trivially constructable, destructable
or copyable. It's worth taking advantage of this *ahem* trait.
Adding trivial_move_trait to String16 reduces appt running
time on frameworks/base/core/res by 40%!
Change-Id: I630a1a027e2d0ded96856e4ca042ea82906289fe
Split out all the UTF-8/16/32 handling code from String8/16 to its own
file to allow better reuse of code.
Change-Id: If9ce63920edc75472c38da4adce0d13cda9ad2f7
Allows the use of UTF-8 for packing resources instead of the
default of UTF-16 for Java. When strings are extracted from the
ResStringPool, they are converted to UTF-16 and the result is
cached for subsequent calls.
When using aapt to package, add in the "-8" switch to pack the
resources using UTF-8. This will result in the value, key, and
type strings as well as the compiled XML string values taking
significantly less space in the final application package in
most scenarios.
Change-Id: I129483f8b3d3b1c5869dced05cb525e494a6c83a