19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "Configuration.h" 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <string.h> 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectint 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectConfiguration::Compare(const Configuration& that) const 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int n; 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project n = locale.compare(that.locale); 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (n != 0) return n; 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project n = vendor.compare(that.vendor); 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (n != 0) return n; 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project n = orientation.compare(that.orientation); 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (n != 0) return n; 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project n = density.compare(that.density); 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (n != 0) return n; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project n = touchscreen.compare(that.touchscreen); 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (n != 0) return n; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project n = keyboard.compare(that.keyboard); 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (n != 0) return n; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project n = navigation.compare(that.navigation); 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (n != 0) return n; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project n = screenSize.compare(that.screenSize); 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (n != 0) return n; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectConfiguration::ToString() const 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string s; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (locale.length() > 0) { 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (s.length() > 0) { 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s += "-"; 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s += locale; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return s; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectsplit_locale(const string& in, string* language, string* region) 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const int len = in.length(); 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (len == 2) { 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (isalpha(in[0]) && isalpha(in[1])) { 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *language = in; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project region->clear(); 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else if (len == 5) { 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (isalpha(in[0]) && isalpha(in[1]) && (in[2] == '_' || in[2] == '-') 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && isalpha(in[3]) && isalpha(in[4])) { 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project language->assign(in.c_str(), 2); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project region->assign(in.c_str()+3, 2); 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else { 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 77