summaryrefslogtreecommitdiff
path: root/contrib/llvm-project/lldb/tools/lldb-mi/MIUtilVariant.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/lldb/tools/lldb-mi/MIUtilVariant.cpp')
-rw-r--r--contrib/llvm-project/lldb/tools/lldb-mi/MIUtilVariant.cpp344
1 files changed, 344 insertions, 0 deletions
diff --git a/contrib/llvm-project/lldb/tools/lldb-mi/MIUtilVariant.cpp b/contrib/llvm-project/lldb/tools/lldb-mi/MIUtilVariant.cpp
new file mode 100644
index 000000000000..062dce80c4b9
--- /dev/null
+++ b/contrib/llvm-project/lldb/tools/lldb-mi/MIUtilVariant.cpp
@@ -0,0 +1,344 @@
+//===-- MIUtilVariant.cpp----------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// In-house headers:
+#include "MIUtilVariant.h"
+
+//++
+// Details: CDataObjectBase constructor.
+// Type: Method.
+// Args: None.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::CDataObjectBase::CDataObjectBase() {}
+
+//++
+// Details: CDataObjectBase copy constructor.
+// Type: Method.
+// Args: vrOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::CDataObjectBase::CDataObjectBase(
+ const CDataObjectBase &vrOther) {
+ MIunused(vrOther);
+}
+
+//++
+// Details: CDataObjectBase copy constructor.
+// Type: Method.
+// Args: vrOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::CDataObjectBase::CDataObjectBase(CDataObjectBase &vrOther) {
+ MIunused(vrOther);
+}
+
+//++
+// Details: CDataObjectBase move constructor.
+// Type: Method.
+// Args: vrwOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::CDataObjectBase::CDataObjectBase(CDataObjectBase &&vrwOther) {
+ MIunused(vrwOther);
+}
+
+//++
+// Details: CDataObjectBase destructor.
+// Type: Overrideable.
+// Args: None.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::CDataObjectBase::~CDataObjectBase() { Destroy(); }
+
+//++
+// Details: CDataObjectBase copy assignment.
+// Type: Method.
+// Args: vrOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::CDataObjectBase &CMIUtilVariant::CDataObjectBase::
+operator=(const CDataObjectBase &vrOther) {
+ Copy(vrOther);
+ return *this;
+}
+
+//++
+// Details: CDataObjectBase move assignment.
+// Type: Method.
+// Args: vrwOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::CDataObjectBase &CMIUtilVariant::CDataObjectBase::
+operator=(CDataObjectBase &&vrwOther) {
+ Copy(vrwOther);
+ vrwOther.Destroy();
+ return *this;
+}
+
+//++
+// Details: Create a new copy of *this class.
+// Type: Overrideable.
+// Args: None.
+// Return: CDataObjectBase * - Pointer to a new object.
+// Throws: None.
+//--
+CMIUtilVariant::CDataObjectBase *
+CMIUtilVariant::CDataObjectBase::CreateCopyOfSelf() {
+ // Override to implement copying of variant's data object
+ return new CDataObjectBase();
+}
+
+//++
+// Details: Determine if *this object is a derived from CDataObjectBase.
+// Type: Overrideable.
+// Args: None.
+// Return: bool - True = *this is derived from CDataObjectBase, false =
+// *this is instance of the this base class.
+// Throws: None.
+//--
+bool CMIUtilVariant::CDataObjectBase::GetIsDerivedClass() const {
+ // Override to in the derived class and return true
+ return false;
+}
+
+//++
+// Details: Perform a bitwise copy of *this object.
+// Type: Overrideable.
+// Args: vrOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+void CMIUtilVariant::CDataObjectBase::Copy(const CDataObjectBase &vrOther) {
+ // Override to implement
+ MIunused(vrOther);
+}
+
+//++
+// Details: Release any resources used by *this object.
+// Type: Overrideable.
+// Args: None.
+// Return: None.
+// Throws: None.
+//--
+void CMIUtilVariant::CDataObjectBase::Destroy() {
+ // Do nothing - override to implement
+}
+
+
+//++
+// Details: CDataObject copy constructor.
+// Type: Method.
+// Args: T - The object's type.
+// vrOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+template <typename T>
+CMIUtilVariant::CDataObject<T>::CDataObject(const CDataObject &vrOther) {
+ if (this == &vrOther)
+ return;
+ Copy(vrOther);
+}
+
+//++
+// Details: CDataObject copy constructor.
+// Type: Method.
+// Args: T - The object's type.
+// vrOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+template <typename T>
+CMIUtilVariant::CDataObject<T>::CDataObject(CDataObject &vrOther) {
+ if (this == &vrOther)
+ return;
+ Copy(vrOther);
+}
+
+//++
+// Details: CDataObject move constructor.
+// Type: Method.
+// Args: T - The object's type.
+// vrwOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+template <typename T>
+CMIUtilVariant::CDataObject<T>::CDataObject(CDataObject &&vrwOther) {
+ if (this == &vrwOther)
+ return;
+ Copy(vrwOther);
+ vrwOther.Destroy();
+}
+
+//++
+// Details: CDataObject copy assignment.
+// Type: Method.
+// Args: T - The object's type.
+// vrOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+template <typename T>
+CMIUtilVariant::CDataObject<T> &CMIUtilVariant::CDataObject<T>::
+operator=(const CDataObject &vrOther) {
+ if (this == &vrOther)
+ return *this;
+ Copy(vrOther);
+ return *this;
+}
+
+//++
+// Details: CDataObject move assignment.
+// Type: Method.
+// Args: T - The object's type.
+// vrwOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+template <typename T>
+CMIUtilVariant::CDataObject<T> &CMIUtilVariant::CDataObject<T>::
+operator=(CDataObject &&vrwOther) {
+ if (this == &vrwOther)
+ return *this;
+ Copy(vrwOther);
+ vrwOther.Destroy();
+ return *this;
+}
+
+
+//++
+// Details: CMIUtilVariant constructor.
+// Type: Method.
+// Args: None.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::CMIUtilVariant() : m_pDataObject(nullptr) {}
+
+//++
+// Details: CMIUtilVariant copy constructor.
+// Type: Method.
+// Args: vrOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::CMIUtilVariant(const CMIUtilVariant &vrOther)
+ : m_pDataObject(nullptr) {
+ if (this == &vrOther)
+ return;
+
+ Copy(vrOther);
+}
+
+//++
+// Details: CMIUtilVariant copy constructor.
+// Type: Method.
+// Args: vrOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::CMIUtilVariant(CMIUtilVariant &vrOther)
+ : m_pDataObject(nullptr) {
+ if (this == &vrOther)
+ return;
+
+ Copy(vrOther);
+}
+
+//++
+// Details: CMIUtilVariant move constructor.
+// Type: Method.
+// Args: vrwOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::CMIUtilVariant(CMIUtilVariant &&vrwOther)
+ : m_pDataObject(nullptr) {
+ if (this == &vrwOther)
+ return;
+
+ Copy(vrwOther);
+ vrwOther.Destroy();
+}
+
+//++
+// Details: CMIUtilVariant destructor.
+// Type: Method.
+// Args: None.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant::~CMIUtilVariant() { Destroy(); }
+
+//++
+// Details: CMIUtilVariant copy assignment.
+// Type: Method.
+// Args: vrOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant &CMIUtilVariant::operator=(const CMIUtilVariant &vrOther) {
+ if (this == &vrOther)
+ return *this;
+
+ Copy(vrOther);
+ return *this;
+}
+
+//++
+// Details: CMIUtilVariant move assignment.
+// Type: Method.
+// Args: vrwOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilVariant &CMIUtilVariant::operator=(CMIUtilVariant &&vrwOther) {
+ if (this == &vrwOther)
+ return *this;
+
+ Copy(vrwOther);
+ vrwOther.Destroy();
+ return *this;
+}
+
+//++
+// Details: Release the resources used by *this object.
+// Type: Method.
+// Args: None.
+// Return: None.
+// Throws: None.
+//--
+void CMIUtilVariant::Destroy() {
+ if (m_pDataObject != nullptr)
+ delete m_pDataObject;
+ m_pDataObject = nullptr;
+}
+
+//++
+// Details: Bitwise copy another data object to *this variant object.
+// Type: Method.
+// Args: vrOther - (R) The other object.
+// Return: None.
+// Throws: None.
+//--
+void CMIUtilVariant::Copy(const CMIUtilVariant &vrOther) {
+ Destroy();
+
+ if (vrOther.m_pDataObject != nullptr) {
+ m_pDataObject = vrOther.m_pDataObject->CreateCopyOfSelf();
+ }
+}