A lot of comments in LLDB are surrounded by an ASCII line to delimit the begging and end of the comment. Its use is not really consistent across the code base, sometimes the lines are longer, sometimes they are shorter and sometimes they are omitted. Furthermore, it looks kind of weird with the 80 column limit, where the comment actually extends past the line, but not by much. Furthermore, when /// is used for Doxygen comments, it looks particularly odd. And when // is used, it incorrectly gives the impression that it's actually a Doxygen comment. I assume these lines were added to improve distinguishing between comments and code. However, given that todays editors and IDEs do a great job at highlighting comments, I think it's worth to drop this for the sake of consistency. The alternative is fixing all the inconsistencies, which would create a lot more churn. Differential revision: https://reviews.llvm.org/D60508 llvm-svn: 358135
345 lines
7.8 KiB
C++
345 lines
7.8 KiB
C++
//===-- 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();
|
|
}
|
|
}
|