summaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.h')
-rw-r--r--tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.h139
1 files changed, 139 insertions, 0 deletions
diff --git a/tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.h b/tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.h
new file mode 100644
index 000000000000..1db7bd8daa05
--- /dev/null
+++ b/tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.h
@@ -0,0 +1,139 @@
+//===-- MICmnLLDBDebugSessionInfoVarObj.h -----------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+//++
+// File: MICmnLLDBDebugSessionInfoVarObj.h
+//
+// Overview: CMICmnLLDBDebugSessionInfoVarObj 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 <map>
+#include <lldb/API/SBValue.h>
+
+// In-house headers:
+#include "MIUtilString.h"
+
+//++ ============================================================================
+// Details: MI debug session variable object. The static functionality in *this
+// class manages a map container of *these variable objects.
+// Gotchas: None.
+// Authors: Illya Rudkin 24/03/2014.
+// Changes: None.
+//--
+class CMICmnLLDBDebugSessionInfoVarObj
+{
+// Enums:
+public:
+ //++ ----------------------------------------------------------------------
+ // Details: Enumeration of a variable type that is not a composite type
+ //--
+ enum varFormat_e
+ {
+ // CODETAG_SESSIONINFO_VARFORMAT_ENUM
+ // *** Order is import here ***
+ eVarFormat_Invalid = 0,
+ eVarFormat_Binary,
+ eVarFormat_Octal,
+ eVarFormat_Decimal,
+ eVarFormat_Hex,
+ eVarFormat_Natural,
+ eVarFormat_count // Always last one
+ };
+
+ //++ ----------------------------------------------------------------------
+ // Details: Enumeration of a variable type by composite or internal type
+ //--
+ enum varType_e
+ {
+ eVarType_InValid = 0,
+ eVarType_Composite, // i.e. struct
+ eVarType_Internal, // i.e. int
+ eVarType_count // Always last one
+ };
+
+// Statics:
+public:
+ static varFormat_e GetVarFormatForString( const CMIUtilString & vrStrFormat );
+ static varFormat_e GetVarFormatForChar( const MIchar & vrcFormat );
+ static CMIUtilString GetValueStringFormatted( const lldb::SBValue & vrValue, const varFormat_e veVarFormat );
+ static void VarObjAdd( const CMICmnLLDBDebugSessionInfoVarObj & vrVarObj );
+ static void VarObjDelete( const CMIUtilString & vrVarName );
+ static bool VarObjGet( const CMIUtilString & vrVarName, CMICmnLLDBDebugSessionInfoVarObj & vrwVarObj );
+ static void VarObjUpdate( const CMICmnLLDBDebugSessionInfoVarObj & vrVarObj );
+ static void VarObjIdInc( void );
+ static MIuint VarObjIdGet( void );
+ static void VarObjIdResetToZero( void );
+ static void VarObjClear( void );
+
+// Methods:
+public:
+ /* ctor */ CMICmnLLDBDebugSessionInfoVarObj( void );
+ /* ctor */ CMICmnLLDBDebugSessionInfoVarObj( const CMIUtilString & vrStrNameReal, const CMIUtilString & vrStrName, const lldb::SBValue & vrValue );
+ /* ctor */ CMICmnLLDBDebugSessionInfoVarObj( const CMIUtilString & vrStrNameReal, const CMIUtilString & vrStrName, const lldb::SBValue & vrValue, const CMIUtilString & vrStrVarObjParentName );
+ /* ctor */ CMICmnLLDBDebugSessionInfoVarObj( const CMICmnLLDBDebugSessionInfoVarObj & vrOther );
+ /* ctor */ CMICmnLLDBDebugSessionInfoVarObj( CMICmnLLDBDebugSessionInfoVarObj & vrOther );
+ /* ctor */ CMICmnLLDBDebugSessionInfoVarObj( CMICmnLLDBDebugSessionInfoVarObj && vrOther );
+ //
+ CMICmnLLDBDebugSessionInfoVarObj & operator= ( const CMICmnLLDBDebugSessionInfoVarObj & vrOther );
+ CMICmnLLDBDebugSessionInfoVarObj & operator= ( CMICmnLLDBDebugSessionInfoVarObj && vrwOther );
+ //
+ const CMIUtilString & GetName( void ) const;
+ const CMIUtilString & GetNameReal( void ) const;
+ const CMIUtilString & GetValueFormatted( void ) const;
+ const lldb::SBValue & GetValue( void ) const;
+ varType_e GetType( void ) const;
+ bool SetVarFormat( const varFormat_e veVarFormat );
+ const CMIUtilString & GetVarParentName( void ) const;
+ void UpdateValue( void );
+
+// Overridden:
+public:
+ // From CMICmnBase
+ /* dtor */ virtual ~CMICmnLLDBDebugSessionInfoVarObj( void );
+
+// Typedefs:
+private:
+ typedef std::map< CMIUtilString, CMICmnLLDBDebugSessionInfoVarObj > MapKeyToVarObj_t;
+ typedef std::pair< CMIUtilString, CMICmnLLDBDebugSessionInfoVarObj > MapPairKeyToVarObj_t;
+
+// Statics:
+private:
+ static CMIUtilString GetStringFormatted( const MIuint64 vnValue, const MIchar * vpStrValueNatural, varFormat_e veVarFormat );
+
+// Methods:
+private:
+ bool CopyOther( const CMICmnLLDBDebugSessionInfoVarObj & vrOther );
+ bool MoveOther( CMICmnLLDBDebugSessionInfoVarObj & vrwOther );
+
+// Attributes:
+private:
+ static const MIchar * ms_aVarFormatStrings[];
+ static const MIchar * ms_aVarFormatChars[];
+ static MapKeyToVarObj_t ms_mapVarIdToVarObj;
+ static MIuint ms_nVarUniqueId;
+ //
+ // *** Upate the copy move constructors and assignment operator ***
+ varFormat_e m_eVarFormat;
+ varType_e m_eVarType;
+ CMIUtilString m_strName;
+ lldb::SBValue m_SBValue;
+ CMIUtilString m_strNameReal;
+ CMIUtilString m_strFormattedValue;
+ CMIUtilString m_strVarObjParentName;
+ // *** Upate the copy move constructors and assignment operator ***
+};