]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/tools/lldb-mi/MIUtilString.h
Update llvm, clang and lldb to 3.7.0 release.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / tools / lldb-mi / MIUtilString.h
1 //===-- MIUtilString.h ------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #pragma once
11
12 // Third party headers:
13 #include <string>
14 #include <vector>
15 #include <cinttypes>
16
17 // In-house headers:
18 #include "MIDataTypes.h"
19
20 //++ ============================================================================
21 // Details: MI common code utility class. Used to help handle text.
22 //          Derived from std::string
23 // Gotchas: None.
24 // Authors: Illya Rudkin 02/02/2014.
25 // Changes: None.
26 //--
27 class CMIUtilString : public std::string
28 {
29     // Typedefs:
30   public:
31     typedef std::vector<CMIUtilString> VecString_t;
32
33     // Static method:
34   public:
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);
43
44     // Methods:
45   public:
46     /* ctor */ CMIUtilString(void);
47     /* ctor */ CMIUtilString(const char *vpData);
48     /* ctor */ CMIUtilString(const char *const *vpData);
49     //
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;
70     //
71     CMIUtilString &operator=(const char *vpRhs);
72     CMIUtilString &operator=(const std::string &vrRhs);
73
74     // Overrideable:
75   public:
76     /* dtor */ virtual ~CMIUtilString(void);
77
78     // Static method:
79   private:
80     static CMIUtilString FormatPriv(const CMIUtilString &vrFormat, va_list vArgs);
81
82     // Methods:
83   private:
84     bool ExtractNumberFromHexadecimal(MIint64 &vwrNumber) const;
85     CMIUtilString RemoveRepeatedCharacters(size_t vnPos, const char vChar);
86     size_t FindFirstQuote(size_t vnPos) const;
87 };