aboutsummaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MIUtilString.h
blob: 162dcbf68852e51cfee58150639ca73cfd958fb4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//===-- MIUtilString.h ------------------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

//++
// File:        MIUtilString.h
//
// Overview:    CMIUtilString interface.
//
// Environment: Compilers:  Visual C++ 12.
//                          gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
//              Libraries:  See MIReadmetxt.
//
// Copyright:   None.
//--

#pragma once

// Third party headers:
#include <string>
#include <vector>

// In-house headers:
#include "MIDataTypes.h"

//++ ============================================================================
// Details: MI common code utility class. Used to help handle text.
//          Derived from std::string
// Gotchas: None.
// Authors: Illya Rudkin 02/02/2014.
// Changes: None.
//--
class CMIUtilString : public std::string
{
    // Typdefs:
  public:
    typedef std::vector<CMIUtilString> VecString_t;

    // Static method:
  public:
    static CMIUtilString Format(const CMIUtilString vFormating, ...);
    static CMIUtilString FormatBinary(const MIuint64 vnDecimal);
    static CMIUtilString FormatValist(const CMIUtilString &vrFormating, va_list vArgs);
    static bool IsAllValidAlphaAndNumeric(const MIchar &vrText);
    static bool Compare(const CMIUtilString &vrLhs, const CMIUtilString &vrRhs);

    // Methods:
  public:
    /* ctor */ CMIUtilString(void);
    /* ctor */ CMIUtilString(const MIchar *vpData);
    /* ctor */ CMIUtilString(const MIchar *const *vpData);
    //
    bool ExtractNumber(MIint64 &vwrNumber) const;
    CMIUtilString FindAndReplace(const CMIUtilString &vFind, const CMIUtilString &vReplaceWith) const;
    bool IsNumber(void) const;
    bool IsQuoted(void) const;
    CMIUtilString RemoveRepeatedCharacters(const MIchar vChar);
    MIuint Split(const CMIUtilString &vDelimiter, VecString_t &vwVecSplits) const;
    MIuint SplitConsiderQuotes(const CMIUtilString &vDelimiter, VecString_t &vwVecSplits) const;
    CMIUtilString StripCREndOfLine(void) const;
    CMIUtilString StripCRAll(void) const;
    CMIUtilString Trim(void) const;
    CMIUtilString Trim(const MIchar vChar) const;
    //
    CMIUtilString &operator=(const MIchar *vpRhs);
    CMIUtilString &operator=(const std::string &vrRhs);

    // Overrideable:
  public:
    /* dtor */ virtual ~CMIUtilString(void);

    // Static method:
  private:
    static CMIUtilString FormatPriv(const CMIUtilString &vrFormat, va_list vArgs);

    // Methods:
  private:
    bool ExtractNumberFromHexadecimal(MIint64 &vwrNumber) const;
    CMIUtilString RemoveRepeatedCharacters(const MIint vnPos, const MIchar vChar);
};