/* Old textcat.h versions defined bad spelled constants. */ #ifndef TEXTCAT_RESULT_UNKNOWN_STR #define TEXTCAT_RESULT_UNKNOWN_STR _TEXTCAT_RESULT_UNKOWN #endif
/* *thisuseachar*stringtobuildtheguessobject *astringlikethoseismadeas:[language-country-encoding]... *
*/
Guess::Guess(constchar * guess_str)
: language_str(DEFAULT_LANGUAGE)
, country_str(DEFAULT_COUNTRY)
{ //if the guess is not like "UNKNOWN" or "SHORT", go into the brackets if(strcmp(guess_str + 1, TEXTCAT_RESULT_UNKNOWN_STR) == 0
|| strcmp(guess_str + 1, TEXTCAT_RESULT_SHORT_STR) == 0) return;
// From how this ctor is called from SimpleGuesser::GuessLanguage and // SimpleGuesser::GetManagedLanguages in // lingucomponent/source/languageguessing/simpleguesser.cxx, guess_str must start with "[":
assert(guess_str[0] == GUESS_SEPARATOR_OPEN); autoconst start = guess_str + 1; // Only look at the prefix of guess_str, delimited by the next "]" or "[" or end-of-string; // split it into at most three segments separated by "-" (where excess occurrences of "-" // would become part of the third segment), like "en-US-utf8"; the first segment denotes the // language; if there are three segments, the second denotes the country and the third the // encoding; otherwise, the second segment, if any (e.g., in "haw-utf8"), denotes the // encoding: charconst * dash1 = nullptr; charconst * dash2 = nullptr; auto p = start; for (;; ++p) { autoconst c = *p; if (c == '\0' || c == GUESS_SEPARATOR_OPEN || c == GUESS_SEPARATOR_CLOSE) { break;
} if (c == GUESS_SEPARATOR_SEP) { if (dash1 == nullptr) {
dash1 = p;
} else {
dash2 = p; // The encoding is ignored, so we can stop as soon as we found the second "-": break;
}
}
} autoconst langLen = (dash1 == nullptr ? p : dash1) - start; if (langLen != 0) { // if not we use the default value
language_str.assign(start, langLen);
} if (dash2 != nullptr) {
country_str.assign(dash1 + 1, dash2 - (dash1 + 1));
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.