77 lines
1.5 KiB
C++
77 lines
1.5 KiB
C++
#include "Configuration.h"
|
|
#include <string.h>
|
|
|
|
int
|
|
Configuration::Compare(const Configuration& that) const
|
|
{
|
|
int n;
|
|
|
|
n = locale.compare(that.locale);
|
|
if (n != 0) return n;
|
|
|
|
n = vendor.compare(that.vendor);
|
|
if (n != 0) return n;
|
|
|
|
n = orientation.compare(that.orientation);
|
|
if (n != 0) return n;
|
|
|
|
n = density.compare(that.density);
|
|
if (n != 0) return n;
|
|
|
|
n = touchscreen.compare(that.touchscreen);
|
|
if (n != 0) return n;
|
|
|
|
n = keyboard.compare(that.keyboard);
|
|
if (n != 0) return n;
|
|
|
|
n = navigation.compare(that.navigation);
|
|
if (n != 0) return n;
|
|
|
|
n = screenSize.compare(that.screenSize);
|
|
if (n != 0) return n;
|
|
|
|
return 0;
|
|
}
|
|
|
|
string
|
|
Configuration::ToString() const
|
|
{
|
|
string s;
|
|
if (locale.length() > 0) {
|
|
if (s.length() > 0) {
|
|
s += "-";
|
|
}
|
|
s += locale;
|
|
}
|
|
return s;
|
|
}
|
|
|
|
bool
|
|
split_locale(const string& in, string* language, string* region)
|
|
{
|
|
const int len = in.length();
|
|
if (len == 2) {
|
|
if (isalpha(in[0]) && isalpha(in[1])) {
|
|
*language = in;
|
|
region->clear();
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
else if (len == 5) {
|
|
if (isalpha(in[0]) && isalpha(in[1]) && (in[2] == '_' || in[2] == '-')
|
|
&& isalpha(in[3]) && isalpha(in[4])) {
|
|
language->assign(in.c_str(), 2);
|
|
region->assign(in.c_str()+3, 2);
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
|