ResourceTypeExtensions.h revision 6f6ceb7e1456698b1f33e04536bfb3227f9fcfcb
16f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski/* 26f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Copyright (C) 2015 The Android Open Source Project 36f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * 46f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 56f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * you may not use this file except in compliance with the License. 66f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * You may obtain a copy of the License at 76f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * 86f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 96f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * 106f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Unless required by applicable law or agreed to in writing, software 116f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 126f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * See the License for the specific language governing permissions and 146f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * limitations under the License. 156f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 166f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 176f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski#ifndef AAPT_RESOURCE_TYPE_EXTENSIONS_H 186f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski#define AAPT_RESOURCE_TYPE_EXTENSIONS_H 196f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 206f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski#include <androidfw/ResourceTypes.h> 216f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 226f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinskinamespace aapt { 236f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 246f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski/** 256f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * New android::ResChunk_header types defined 266f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * for AAPT to use. 276f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * 286f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * TODO(adamlesinski): Consider reserving these 296f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * enums in androidfw/ResourceTypes.h to avoid 306f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * future collisions. 316f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 326f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinskienum { 336f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski /** 346f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * A chunk that holds the string pool 356f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * for source entries (path/to/source:line). 366f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 376f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski RES_TABLE_SOURCE_POOL_TYPE = 0x000e, 386f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 396f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski /** 406f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * A chunk holding names of externally 416f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * defined symbols and offsets to where 426f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * they are referenced in the table. 436f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 446f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski RES_TABLE_SYMBOL_TABLE_TYPE = 0x000f, 456f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski}; 466f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 476f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski/** 486f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * New resource types that are meant to only be used 496f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * by AAPT and will not end up on the device. 506f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 516f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinskistruct ExtendedTypes { 526f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski enum { 536f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski /** 546f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * A sentinel value used when a resource is defined as 556f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * public but it has no defined value yet. If we don't 566f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * flatten it with some value, we will lose its name. 576f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 586f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski TYPE_SENTINEL = 0xff, 596f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 606f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski /** 616f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * A raw string value that hasn't had its escape sequences 626f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * processed nor whitespace removed. 636f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 646f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski TYPE_RAW_STRING = 0xfe 656f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski }; 666f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski}; 676f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 686f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski/** 696f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * A chunk with type RES_TABLE_SYMBOL_TABLE_TYPE. 706f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Following the header are count number of SymbolTable_entry 716f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * structures, followed by an android::ResStringPool_header. 726f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 736f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinskistruct SymbolTable_header { 746f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski android::ResChunk_header header; 756f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 766f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski /** 776f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Number of SymbolTable_entry structures following 786f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * this header. 796f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 806f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski uint32_t count; 816f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski}; 826f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 836f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinskistruct SymbolTable_entry { 846f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski /** 856f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Offset from the beginning of the resource table 866f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * where the symbol entry is referenced. 876f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 886f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski uint32_t offset; 896f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 906f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski /** 916f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * The index into the string pool where the name of this 926f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * symbol exists. 936f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 946f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski uint32_t stringIndex; 956f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski}; 966f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 976f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski/** 986f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * A structure representing the source of a resourc entry. 996f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Appears after an android::ResTable_entry or android::ResTable_map_entry. 1006f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * 1016f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * TODO(adamlesinski): This causes some issues when runtime code checks 1026f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * the size of an android::ResTable_entry. It assumes it is an 1036f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * android::ResTable_map_entry if the size is bigger than an android::ResTable_entry 1046f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * which may not be true if this structure is present. 1056f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 1066f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinskistruct ResTable_entry_source { 1076f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski /** 1086f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Index into the source string pool. 1096f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 1106f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski uint32_t pathIndex; 1116f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 1126f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski /** 1136f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Line number this resource was defined on. 1146f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 1156f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski uint32_t line; 1166f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski}; 1176f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 1186f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski} // namespace aapt 1196f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 1206f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski#endif // AAPT_RESOURCE_TYPE_EXTENSIONS_H 121