Files
clang-p2996/lldb/tools/lldb-mi/MICmdCmdData.h
Zachary Turner 97206d5727 Rename Error -> Status.
This renames the LLDB error class to Status, as discussed
on the lldb-dev mailing list.

A change of this magnitude cannot easily be done without
find and replace, but that has potential to catch unwanted
occurrences of common strings such as "Error".  Every effort
was made to find all the obvious things such as the word "Error"
appearing in a string, etc, but it's possible there are still
some lingering occurences left around.  Hopefully nothing too
serious.

llvm-svn: 302872
2017-05-12 04:51:55 +00:00

383 lines
12 KiB
C++

//===-- MICmdCmdData.h ------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// Overview: CMICmdCmdDataEvaluateExpression interface.
// CMICmdCmdDataDisassemble interface.
// CMICmdCmdDataReadMemoryBytes interface.
// CMICmdCmdDataReadMemory interface.
// CMICmdCmdDataListRegisterNames interface.
// CMICmdCmdDataListRegisterValues interface.
// CMICmdCmdDataListRegisterChanged interface.
// CMICmdCmdDataWriteMemoryBytes interface.
// CMICmdCmdDataWriteMemory interface.
// CMICmdCmdDataInfoLine interface.
//
// To implement new MI commands derive a new command class from the
// command base
// class. To enable the new command for interpretation add the new
// command class
// to the command factory. The files of relevance are:
// MICmdCommands.cpp
// MICmdBase.h / .cpp
// MICmdCmd.h / .cpp
// For an introduction to adding a new command see
// CMICmdCmdSupportInfoMiCmdQuery
// command class as an example.
//
#pragma once
// Third party headers:
#include "lldb/API/SBCommandReturnObject.h"
#include "lldb/API/SBError.h"
// In-house headers:
#include "MICmdBase.h"
#include "MICmnLLDBDebugSessionInfoVarObj.h"
#include "MICmnMIValueList.h"
#include "MICmnMIValueTuple.h"
//++
//============================================================================
// Details: MI command class. MI commands derived from the command base class.
// *this class implements MI command "data-evaluate-expression".
//--
class CMICmdCmdDataEvaluateExpression : public CMICmdBase {
// Statics:
public:
// Required by the CMICmdFactory when registering *this command
static CMICmdBase *CreateSelf();
// Methods:
public:
/* ctor */ CMICmdCmdDataEvaluateExpression();
// Overridden:
public:
// From CMICmdInvoker::ICmd
bool Execute() override;
bool Acknowledge() override;
bool ParseArgs() override;
// From CMICmnBase
/* dtor */ ~CMICmdCmdDataEvaluateExpression() override;
// Methods:
private:
bool HaveInvalidCharacterInExpression(const CMIUtilString &vrExpr,
char &vrwInvalidChar);
// Attributes:
private:
bool m_bExpressionValid; // True = yes is valid, false = not valid
bool m_bEvaluatedExpression; // True = yes is expression evaluated, false =
// failed
lldb::SBError m_Error; // Status object, which is examined when
// m_bEvaluatedExpression is false
CMIUtilString m_strValue;
CMICmnMIValueTuple m_miValueTuple;
bool m_bFoundInvalidChar; // True = yes found unexpected character in the
// expression, false = all ok
char m_cExpressionInvalidChar;
const CMIUtilString m_constStrArgExpr;
};
//++
//============================================================================
// Details: MI command class. MI commands derived from the command base class.
// *this class implements MI command "data-disassemble".
//--
class CMICmdCmdDataDisassemble : public CMICmdBase {
// Statics:
public:
// Required by the CMICmdFactory when registering *this command
static CMICmdBase *CreateSelf();
// Methods:
public:
/* ctor */ CMICmdCmdDataDisassemble();
// Overridden:
public:
// From CMICmdInvoker::ICmd
bool Execute() override;
bool Acknowledge() override;
bool ParseArgs() override;
// From CMICmnBase
/* dtor */ ~CMICmdCmdDataDisassemble() override;
// Attributes:
private:
const CMIUtilString
m_constStrArgAddrStart; // MI spec non mandatory, *this command mandatory
const CMIUtilString
m_constStrArgAddrEnd; // MI spec non mandatory, *this command mandatory
const CMIUtilString m_constStrArgMode;
CMICmnMIValueList m_miValueList;
};
//++
//============================================================================
// Details: MI command class. MI commands derived from the command base class.
// *this class implements MI command "data-read-memory-bytes".
//--
class CMICmdCmdDataReadMemoryBytes : public CMICmdBase {
// Statics:
public:
// Required by the CMICmdFactory when registering *this command
static CMICmdBase *CreateSelf();
// Methods:
public:
/* ctor */ CMICmdCmdDataReadMemoryBytes();
// Overridden:
public:
// From CMICmdInvoker::ICmd
bool Execute() override;
bool Acknowledge() override;
bool ParseArgs() override;
// From CMICmnBase
/* dtor */ ~CMICmdCmdDataReadMemoryBytes() override;
// Attributes:
private:
const CMIUtilString m_constStrArgByteOffset;
const CMIUtilString m_constStrArgAddrExpr;
const CMIUtilString m_constStrArgNumBytes;
unsigned char *m_pBufferMemory;
MIuint64 m_nAddrStart;
MIuint64 m_nAddrNumBytesToRead;
};
//++
//============================================================================
// Details: MI command class. MI commands derived from the command base class.
// *this class implements MI command "data-read-memory".
//--
class CMICmdCmdDataReadMemory : public CMICmdBase {
// Statics:
public:
// Required by the CMICmdFactory when registering *this command
static CMICmdBase *CreateSelf();
// Methods:
public:
/* ctor */ CMICmdCmdDataReadMemory();
// Overridden:
public:
// From CMICmdInvoker::ICmd
bool Execute() override;
bool Acknowledge() override;
// From CMICmnBase
/* dtor */ ~CMICmdCmdDataReadMemory() override;
};
//++
//============================================================================
// Details: MI command class. MI commands derived from the command base class.
// *this class implements MI command "data-list-register-names".
//--
class CMICmdCmdDataListRegisterNames : public CMICmdBase {
// Statics:
public:
// Required by the CMICmdFactory when registering *this command
static CMICmdBase *CreateSelf();
// Methods:
public:
/* ctor */ CMICmdCmdDataListRegisterNames();
// Overridden:
public:
// From CMICmdInvoker::ICmd
bool Execute() override;
bool Acknowledge() override;
bool ParseArgs() override;
// From CMICmnBase
/* dtor */ ~CMICmdCmdDataListRegisterNames() override;
// Methods:
private:
lldb::SBValue GetRegister(const MIuint vRegisterIndex) const;
// Attributes:
private:
const CMIUtilString m_constStrArgRegNo; // Not handled by *this command
CMICmnMIValueList m_miValueList;
};
//++
//============================================================================
// Details: MI command class. MI commands derived from the command base class.
// *this class implements MI command "data-list-register-values".
//--
class CMICmdCmdDataListRegisterValues : public CMICmdBase {
// Statics:
public:
// Required by the CMICmdFactory when registering *this command
static CMICmdBase *CreateSelf();
// Methods:
public:
/* ctor */ CMICmdCmdDataListRegisterValues();
// Overridden:
public:
// From CMICmdInvoker::ICmd
bool Execute() override;
bool Acknowledge() override;
bool ParseArgs() override;
// From CMICmnBase
/* dtor */ ~CMICmdCmdDataListRegisterValues() override;
// Methods:
private:
lldb::SBValue GetRegister(const MIuint vRegisterIndex) const;
void AddToOutput(const MIuint vnIndex, const lldb::SBValue &vrValue,
CMICmnLLDBDebugSessionInfoVarObj::varFormat_e veVarFormat);
// Attributes:
private:
const CMIUtilString m_constStrArgSkip; // Not handled by *this command
const CMIUtilString m_constStrArgFormat;
const CMIUtilString m_constStrArgRegNo;
CMICmnMIValueList m_miValueList;
};
//++
//============================================================================
// Details: MI command class. MI commands derived from the command base class.
// *this class implements MI command "data-list-changed-registers".
//--
class CMICmdCmdDataListRegisterChanged : public CMICmdBase {
// Statics:
public:
// Required by the CMICmdFactory when registering *this command
static CMICmdBase *CreateSelf();
// Methods:
public:
/* ctor */ CMICmdCmdDataListRegisterChanged();
// Overridden:
public:
// From CMICmdInvoker::ICmd
bool Execute() override;
bool Acknowledge() override;
// From CMICmnBase
/* dtor */ ~CMICmdCmdDataListRegisterChanged() override;
};
//++
//============================================================================
// Details: MI command class. MI commands derived from the command base class.
// *this class implements MI command "data-read-memory-bytes".
//--
class CMICmdCmdDataWriteMemoryBytes : public CMICmdBase {
// Statics:
public:
// Required by the CMICmdFactory when registering *this command
static CMICmdBase *CreateSelf();
// Methods:
public:
/* ctor */ CMICmdCmdDataWriteMemoryBytes();
// Overridden:
public:
// From CMICmdInvoker::ICmd
bool Execute() override;
bool Acknowledge() override;
bool ParseArgs() override;
// From CMICmnBase
/* dtor */ ~CMICmdCmdDataWriteMemoryBytes() override;
// Attributes:
private:
const CMIUtilString m_constStrArgAddr;
const CMIUtilString m_constStrArgContents;
const CMIUtilString m_constStrArgCount;
CMIUtilString m_strContents;
};
//++
//============================================================================
// Details: MI command class. MI commands derived from the command base class.
// *this class implements MI command "data-read-memory".
// Not specified in MI spec but Eclipse gives *this command.
//--
class CMICmdCmdDataWriteMemory : public CMICmdBase {
// Statics:
public:
// Required by the CMICmdFactory when registering *this command
static CMICmdBase *CreateSelf();
// Methods:
public:
/* ctor */ CMICmdCmdDataWriteMemory();
// Overridden:
public:
// From CMICmdInvoker::ICmd
bool Execute() override;
bool Acknowledge() override;
bool ParseArgs() override;
// From CMICmnBase
/* dtor */ ~CMICmdCmdDataWriteMemory() override;
// Attributes:
private:
const CMIUtilString m_constStrArgOffset; // Not specified in MI spec but
// Eclipse gives this option.
const CMIUtilString m_constStrArgAddr; // Not specified in MI spec but Eclipse
// gives this option.
const CMIUtilString
m_constStrArgD; // Not specified in MI spec but Eclipse gives this option.
const CMIUtilString m_constStrArgNumber; // Not specified in MI spec but
// Eclipse gives this option.
const CMIUtilString m_constStrArgContents; // Not specified in MI spec but
// Eclipse gives this option.
MIuint64 m_nAddr;
CMIUtilString m_strContents;
MIuint64 m_nCount;
unsigned char *m_pBufferMemory;
};
//++
//============================================================================
// Details: MI command class. MI commands derived from the command base class.
// *this class implements MI command "data-info-line".
// See MIExtensions.txt for details.
//--
class CMICmdCmdDataInfoLine : public CMICmdBase {
// Statics:
public:
// Required by the CMICmdFactory when registering *this command
static CMICmdBase *CreateSelf();
// Methods:
public:
/* ctor */ CMICmdCmdDataInfoLine();
// Overridden:
public:
// From CMICmdInvoker::ICmd
bool Execute() override;
bool Acknowledge() override;
bool ParseArgs() override;
// From CMICmnBase
/* dtor */ ~CMICmdCmdDataInfoLine() override;
// Attributes:
private:
lldb::SBCommandReturnObject m_lldbResult;
const CMIUtilString m_constStrArgLocation;
};