1 // =================================
 2 // Copyright (c) 2021 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 #ifndef SOULNG_UTIL_TEXTUTILS_INCLUDED
 7 #define SOULNG_UTIL_TEXTUTILS_INCLUDED
 8 #include <soulng/util/UtilApi.hpp>
 9 #include <string>
10 #include <vector>
11 #include <stdint.h>
12 
13 namespace soulng { namespace util {
14 
15 enum class FormatWidth
16 {
17     exactmin
18 };
19 
20 enum class FormatJustify
21 {
22     leftright
23 };
24 
25 std::string Trim(const std::string& s);
26 std::string TrimAll(const std::string& s);
27 std::u32string Trim(const std::u32string& s);
28 std::u32string TrimAll(const std::u32string& s);
29 std::vector<std::string> Split(const std::string& schar c);
30 std::string Replace(const std::string& schar oldCharchar newChar);
31 std::string Replace(const std::string& sconst std::string& oldStringconst std::string& newString);
32 std::string HexEscape(char c);
33 std::u32string HexEscape(uint32_t c);
34 std::string CharStr(char c);
35 std::u32string CharStr(char32_t c);
36 std::string StringStr(const std::string& s);
37 std::u32string StringStr(const std::u32string& s);
38 std::string MakeStringLiteral(const std::string& s);
39 std::u32string MakeStringLiteral(const std::u32string& s);
40 std::string QuotedPath(const std::string& path);
41 bool LastComponentsEqual(const std::string& s0const std::string& s1char componentSeparator);
42 bool StartsWith(const std::string& sconst std::string& prefix);
43 bool StartsWith(const std::u32string& sconst std::u32string& prefix);
44 bool EndsWith(const std::string& sconst std::string& suffix);
45 bool EndsWith(const std::u32string& sconst std::u32string& suffix);
46 std::string NarrowString(const char* strint length);
47 std::string ToUpper(const std::string& s);
48 std::string ToLower(const std::string& s);
49 std::string ToString(double x);
50 std::string ToString(double xint maxNumDecimals);
51 std::string ToString(double xint minNumDecimalsint maxNumDecimals);
52 std::string ToHexString(uint8_t x);
53 std::string ToHexString(uint16_t x);
54 std::string ToHexString(uint32_t x);
55 std::string ToHexString(uint64_t x);
56 uint8_t ParseHexByte(const std::string& hexByteStr);
57 int Log10(int n);
58 std::u32string FormatNumber(int nint numDigits);
59 std::string CurrentThreadIdStr();
60 std::string Format(const std::string& sint width);
61 std::string Format(const std::string& sint widthFormatJustify justify);
62 std::string Format(const std::string& sint widthFormatWidth fw);
63 std::string Format(const std::string& sint widthFormatWidth fwFormatJustify justify);
64 std::string Format(const std::string& sint widthFormatWidth fwFormatJustify justifychar fillChar);
65 std::string PlatformStringToUtf8(const std::string& platformString);
66 
67 } } // namespace soulng::util
68 
69 #endif // SOULNG_UTIL_TEXTUTILS_INCLUDED