Home | History | Annotate | Download | only in localize
      1 #include "Configuration.h"
      2 #include <string.h>
      3 
      4 int
      5 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
     37 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
     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