• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "Configuration.h"
2 #include <string.h>
3 
4 int
Compare(const Configuration & that) const5 Configuration::Compare(const Configuration& that) const
6 {
7     int n;
8 
9     n = locale.compare(that.locale);
10     if (n != 0) return n;
11 
12     n = vendor.compare(that.vendor);
13     if (n != 0) return n;
14 
15     n = orientation.compare(that.orientation);
16     if (n != 0) return n;
17 
18     n = density.compare(that.density);
19     if (n != 0) return n;
20 
21     n = touchscreen.compare(that.touchscreen);
22     if (n != 0) return n;
23 
24     n = keyboard.compare(that.keyboard);
25     if (n != 0) return n;
26 
27     n = navigation.compare(that.navigation);
28     if (n != 0) return n;
29 
30     n = screenSize.compare(that.screenSize);
31     if (n != 0) return n;
32 
33     return 0;
34 }
35 
36 string
ToString() const37 Configuration::ToString() const
38 {
39     string s;
40     if (locale.length() > 0) {
41         if (s.length() > 0) {
42             s += "-";
43         }
44         s += locale;
45     }
46     return s;
47 }
48 
49 bool
split_locale(const string & in,string * language,string * region)50 split_locale(const string& in, string* language, string* region)
51 {
52     const int len = in.length();
53     if (len == 2) {
54         if (isalpha(in[0]) && isalpha(in[1])) {
55             *language = in;
56             region->clear();
57             return true;
58         } else {
59             return false;
60         }
61     }
62     else if (len == 5) {
63         if (isalpha(in[0]) && isalpha(in[1]) && (in[2] == '_' || in[2] == '-')
64                 && isalpha(in[3]) && isalpha(in[4])) {
65             language->assign(in.c_str(), 2);
66             region->assign(in.c_str()+3, 2);
67             return true;
68         } else {
69             return false;
70         }
71     }
72     else {
73         return false;
74     }
75 }
76 
77