1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_lingucomponent.hxx" 26 27 #include <iostream> 28 #include <string.h> 29 30 #include <libtextcat/textcat.h> 31 #include <altstrfunc.hxx> 32 #include <guess.hxx> 33 34 using namespace std; 35 36 Guess::Guess() 37 { 38 language_str = DEFAULT_LANGUAGE; 39 country_str = DEFAULT_COUNTRY; 40 encoding_str = DEFAULT_ENCODING; 41 } 42 43 /* 44 * this use a char * string to build the guess object 45 * a string like those is made as : [language-country-encoding]... 46 * 47 */ 48 49 Guess::Guess(char * guess_str) 50 { 51 Guess(); 52 53 string lang; 54 string country; 55 string enc; 56 57 //if the guess is not like "UNKNOWN" or "SHORT", go into the brackets 58 // if(strncmp((const char*)(guess_str + 1), _TEXTCAT_RESULT_UNKOWN, strlen(_TEXTCAT_RESULT_UNKOWN)) != 0 59 // && 60 // strncmp((const char*)(guess_str + 1), _TEXTCAT_RESULT_SHORT, strlen(_TEXTCAT_RESULT_SHORT)) != 0) 61 // { 62 if(strcmp((const char*)(guess_str + 1), _TEXTCAT_RESULT_UNKOWN) != 0 63 && 64 strcmp((const char*)(guess_str + 1), _TEXTCAT_RESULT_SHORT) != 0) 65 { 66 67 int current_pointer = 0; 68 69 //this is to go to the first char of the guess string ( the '[' of "[en-US-utf8]" ) 70 while(!isSeparator(guess_str[current_pointer])){ 71 current_pointer++; 72 } 73 current_pointer++; 74 75 //this is to pick up the language ( the "en" from "[en-US-utf8]" ) 76 while(!isSeparator(guess_str[current_pointer])){ 77 lang+=guess_str[current_pointer]; 78 current_pointer++; 79 } 80 current_pointer++; 81 82 //this is to pick up the country ( the "US" from "[en-US-utf8]" ) 83 while(!isSeparator(guess_str[current_pointer])){ 84 country+=guess_str[current_pointer]; 85 current_pointer++; 86 } 87 current_pointer++; 88 89 //this is to pick up the encoding ( the "utf8" from "[en-US-utf8]" ) 90 while(!isSeparator(guess_str[current_pointer])){ 91 enc+=guess_str[current_pointer]; 92 current_pointer++; 93 } 94 95 if(lang!=""){//if not we use the default value 96 language_str=lang; 97 } 98 country_str=country; 99 100 if(enc!=""){//if not we use the default value 101 encoding_str=enc; 102 } 103 } 104 } 105 106 Guess::~Guess(){} 107 108 string Guess::GetLanguage() 109 { 110 return language_str; 111 } 112 113 string Guess::GetCountry() 114 { 115 return country_str; 116 } 117 118 string Guess::GetEncoding() 119 { 120 return encoding_str; 121 } 122 123 bool Guess::operator==(string lang) 124 { 125 string toString; 126 toString += GetLanguage(); 127 toString += "-"; 128 toString += GetCountry(); 129 toString += "-"; 130 toString += GetEncoding(); 131 return start(toString, lang); 132 } 133