Home | History | Annotate | Download | only in aapt
      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  */
     26 namespace AaptXml {
     27 
     28 /**
     29  * Returns the index of the attribute, or < 0 if it was not found.
     30  */
     31 ssize_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  */
     37 android::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  */
     45 android::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  */
     53 int32_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  */
     61 inline 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  */
     71 int32_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  */
     79 inline 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  */
     89 int32_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  */
     98 inline 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  */
    109 android::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  */
    117 void 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