summaryrefslogtreecommitdiffstats
path: root/lldb/tools/lldb-mi/MIUtilVariant.h
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/tools/lldb-mi/MIUtilVariant.h')
-rw-r--r--lldb/tools/lldb-mi/MIUtilVariant.h278
1 files changed, 134 insertions, 144 deletions
diff --git a/lldb/tools/lldb-mi/MIUtilVariant.h b/lldb/tools/lldb-mi/MIUtilVariant.h
index 7fddb9ffda2..01dd615aad6 100644
--- a/lldb/tools/lldb-mi/MIUtilVariant.h
+++ b/lldb/tools/lldb-mi/MIUtilVariant.h
@@ -12,128 +12,127 @@
// In-house headers:
#include "MIDataTypes.h"
-//++ ============================================================================
+//++
+//============================================================================
// Details: MI common code utility class. The class implements behaviour of a
// variant object which holds any data object of type T. A copy of the
// data object specified is made and stored in *this wrapper. When the
// *this object is destroyed the data object hold within calls its
// destructor should it have one.
//--
-class CMIUtilVariant
-{
- // Methods:
- public:
- /* ctor */ CMIUtilVariant();
- /* ctor */ CMIUtilVariant(const CMIUtilVariant &vrOther);
- /* ctor */ CMIUtilVariant(CMIUtilVariant &vrOther);
- /* ctor */ CMIUtilVariant(CMIUtilVariant &&vrwOther);
- /* dtor */ ~CMIUtilVariant();
-
- template <typename T> void Set(const T &vArg);
- template <typename T> T *Get() const;
+class CMIUtilVariant {
+ // Methods:
+public:
+ /* ctor */ CMIUtilVariant();
+ /* ctor */ CMIUtilVariant(const CMIUtilVariant &vrOther);
+ /* ctor */ CMIUtilVariant(CMIUtilVariant &vrOther);
+ /* ctor */ CMIUtilVariant(CMIUtilVariant &&vrwOther);
+ /* dtor */ ~CMIUtilVariant();
- CMIUtilVariant &operator=(const CMIUtilVariant &vrOther);
- CMIUtilVariant &operator=(CMIUtilVariant &&vrwOther);
-
- // Classes:
- private:
- //++ ----------------------------------------------------------------------
- // Details: Base class wrapper to hold the variant's data object when
- // assigned to it by the Set() function. Do not use the CDataObjectBase
- // to create objects, use only CDataObjectBase derived objects,
- // see CDataObject() class.
- //--
- class CDataObjectBase
- {
- // Methods:
- public:
- /* ctor */ CDataObjectBase();
- /* ctor */ CDataObjectBase(const CDataObjectBase &vrOther);
- /* ctor */ CDataObjectBase(CDataObjectBase &vrOther);
- /* ctor */ CDataObjectBase(CDataObjectBase &&vrwOther);
- //
- CDataObjectBase &operator=(const CDataObjectBase &vrOther);
- CDataObjectBase &operator=(CDataObjectBase &&vrwOther);
+ template <typename T> void Set(const T &vArg);
+ template <typename T> T *Get() const;
- // Overrideable:
- public:
- virtual ~CDataObjectBase();
- virtual CDataObjectBase *CreateCopyOfSelf();
- virtual bool GetIsDerivedClass() const;
+ CMIUtilVariant &operator=(const CMIUtilVariant &vrOther);
+ CMIUtilVariant &operator=(CMIUtilVariant &&vrwOther);
- // Overrideable:
- protected:
- virtual void Copy(const CDataObjectBase &vrOther);
- virtual void Destroy();
- };
+ // Classes:
+private:
+ //++ ----------------------------------------------------------------------
+ // Details: Base class wrapper to hold the variant's data object when
+ // assigned to it by the Set() function. Do not use the
+ // CDataObjectBase
+ // to create objects, use only CDataObjectBase derived objects,
+ // see CDataObject() class.
+ //--
+ class CDataObjectBase {
+ // Methods:
+ public:
+ /* ctor */ CDataObjectBase();
+ /* ctor */ CDataObjectBase(const CDataObjectBase &vrOther);
+ /* ctor */ CDataObjectBase(CDataObjectBase &vrOther);
+ /* ctor */ CDataObjectBase(CDataObjectBase &&vrwOther);
+ //
+ CDataObjectBase &operator=(const CDataObjectBase &vrOther);
+ CDataObjectBase &operator=(CDataObjectBase &&vrwOther);
- //++ ----------------------------------------------------------------------
- // Details: Derived from CDataObjectBase, this class is the wrapper for the
- // data object as it has an aggregate of type T which is a copy
- // of the data object assigned to the variant object.
- //--
- template <typename T> class CDataObject : public CDataObjectBase
- {
- // Methods:
- public:
- /* ctor */ CDataObject();
- /* ctor */ CDataObject(const T &vArg);
- /* ctor */ CDataObject(const CDataObject &vrOther);
- /* ctor */ CDataObject(CDataObject &vrOther);
- /* ctor */ CDataObject(CDataObject &&vrwOther);
- //
- CDataObject &operator=(const CDataObject &vrOther);
- CDataObject &operator=(CDataObject &&vrwOther);
- //
- T &GetDataObject();
+ // Overrideable:
+ public:
+ virtual ~CDataObjectBase();
+ virtual CDataObjectBase *CreateCopyOfSelf();
+ virtual bool GetIsDerivedClass() const;
- // Overridden:
- public:
- // From CDataObjectBase
- ~CDataObject() override;
- CDataObjectBase *CreateCopyOfSelf() override;
- bool GetIsDerivedClass() const override;
+ // Overrideable:
+ protected:
+ virtual void Copy(const CDataObjectBase &vrOther);
+ virtual void Destroy();
+ };
- // Overrideable:
- private:
- virtual void Duplicate(const CDataObject &vrOther);
+ //++ ----------------------------------------------------------------------
+ // Details: Derived from CDataObjectBase, this class is the wrapper for the
+ // data object as it has an aggregate of type T which is a copy
+ // of the data object assigned to the variant object.
+ //--
+ template <typename T> class CDataObject : public CDataObjectBase {
+ // Methods:
+ public:
+ /* ctor */ CDataObject();
+ /* ctor */ CDataObject(const T &vArg);
+ /* ctor */ CDataObject(const CDataObject &vrOther);
+ /* ctor */ CDataObject(CDataObject &vrOther);
+ /* ctor */ CDataObject(CDataObject &&vrwOther);
+ //
+ CDataObject &operator=(const CDataObject &vrOther);
+ CDataObject &operator=(CDataObject &&vrwOther);
+ //
+ T &GetDataObject();
- // Overridden:
- private:
- // From CDataObjectBase
- void Destroy() override;
+ // Overridden:
+ public:
+ // From CDataObjectBase
+ ~CDataObject() override;
+ CDataObjectBase *CreateCopyOfSelf() override;
+ bool GetIsDerivedClass() const override;
- // Attributes:
- private:
- T m_dataObj;
- };
+ // Overrideable:
+ private:
+ virtual void Duplicate(const CDataObject &vrOther);
- // Methods
+ // Overridden:
private:
- void Destroy();
- void Copy(const CMIUtilVariant &vrOther);
+ // From CDataObjectBase
+ void Destroy() override;
// Attributes:
private:
- CDataObjectBase *m_pDataObject;
+ T m_dataObj;
+ };
+
+ // Methods
+private:
+ void Destroy();
+ void Copy(const CMIUtilVariant &vrOther);
+
+ // Attributes:
+private:
+ CDataObjectBase *m_pDataObject;
};
//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
-//++ ------------------------------------------------------------------------------------
+//++
+//------------------------------------------------------------------------------------
// Details: CDataObject constructor.
// Type: Method.
// Args: T - The object's type.
// Return: None.
// Throws: None.
//--
-template <typename T> CMIUtilVariant::CDataObject<T>::CDataObject()
-{
-}
+template <typename T> CMIUtilVariant::CDataObject<T>::CDataObject() {}
-//++ ------------------------------------------------------------------------------------
+//++
+//------------------------------------------------------------------------------------
// Details: CDataObject constructor.
// Type: Method.
// Args: T - The object's type.
@@ -141,38 +140,37 @@ template <typename T> CMIUtilVariant::CDataObject<T>::CDataObject()
// Return: None.
// Throws: None.
//--
-template <typename T> CMIUtilVariant::CDataObject<T>::CDataObject(const T &vArg)
-{
- m_dataObj = vArg;
+template <typename T>
+CMIUtilVariant::CDataObject<T>::CDataObject(const T &vArg) {
+ m_dataObj = vArg;
}
-//++ ------------------------------------------------------------------------------------
+//++
+//------------------------------------------------------------------------------------
// Details: CDataObject destructor.
// Type: Overridden.
// Args: T - The object's type.
// Return: None.
// Throws: None.
//--
-template <typename T> CMIUtilVariant::CDataObject<T>::~CDataObject()
-{
- Destroy();
+template <typename T> CMIUtilVariant::CDataObject<T>::~CDataObject() {
+ Destroy();
}
-//++ ------------------------------------------------------------------------------------
+//++
+//------------------------------------------------------------------------------------
// Details: Retrieve the data object hold by *this object wrapper.
// Type: Method.
// Args: T - The object's type.
// Return: T & - Reference to the data object.
// Throws: None.
//--
-template <typename T>
-T &
-CMIUtilVariant::CDataObject<T>::GetDataObject()
-{
- return m_dataObj;
+template <typename T> T &CMIUtilVariant::CDataObject<T>::GetDataObject() {
+ return m_dataObj;
}
-//++ ------------------------------------------------------------------------------------
+//++
+//------------------------------------------------------------------------------------
// Details: Create a new copy of *this class.
// Type: Overridden.
// Args: T - The object's type.
@@ -181,14 +179,14 @@ CMIUtilVariant::CDataObject<T>::GetDataObject()
//--
template <typename T>
CMIUtilVariant::CDataObjectBase *
-CMIUtilVariant::CDataObject<T>::CreateCopyOfSelf()
-{
- CDataObject *pCopy = new CDataObject<T>(m_dataObj);
+CMIUtilVariant::CDataObject<T>::CreateCopyOfSelf() {
+ CDataObject *pCopy = new CDataObject<T>(m_dataObj);
- return pCopy;
+ return pCopy;
}
-//++ ------------------------------------------------------------------------------------
+//++
+//------------------------------------------------------------------------------------
// Details: Determine if *this object is a derived from CDataObjectBase.
// Type: Overridden.
// Args: T - The object's type.
@@ -197,13 +195,12 @@ CMIUtilVariant::CDataObject<T>::CreateCopyOfSelf()
// Throws: None.
//--
template <typename T>
-bool
-CMIUtilVariant::CDataObject<T>::GetIsDerivedClass() const
-{
- return true;
+bool CMIUtilVariant::CDataObject<T>::GetIsDerivedClass() const {
+ return true;
}
-//++ ------------------------------------------------------------------------------------
+//++
+//------------------------------------------------------------------------------------
// Details: Perform a bitwise copy of *this object.
// Type: Overrideable.
// Args: T - The object's type.
@@ -212,32 +209,29 @@ CMIUtilVariant::CDataObject<T>::GetIsDerivedClass() const
// Throws: None.
//--
template <typename T>
-void
-CMIUtilVariant::CDataObject<T>::Duplicate(const CDataObject &vrOther)
-{
- CDataObjectBase::Copy(vrOther);
- m_dataObj = vrOther.m_dataObj;
+void CMIUtilVariant::CDataObject<T>::Duplicate(const CDataObject &vrOther) {
+ CDataObjectBase::Copy(vrOther);
+ m_dataObj = vrOther.m_dataObj;
}
-//++ ------------------------------------------------------------------------------------
+//++
+//------------------------------------------------------------------------------------
// Details: Release any resources used by *this object.
// Type: Overridden.
// Args: None.
// Return: None.
// Throws: None.
//--
-template <typename T>
-void
-CMIUtilVariant::CDataObject<T>::Destroy()
-{
- CDataObjectBase::Destroy();
+template <typename T> void CMIUtilVariant::CDataObject<T>::Destroy() {
+ CDataObjectBase::Destroy();
}
//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
-//++ ------------------------------------------------------------------------------------
+//++
+//------------------------------------------------------------------------------------
// Details: Assign to the variant an object of a specified type.
// Type: Template method.
// Args: T - The object's type.
@@ -245,30 +239,26 @@ CMIUtilVariant::CDataObject<T>::Destroy()
// Return: None.
// Throws: None.
//--
-template <typename T>
-void
-CMIUtilVariant::Set(const T &vArg)
-{
- m_pDataObject = new CDataObject<T>(vArg);
+template <typename T> void CMIUtilVariant::Set(const T &vArg) {
+ m_pDataObject = new CDataObject<T>(vArg);
}
-//++ ------------------------------------------------------------------------------------
+//++
+//------------------------------------------------------------------------------------
// Details: Retrieve the data object from *this variant.
// Type: Template method.
// Args: T - The object's type.
-// Return: T * - Pointer the data object, NULL = data object not assigned to *this variant.
+// Return: T * - Pointer the data object, NULL = data object not assigned to
+// *this variant.
// Throws: None.
//--
-template <typename T>
-T *
-CMIUtilVariant::Get() const
-{
- if ((m_pDataObject != nullptr) && m_pDataObject->GetIsDerivedClass())
- {
- CDataObject<T> *pDataObj = static_cast<CDataObject<T> *>(m_pDataObject);
- return &pDataObj->GetDataObject();
- }
+template <typename T> T *CMIUtilVariant::Get() const {
+ if ((m_pDataObject != nullptr) && m_pDataObject->GetIsDerivedClass()) {
+ CDataObject<T> *pDataObj = static_cast<CDataObject<T> *>(m_pDataObject);
+ return &pDataObj->GetDataObject();
+ }
- // Do not use a CDataObjectBase object, use only CDataObjectBase derived objects
- return nullptr;
+ // Do not use a CDataObjectBase object, use only CDataObjectBase derived
+ // objects
+ return nullptr;
}
OpenPOWER on IntegriCloud