xref: /aosp_15_r20/external/dynamic_depth/internal/strings/case.h (revision a62be0856e8e1158f43b03e41bbad10f4d005fde)
1*a62be085SSadaf Ebrahimi // This file contains string processing functions related to
2*a62be085SSadaf Ebrahimi // uppercase, lowercase, etc.
3*a62be085SSadaf Ebrahimi //
4*a62be085SSadaf Ebrahimi // These functions are for ASCII only. If you need to process UTF8 strings,
5*a62be085SSadaf Ebrahimi // take a look at files in i18n/utf8.
6*a62be085SSadaf Ebrahimi 
7*a62be085SSadaf Ebrahimi #ifndef DYNAMIC_DEPTH_INTERNAL_STRINGS_CASE_H_  // NOLINT
8*a62be085SSadaf Ebrahimi #define DYNAMIC_DEPTH_INTERNAL_STRINGS_CASE_H_  // NOLINT
9*a62be085SSadaf Ebrahimi 
10*a62be085SSadaf Ebrahimi #include <string>
11*a62be085SSadaf Ebrahimi 
12*a62be085SSadaf Ebrahimi #include "base/port.h"
13*a62be085SSadaf Ebrahimi 
14*a62be085SSadaf Ebrahimi namespace dynamic_depth {
15*a62be085SSadaf Ebrahimi 
16*a62be085SSadaf Ebrahimi // Returns true if the two strings are equal, case-insensitively speaking.
17*a62be085SSadaf Ebrahimi // Uses C/POSIX locale.
StringCaseEqual(const string & s1,const string & s2)18*a62be085SSadaf Ebrahimi inline bool StringCaseEqual(const string& s1, const string& s2) {
19*a62be085SSadaf Ebrahimi   return strcasecmp(s1.c_str(), s2.c_str()) == 0;
20*a62be085SSadaf Ebrahimi }
21*a62be085SSadaf Ebrahimi 
22*a62be085SSadaf Ebrahimi // ----------------------------------------------------------------------
23*a62be085SSadaf Ebrahimi // LowerString()
24*a62be085SSadaf Ebrahimi // LowerStringToBuf()
25*a62be085SSadaf Ebrahimi //    Convert the characters in "s" to lowercase.
26*a62be085SSadaf Ebrahimi //    Works only with ASCII strings; for UTF8, see ToLower in
27*a62be085SSadaf Ebrahimi //    util/utf8/public/unilib.h
28*a62be085SSadaf Ebrahimi //    Changes contents of "s".  LowerStringToBuf copies at most
29*a62be085SSadaf Ebrahimi //    "n" characters (including the terminating '\0')  from "s"
30*a62be085SSadaf Ebrahimi //    to another buffer.
31*a62be085SSadaf Ebrahimi // ----------------------------------------------------------------------
32*a62be085SSadaf Ebrahimi void LowerString(string* s);
33*a62be085SSadaf Ebrahimi 
34*a62be085SSadaf Ebrahimi namespace strings {
ToLower(const string & s)35*a62be085SSadaf Ebrahimi inline string ToLower(const string& s) {
36*a62be085SSadaf Ebrahimi   string out(s);
37*a62be085SSadaf Ebrahimi   LowerString(&out);
38*a62be085SSadaf Ebrahimi   return out;
39*a62be085SSadaf Ebrahimi }
40*a62be085SSadaf Ebrahimi 
41*a62be085SSadaf Ebrahimi }  // namespace strings
42*a62be085SSadaf Ebrahimi }  // namespace dynamic_depth
43*a62be085SSadaf Ebrahimi 
44*a62be085SSadaf Ebrahimi #endif  // DYNAMIC_DEPTH_INTERNAL_STRINGS_CASE_H_  // NOLINT
45