AaptXml.h revision ad2d07d2d98a46babb2a9472413fe9ce5080ca76
1/* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#ifndef __AAPT_XML_H 18#define __AAPT_XML_H 19 20#include <androidfw/ResourceTypes.h> 21#include <utils/String8.h> 22 23/** 24 * Utility methods for dealing with ResXMLTree. 25 */ 26namespace AaptXml { 27 28/** 29 * Returns the index of the attribute, or < 0 if it was not found. 30 */ 31ssize_t indexOfAttribute(const android::ResXMLTree& tree, uint32_t attrRes); 32 33/** 34 * Returns the string value for the specified attribute. 35 * The string must be present in the ResXMLTree's string pool (inline in the XML). 36 */ 37android::String8 getAttribute(const android::ResXMLTree& tree, const char* ns, 38 const char* attr, android::String8* outError = NULL); 39 40/** 41 * Returns the string value for the specified attribute, or an empty string 42 * if the attribute does not exist. 43 * The string must be present in the ResXMLTree's string pool (inline in the XML). 44 */ 45android::String8 getAttribute(const android::ResXMLTree& tree, uint32_t attrRes, 46 android::String8* outError = NULL); 47 48/** 49 * Returns the integer value for the specified attribute, or the default value 50 * if the attribute does not exist. 51 * The integer must be declared inline in the XML. 52 */ 53int32_t getIntegerAttribute(const android::ResXMLTree& tree, const char* ns, 54 const char* attr, int32_t defValue = -1, android::String8* outError = NULL); 55 56/** 57 * Returns the integer value for the specified attribute, or the default value 58 * if the attribute does not exist. 59 * The integer must be declared inline in the XML. 60 */ 61inline int32_t getIntegerAttribute(const android::ResXMLTree& tree, const char* ns, 62 const char* attr, android::String8* outError) { 63 return getIntegerAttribute(tree, ns, attr, -1, outError); 64} 65 66/** 67 * Returns the integer value for the specified attribute, or the default value 68 * if the attribute does not exist. 69 * The integer must be declared inline in the XML. 70 */ 71int32_t getIntegerAttribute(const android::ResXMLTree& tree, uint32_t attrRes, 72 int32_t defValue = -1, android::String8* outError = NULL); 73 74/** 75 * Returns the integer value for the specified attribute, or the default value 76 * if the attribute does not exist. 77 * The integer must be declared inline in the XML. 78 */ 79inline int32_t getIntegerAttribute(const android::ResXMLTree& tree, uint32_t attrRes, 80 android::String8* outError) { 81 return getIntegerAttribute(tree, attrRes, -1, outError); 82} 83 84/** 85 * Returns the integer value for the specified attribute, or the default value 86 * if the attribute does not exist. 87 * The integer may be a resource in the supplied ResTable. 88 */ 89int32_t getResolvedIntegerAttribute(const android::ResTable& resTable, 90 const android::ResXMLTree& tree, uint32_t attrRes, int32_t defValue = -1, 91 android::String8* outError = NULL); 92 93/** 94 * Returns the integer value for the specified attribute, or the default value 95 * if the attribute does not exist. 96 * The integer may be a resource in the supplied ResTable. 97 */ 98inline int32_t getResolvedIntegerAttribute(const android::ResTable& resTable, 99 const android::ResXMLTree& tree, uint32_t attrRes, 100 android::String8* outError) { 101 return getResolvedIntegerAttribute(resTable, tree, attrRes, -1, outError); 102} 103 104/** 105 * Returns the string value for the specified attribute, or an empty string 106 * if the attribute does not exist. 107 * The string may be a resource in the supplied ResTable. 108 */ 109android::String8 getResolvedAttribute(const android::ResTable& resTable, 110 const android::ResXMLTree& tree, uint32_t attrRes, 111 android::String8* outError = NULL); 112 113/** 114 * Returns the resource for the specified attribute in the outValue parameter. 115 * The resource may be a resource in the supplied ResTable. 116 */ 117void getResolvedResourceAttribute(const android::ResTable& resTable, 118 const android::ResXMLTree& tree, uint32_t attrRes, android::Res_value* outValue, 119 android::String8* outError = NULL); 120 121} // namespace AaptXml 122 123#endif // __AAPT_XML_H 124