1 //===-- MIUtilString.h ------------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
12 // Third party headers:
18 #include "MIDataTypes.h"
20 //++ ============================================================================
21 // Details: MI common code utility class. Used to help handle text.
22 // Derived from std::string
24 // Authors: Illya Rudkin 02/02/2014.
27 class CMIUtilString : public std::string
31 typedef std::vector<CMIUtilString> VecString_t;
35 static CMIUtilString Format(const CMIUtilString vFormating, ...);
36 static CMIUtilString FormatBinary(const MIuint64 vnDecimal);
37 static CMIUtilString FormatValist(const CMIUtilString &vrFormating, va_list vArgs);
38 static bool IsAllValidAlphaAndNumeric(const char *vpText);
39 static bool Compare(const CMIUtilString &vrLhs, const CMIUtilString &vrRhs);
40 static CMIUtilString ConvertToPrintableASCII(const char vChar);
41 static CMIUtilString ConvertToPrintableASCII(const char16_t vChar16);
42 static CMIUtilString ConvertToPrintableASCII(const char32_t vChar32);
46 /* ctor */ CMIUtilString(void);
47 /* ctor */ CMIUtilString(const char *vpData);
48 /* ctor */ CMIUtilString(const char *const *vpData);
50 bool ExtractNumber(MIint64 &vwrNumber) const;
51 CMIUtilString FindAndReplace(const CMIUtilString &vFind, const CMIUtilString &vReplaceWith) const;
52 bool IsNumber(void) const;
53 bool IsHexadecimalNumber(void) const;
54 bool IsQuoted(void) const;
55 CMIUtilString RemoveRepeatedCharacters(const char vChar);
56 size_t Split(const CMIUtilString &vDelimiter, VecString_t &vwVecSplits) const;
57 size_t SplitConsiderQuotes(const CMIUtilString &vDelimiter, VecString_t &vwVecSplits) const;
58 size_t SplitLines(VecString_t &vwVecSplits) const;
59 CMIUtilString StripCREndOfLine(void) const;
60 CMIUtilString StripCRAll(void) const;
61 CMIUtilString Trim(void) const;
62 CMIUtilString Trim(const char vChar) const;
63 size_t FindFirst(const CMIUtilString &vrPattern, size_t vnPos = 0) const;
64 size_t FindFirst(const CMIUtilString &vrPattern, bool vbSkipQuotedText, bool &vrwbNotFoundClosedQuote,
65 size_t vnPos = 0) const;
66 size_t FindFirstNot(const CMIUtilString &vrPattern, size_t vnPos = 0) const;
67 CMIUtilString Escape(bool vbEscapeQuotes = false) const;
68 CMIUtilString AddSlashes(void) const;
69 CMIUtilString StripSlashes(void) const;
71 CMIUtilString &operator=(const char *vpRhs);
72 CMIUtilString &operator=(const std::string &vrRhs);
76 /* dtor */ virtual ~CMIUtilString(void);
80 static CMIUtilString FormatPriv(const CMIUtilString &vrFormat, va_list vArgs);
84 bool ExtractNumberFromHexadecimal(MIint64 &vwrNumber) const;
85 CMIUtilString RemoveRepeatedCharacters(size_t vnPos, const char vChar);
86 size_t FindFirstQuote(size_t vnPos) const;