diff options
Diffstat (limited to 'tools/aapt2/ConfigDescription.h')
-rw-r--r-- | tools/aapt2/ConfigDescription.h | 90 |
1 files changed, 56 insertions, 34 deletions
diff --git a/tools/aapt2/ConfigDescription.h b/tools/aapt2/ConfigDescription.h index 8c519a1a913c..65c96175091c 100644 --- a/tools/aapt2/ConfigDescription.h +++ b/tools/aapt2/ConfigDescription.h @@ -24,22 +24,30 @@ namespace aapt { -// Subclass of ResTable_config that adds convenient -// initialization and comparison methods. +/* + * Subclass of ResTable_config that adds convenient + * initialization and comparison methods. + */ struct ConfigDescription : public android::ResTable_config { - // Returns an immutable default config. + /** + * Returns an immutable default config. + */ static const ConfigDescription& DefaultConfig(); - // Parse a string of the form 'fr-sw600dp-land' and fill in the - // given ResTable_config with resulting configuration parameters. - // - // The resulting configuration has the appropriate sdkVersion defined - // for backwards compatibility. + /* + * Parse a string of the form 'fr-sw600dp-land' and fill in the + * given ResTable_config with resulting configuration parameters. + * + * The resulting configuration has the appropriate sdkVersion defined + * for backwards compatibility. + */ static bool Parse(const android::StringPiece& str, ConfigDescription* out = nullptr); - // If the configuration uses an axis that was added after - // the original Android release, make sure the SDK version - // is set accordingly. + /** + * If the configuration uses an axis that was added after + * the original Android release, make sure the SDK version + * is set accordingly. + */ static void ApplyVersionForCompatibility(ConfigDescription* config); ConfigDescription(); @@ -53,30 +61,38 @@ struct ConfigDescription : public android::ResTable_config { ConfigDescription CopyWithoutSdkVersion() const; - // A configuration X dominates another configuration Y, if X has at least the - // precedence of Y and X is strictly more general than Y: for any type defined - // by X, the same type is defined by Y with a value equal to or, in the case - // of ranges, more specific than that of X. - // - // For example, the configuration 'en-w800dp' dominates 'en-rGB-w1024dp'. It - // does not dominate 'fr', 'en-w720dp', or 'mcc001-en-w800dp'. + /** + * A configuration X dominates another configuration Y, if X has at least the + * precedence of Y and X is strictly more general than Y: for any type defined + * by X, the same type is defined by Y with a value equal to or, in the case + * of ranges, more specific than that of X. + * + * For example, the configuration 'en-w800dp' dominates 'en-rGB-w1024dp'. It + * does not dominate 'fr', 'en-w720dp', or 'mcc001-en-w800dp'. + */ bool Dominates(const ConfigDescription& o) const; - // Returns true if this configuration defines a more important configuration - // parameter than o. For example, "en" has higher precedence than "v23", - // whereas "en" has the same precedence as "en-v23". + /** + * Returns true if this configuration defines a more important configuration + * parameter than o. For example, "en" has higher precedence than "v23", + * whereas "en" has the same precedence as "en-v23". + */ bool HasHigherPrecedenceThan(const ConfigDescription& o) const; - // A configuration conflicts with another configuration if both - // configurations define an incompatible configuration parameter. An - // incompatible configuration parameter is a non-range, non-density parameter - // that is defined in both configurations as a different, non-default value. + /** + * A configuration conflicts with another configuration if both + * configurations define an incompatible configuration parameter. An + * incompatible configuration parameter is a non-range, non-density parameter + * that is defined in both configurations as a different, non-default value. + */ bool ConflictsWith(const ConfigDescription& o) const; - // A configuration is compatible with another configuration if both - // configurations can match a common concrete device configuration and are - // unrelated by domination. For example, land-v11 conflicts with port-v21 - // but is compatible with v21 (both land-v11 and v21 would match en-land-v23). + /** + * A configuration is compatible with another configuration if both + * configurations can match a common concrete device configuration and are + * unrelated by domination. For example, land-v11 conflicts with port-v21 + * but is compatible with v21 (both land-v11 and v21 would match en-land-v23). + */ bool IsCompatibleWith(const ConfigDescription& o) const; bool MatchWithDensity(const ConfigDescription& o) const; @@ -89,8 +105,6 @@ struct ConfigDescription : public android::ResTable_config { bool operator>(const ConfigDescription& o) const; }; -::std::ostream& operator<<(::std::ostream& out, const ConfigDescription& o); - inline ConfigDescription::ConfigDescription() { memset(this, 0, sizeof(*this)); size = sizeof(android::ResTable_config); @@ -109,13 +123,15 @@ inline ConfigDescription::ConfigDescription(ConfigDescription&& o) { *this = o; } -inline ConfigDescription& ConfigDescription::operator=(const android::ResTable_config& o) { +inline ConfigDescription& ConfigDescription::operator=( + const android::ResTable_config& o) { *static_cast<android::ResTable_config*>(this) = o; size = sizeof(android::ResTable_config); return *this; } -inline ConfigDescription& ConfigDescription::operator=(const ConfigDescription& o) { +inline ConfigDescription& ConfigDescription::operator=( + const ConfigDescription& o) { *static_cast<android::ResTable_config*>(this) = o; return *this; } @@ -125,7 +141,8 @@ inline ConfigDescription& ConfigDescription::operator=(ConfigDescription&& o) { return *this; } -inline bool ConfigDescription::MatchWithDensity(const ConfigDescription& o) const { +inline bool ConfigDescription::MatchWithDensity( + const ConfigDescription& o) const { return match(o) && (density == 0 || density == o.density); } @@ -153,6 +170,11 @@ inline bool ConfigDescription::operator>(const ConfigDescription& o) const { return compare(o) > 0; } +inline ::std::ostream& operator<<(::std::ostream& out, + const ConfigDescription& o) { + return out << o.toString().string(); +} + } // namespace aapt #endif // AAPT_CONFIG_DESCRIPTION_H |