• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.robolectric.res.android;
2 
3 import org.robolectric.res.android.ResourceTypes.ResChunk_header;
4 
5 /**
6  * Definition for a pool of strings. The data of this chunk is an array of uint32_t providing
7  * indices into the pool, relative to stringsStart. At stringsStart are all of the UTF-16 strings
8  * concatenated together; each starts with a uint16_t of the string's length and each ends with a
9  * 0x0000 terminator. If a string is > 32767 characters, the high bit of the length is set meaning
10  * to take those 15 bits as a high word and it will be followed by another uint16_t containing the
11  * low word.
12  *
13  * <p>If styleCount is not zero, then immediately following the array of uint32_t indices into the
14  * string table is another array of indices into a style table starting at stylesStart. Each entry
15  * in the style table is an array of ResStringPool_span structures.
16  */
17 // transliterated from
18 // https://android.googlesource.com/platform/frameworks/base/+/android-9.0.0_r12/include/androidfw/ResourceTypes.h#434
19 public class ResStringPoolHeader {
20   public static final int SIZEOF = ResChunk_header.SIZEOF + 20;
21 
22   ResChunk_header header;
23   // Number of strings in this pool (number of uint32_t indices that follow
24   // in the data).
25   int stringCount;
26   // Number of style span arrays in the pool (number of uint32_t indices
27   // follow the string indices).
28   int styleCount;
29 
30   // Flags.
31 
32   // If set, the string index is sorted by the string values (based
33   // on strcmp16()).
34   public static final int SORTED_FLAG = 1 << 0;
35   // String pool is encoded in UTF-8
36   public static final int UTF8_FLAG = 1 << 8;
37   int flags;
38 
39   // Index from header of the string data.
40   int stringsStart;
41   // Index from header of the style data.
42   int stylesStart;
43 }
44