Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1833)

Side by Side Diff: app/l10n_util.h

Issue 171012: Use 'icu::' namespace explicitly (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « app/gfx/text_elider_unittest.cc ('k') | app/l10n_util.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file contains utility functions for dealing with localized 5 // This file contains utility functions for dealing with localized
6 // content. 6 // content.
7 7
8 #ifndef APP_L10N_UTIL_H_ 8 #ifndef APP_L10N_UTIL_H_
9 #define APP_L10N_UTIL_H_ 9 #define APP_L10N_UTIL_H_
10 10
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 // Returns the default text alignment to be used when drawing text on a 254 // Returns the default text alignment to be used when drawing text on a
255 // gfx::Canvas based on the directionality of the system locale language. This 255 // gfx::Canvas based on the directionality of the system locale language. This
256 // function is used by gfx::Canvas::DrawStringInt when the text alignment is 256 // function is used by gfx::Canvas::DrawStringInt when the text alignment is
257 // not specified. 257 // not specified.
258 // 258 //
259 // This function returns either gfx::Canvas::TEXT_ALIGN_LEFT or 259 // This function returns either gfx::Canvas::TEXT_ALIGN_LEFT or
260 // gfx::Canvas::TEXT_ALIGN_RIGHT. 260 // gfx::Canvas::TEXT_ALIGN_RIGHT.
261 int DefaultCanvasTextAlignment(); 261 int DefaultCanvasTextAlignment();
262 262
263 // Compares the two strings using the specified collator. 263 // Compares the two strings using the specified collator.
264 UCollationResult CompareStringWithCollator(const Collator* collator, 264 UCollationResult CompareStringWithCollator(const icu::Collator* collator,
265 const std::wstring& lhs, 265 const std::wstring& lhs,
266 const std::wstring& rhs); 266 const std::wstring& rhs);
267 267
268 // Used by SortStringsUsingMethod. Invokes a method on the objects passed to 268 // Used by SortStringsUsingMethod. Invokes a method on the objects passed to
269 // operator (), comparing the string results using a collator. 269 // operator (), comparing the string results using a collator.
270 template <class T, class Method> 270 template <class T, class Method>
271 class StringMethodComparatorWithCollator : 271 class StringMethodComparatorWithCollator :
272 public std::binary_function<const std::wstring&, 272 public std::binary_function<const std::wstring&,
273 const std::wstring&, 273 const std::wstring&,
274 bool> { 274 bool> {
275 public: 275 public:
276 StringMethodComparatorWithCollator(Collator* collator, Method method) 276 StringMethodComparatorWithCollator(icu::Collator* collator, Method method)
277 : collator_(collator), 277 : collator_(collator),
278 method_(method) { } 278 method_(method) { }
279 279
280 // Returns true if lhs preceeds rhs. 280 // Returns true if lhs preceeds rhs.
281 bool operator() (T* lhs_t, T* rhs_t) { 281 bool operator() (T* lhs_t, T* rhs_t) {
282 return CompareStringWithCollator(collator_, (lhs_t->*method_)(), 282 return CompareStringWithCollator(collator_, (lhs_t->*method_)(),
283 (rhs_t->*method_)()) == UCOL_LESS; 283 (rhs_t->*method_)()) == UCOL_LESS;
284 } 284 }
285 285
286 private: 286 private:
287 Collator* collator_; 287 icu::Collator* collator_;
288 Method method_; 288 Method method_;
289 }; 289 };
290 290
291 // Used by SortStringsUsingMethod. Invokes a method on the objects passed to 291 // Used by SortStringsUsingMethod. Invokes a method on the objects passed to
292 // operator (), comparing the string results using <. 292 // operator (), comparing the string results using <.
293 template <class T, class Method> 293 template <class T, class Method>
294 class StringMethodComparator : public std::binary_function<const std::wstring&, 294 class StringMethodComparator : public std::binary_function<const std::wstring&,
295 const std::wstring&, 295 const std::wstring&,
296 bool> { 296 bool> {
297 public: 297 public:
298 explicit StringMethodComparator(Method method) : method_(method) { } 298 explicit StringMethodComparator(Method method) : method_(method) { }
299 299
300 // Returns true if lhs preceeds rhs. 300 // Returns true if lhs preceeds rhs.
301 bool operator() (T* lhs_t, T* rhs_t) { 301 bool operator() (T* lhs_t, T* rhs_t) {
302 return (lhs_t->*method_)() < (rhs_t->*method_)(); 302 return (lhs_t->*method_)() < (rhs_t->*method_)();
303 } 303 }
304 304
305 private: 305 private:
306 Method method_; 306 Method method_;
307 }; 307 };
308 308
309 // Sorts the objects in |elements| using the method |method|, which must return 309 // Sorts the objects in |elements| using the method |method|, which must return
310 // a string. Sorting is done using a collator, unless a collator can not be 310 // a string. Sorting is done using a collator, unless a collator can not be
311 // found in which case the strings are sorted using the operator <. 311 // found in which case the strings are sorted using the operator <.
312 template <class T, class Method> 312 template <class T, class Method>
313 void SortStringsUsingMethod(const std::wstring& locale, 313 void SortStringsUsingMethod(const std::wstring& locale,
314 std::vector<T*>* elements, 314 std::vector<T*>* elements,
315 Method method) { 315 Method method) {
316 UErrorCode error = U_ZERO_ERROR; 316 UErrorCode error = U_ZERO_ERROR;
317 Locale loc(WideToUTF8(locale).c_str()); 317 icu::Locale loc(WideToUTF8(locale).c_str());
318 scoped_ptr<Collator> collator(Collator::createInstance(loc, error)); 318 scoped_ptr<icu::Collator> collator(icu::Collator::createInstance(loc, error));
319 if (U_FAILURE(error)) { 319 if (U_FAILURE(error)) {
320 sort(elements->begin(), elements->end(), 320 sort(elements->begin(), elements->end(),
321 StringMethodComparator<T,Method>(method)); 321 StringMethodComparator<T,Method>(method));
322 return; 322 return;
323 } 323 }
324 324
325 std::sort(elements->begin(), elements->end(), 325 std::sort(elements->begin(), elements->end(),
326 StringMethodComparatorWithCollator<T,Method>(collator.get(), method)); 326 StringMethodComparatorWithCollator<T,Method>(collator.get(), method));
327 } 327 }
328 328
329 // Compares two elements' string keys and returns true if the first element's 329 // Compares two elements' string keys and returns true if the first element's
330 // string key is less than the second element's string key. The Element must 330 // string key is less than the second element's string key. The Element must
331 // have a method like the follow format to return the string key. 331 // have a method like the follow format to return the string key.
332 // const std::wstring& GetStringKey() const; 332 // const std::wstring& GetStringKey() const;
333 // This uses the locale specified in the constructor. 333 // This uses the locale specified in the constructor.
334 template <class Element> 334 template <class Element>
335 class StringComparator : public std::binary_function<const Element&, 335 class StringComparator : public std::binary_function<const Element&,
336 const Element&, 336 const Element&,
337 bool> { 337 bool> {
338 public: 338 public:
339 explicit StringComparator(Collator* collator) 339 explicit StringComparator(icu::Collator* collator)
340 : collator_(collator) { } 340 : collator_(collator) { }
341 341
342 // Returns true if lhs precedes rhs. 342 // Returns true if lhs precedes rhs.
343 bool operator()(const Element& lhs, const Element& rhs) { 343 bool operator()(const Element& lhs, const Element& rhs) {
344 const std::wstring& lhs_string_key = lhs.GetStringKey(); 344 const std::wstring& lhs_string_key = lhs.GetStringKey();
345 const std::wstring& rhs_string_key = rhs.GetStringKey(); 345 const std::wstring& rhs_string_key = rhs.GetStringKey();
346 346
347 return StringComparator<std::wstring>(collator_)(lhs_string_key, 347 return StringComparator<std::wstring>(collator_)(lhs_string_key,
348 rhs_string_key); 348 rhs_string_key);
349 } 349 }
350 350
351 private: 351 private:
352 Collator* collator_; 352 icu::Collator* collator_;
353 }; 353 };
354 354
355 // Specialization of operator() method for std::wstring version. 355 // Specialization of operator() method for std::wstring version.
356 template <> 356 template <>
357 bool StringComparator<std::wstring>::operator()(const std::wstring& lhs, 357 bool StringComparator<std::wstring>::operator()(const std::wstring& lhs,
358 const std::wstring& rhs); 358 const std::wstring& rhs);
359 359
360 // In place sorting of |elements| of a vector according to the string key of 360 // In place sorting of |elements| of a vector according to the string key of
361 // each element in the vector by using collation rules for |locale|. 361 // each element in the vector by using collation rules for |locale|.
362 // |begin_index| points to the start position of elements in the vector which 362 // |begin_index| points to the start position of elements in the vector which
363 // want to be sorted. |end_index| points to the end position of elements in the 363 // want to be sorted. |end_index| points to the end position of elements in the
364 // vector which want to be sorted 364 // vector which want to be sorted
365 template <class Element> 365 template <class Element>
366 void SortVectorWithStringKey(const std::string& locale, 366 void SortVectorWithStringKey(const std::string& locale,
367 std::vector<Element>* elements, 367 std::vector<Element>* elements,
368 unsigned int begin_index, 368 unsigned int begin_index,
369 unsigned int end_index, 369 unsigned int end_index,
370 bool needs_stable_sort) { 370 bool needs_stable_sort) {
371 DCHECK(begin_index >= 0 && begin_index < end_index && 371 DCHECK(begin_index >= 0 && begin_index < end_index &&
372 end_index <= static_cast<unsigned int>(elements->size())); 372 end_index <= static_cast<unsigned int>(elements->size()));
373 UErrorCode error = U_ZERO_ERROR; 373 UErrorCode error = U_ZERO_ERROR;
374 Locale loc(locale.c_str()); 374 icu::Locale loc(locale.c_str());
375 scoped_ptr<Collator> collator(Collator::createInstance(loc, error)); 375 scoped_ptr<icu::Collator> collator(icu::Collator::createInstance(loc, error));
376 if (U_FAILURE(error)) 376 if (U_FAILURE(error))
377 collator.reset(); 377 collator.reset();
378 StringComparator<Element> c(collator.get()); 378 StringComparator<Element> c(collator.get());
379 if (needs_stable_sort) { 379 if (needs_stable_sort) {
380 stable_sort(elements->begin() + begin_index, 380 stable_sort(elements->begin() + begin_index,
381 elements->begin() + end_index, 381 elements->begin() + end_index,
382 c); 382 c);
383 } else { 383 } else {
384 sort(elements->begin() + begin_index, elements->begin() + end_index, c); 384 sort(elements->begin() + begin_index, elements->begin() + end_index, c);
385 } 385 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 425
426 private: 426 private:
427 UBiDi* bidi_; 427 UBiDi* bidi_;
428 428
429 DISALLOW_COPY_AND_ASSIGN(BiDiLineIterator); 429 DISALLOW_COPY_AND_ASSIGN(BiDiLineIterator);
430 }; 430 };
431 431
432 } 432 }
433 433
434 #endif // APP_L10N_UTIL_H_ 434 #endif // APP_L10N_UTIL_H_
OLDNEW
« no previous file with comments | « app/gfx/text_elider_unittest.cc ('k') | app/l10n_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698