Path: blob/main/contrib/llvm-project/lldb/source/API/SBScriptObject.cpp
39587 views
//===-- SBScriptObject.cpp ------------------------------------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#include "lldb/API/SBScriptObject.h"910#include "Utils.h"1112#include "lldb/Interpreter/ScriptObject.h"13#include "lldb/Utility/Instrumentation.h"1415using namespace lldb;16using namespace lldb_private;1718SBScriptObject::SBScriptObject(const ScriptObjectPtr ptr,19lldb::ScriptLanguage lang)20: m_opaque_up(std::make_unique<lldb_private::ScriptObject>(ptr, lang)) {21LLDB_INSTRUMENT_VA(this, ptr, lang);22}2324SBScriptObject::SBScriptObject(const SBScriptObject &rhs)25: m_opaque_up(new ScriptObject(nullptr, eScriptLanguageNone)) {26LLDB_INSTRUMENT_VA(this, rhs);2728m_opaque_up = clone(rhs.m_opaque_up);29}30SBScriptObject::~SBScriptObject() = default;3132const SBScriptObject &SBScriptObject::operator=(const SBScriptObject &rhs) {33LLDB_INSTRUMENT_VA(this, rhs);3435if (this != &rhs)36m_opaque_up = clone(rhs.m_opaque_up);37return *this;38}3940bool SBScriptObject::operator!=(const SBScriptObject &rhs) const {41LLDB_INSTRUMENT_VA(this, rhs);4243return !(m_opaque_up == rhs.m_opaque_up);44}4546bool SBScriptObject::IsValid() const {47LLDB_INSTRUMENT_VA(this);4849return this->operator bool();50}5152SBScriptObject::operator bool() const {53LLDB_INSTRUMENT_VA(this);5455return m_opaque_up != nullptr && m_opaque_up->operator bool();56}5758lldb::ScriptObjectPtr SBScriptObject::GetPointer() const {59LLDB_INSTRUMENT_VA(this);6061return m_opaque_up ? const_cast<void *>(m_opaque_up->GetPointer()) : nullptr;62}6364lldb::ScriptLanguage SBScriptObject::GetLanguage() const {65LLDB_INSTRUMENT_VA(this);6667return m_opaque_up ? m_opaque_up->GetLanguage() : eScriptLanguageNone;68}6970ScriptObject &SBScriptObject::ref() {71if (m_opaque_up == nullptr)72m_opaque_up = std::make_unique<ScriptObject>(nullptr, eScriptLanguageNone);73return *m_opaque_up;74}7576const ScriptObject &SBScriptObject::ref() const {77// This object should already have checked with "IsValid()" prior to calling78// this function. In case you didn't we will assert and die to let you know.79assert(m_opaque_up.get());80return *m_opaque_up;81}8283ScriptObject *SBScriptObject::get() { return m_opaque_up.get(); }848586