diff options
Diffstat (limited to 'tools/lldb-mi/MIUtilString.h')
-rw-r--r-- | tools/lldb-mi/MIUtilString.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tools/lldb-mi/MIUtilString.h b/tools/lldb-mi/MIUtilString.h new file mode 100644 index 000000000000..30b027a9d314 --- /dev/null +++ b/tools/lldb-mi/MIUtilString.h @@ -0,0 +1,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 & vrFormating, ... ); + 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 ); +}; |