189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project/* 289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * Copyright (C) 2014 The Android Open Source Project 389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * 489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * you may not use this file except in compliance with the License. 689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * You may obtain a copy of the License at 789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * 889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * 1089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * See the License for the specific language governing permissions and 1489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * limitations under the License. 1589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project */ 1689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 1789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#ifndef H_ANDROID_SPLIT_SPLIT_DESCRIPTION 1889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#define H_ANDROID_SPLIT_SPLIT_DESCRIPTION 1989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include "aapt/ConfigDescription.h" 2189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include "Abi.h" 2289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <utils/String8.h> 2489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <utils/Vector.h> 2589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectnamespace split { 2789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectstruct SplitDescription { 2989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SplitDescription(); 3089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 3189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ConfigDescription config; 3289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project abi::Variant abi; 3389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 3489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int compare(const SplitDescription& rhs) const; 3589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project inline bool operator<(const SplitDescription& rhs) const; 3689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project inline bool operator==(const SplitDescription& rhs) const; 3789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project inline bool operator!=(const SplitDescription& rhs) const; 3889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 3989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project bool match(const SplitDescription& o) const; 4089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project bool isBetterThan(const SplitDescription& o, const SplitDescription& target) const; 4189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 4289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project android::String8 toString() const; 4389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 4489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project static bool parse(const android::String8& str, SplitDescription* outSplit); 4589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 4689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 4789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectssize_t parseAbi(const android::Vector<android::String8>& parts, const ssize_t index, 4889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SplitDescription* outSplit); 4989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 5089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectbool SplitDescription::operator<(const SplitDescription& rhs) const { 5189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return compare(rhs) < 0; 5289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project} 5389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 5489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectbool SplitDescription::operator==(const SplitDescription& rhs) const { 5589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return compare(rhs) == 0; 5689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project} 5789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 5889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectbool SplitDescription::operator!=(const SplitDescription& rhs) const { 5989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return compare(rhs) != 0; 6089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project} 6189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 6289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project} // namespace split 6389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 6489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#endif // H_ANDROID_SPLIT_SPLIT_DESCRIPTION 6589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project