| 153 | } |
| 154 | |
| 155 | int CharBigrams::Cost(const char_32 *char_32_ptr, CharSet *char_set) const { |
| 156 | if (!char_32_ptr || char_32_ptr[0] == 0) { |
| 157 | return bigram_table_.worst_cost; |
| 158 | } |
| 159 | int cost = MeanCostWithSpaces(char_32_ptr); |
| 160 | if (CubeUtils::StrLen(char_32_ptr) >= kMinLengthCaseInvariant && |
| 161 | CubeUtils::IsCaseInvariant(char_32_ptr, char_set)) { |
| 162 | char_32 *lower_32 = CubeUtils::ToLower(char_32_ptr, char_set); |
| 163 | if (lower_32 && lower_32[0] != 0) { |
| 164 | int cost_lower = MeanCostWithSpaces(lower_32); |
| 165 | cost = MIN(cost, cost_lower); |
| 166 | } |
| 167 | delete [] lower_32; |
| 168 | char_32 *upper_32 = CubeUtils::ToUpper(char_32_ptr, char_set); |
| 169 | if (upper_32 && upper_32[0] != 0) { |
| 170 | int cost_upper = MeanCostWithSpaces(upper_32); |
| 171 | cost = MIN(cost, cost_upper); |
| 172 | } |
| 173 | delete [] upper_32; |
| 174 | } |
| 175 | return cost; |
| 176 | } |
| 177 | |
| 178 | int CharBigrams::MeanCostWithSpaces(const char_32 *char_32_ptr) const { |
| 179 | if (!char_32_ptr) |
no outgoing calls
no test coverage detected