1d9ec4b24SWalter Erquinigo //===-- SBFormat.cpp ------------------------------------------------------===// 2d9ec4b24SWalter Erquinigo // 3d9ec4b24SWalter Erquinigo // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4d9ec4b24SWalter Erquinigo // See https://llvm.org/LICENSE.txt for license information. 5d9ec4b24SWalter Erquinigo // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6d9ec4b24SWalter Erquinigo // 7d9ec4b24SWalter Erquinigo //===----------------------------------------------------------------------===// 8d9ec4b24SWalter Erquinigo 9d9ec4b24SWalter Erquinigo #include "lldb/API/SBFormat.h" 10d9ec4b24SWalter Erquinigo #include "Utils.h" 11d9ec4b24SWalter Erquinigo #include "lldb/Core/FormatEntity.h" 12d9ec4b24SWalter Erquinigo #include "lldb/lldb-types.h" 13d9ec4b24SWalter Erquinigo #include <lldb/API/SBError.h> 14d9ec4b24SWalter Erquinigo #include <lldb/Utility/Status.h> 15d9ec4b24SWalter Erquinigo 16d9ec4b24SWalter Erquinigo using namespace lldb; 17d9ec4b24SWalter Erquinigo using namespace lldb_private; 18d9ec4b24SWalter Erquinigo 19d9ec4b24SWalter Erquinigo SBFormat::SBFormat() : m_opaque_sp() {} 20d9ec4b24SWalter Erquinigo 21d9ec4b24SWalter Erquinigo SBFormat::SBFormat(const SBFormat &rhs) { 22d9ec4b24SWalter Erquinigo m_opaque_sp = clone(rhs.m_opaque_sp); 23d9ec4b24SWalter Erquinigo } 24d9ec4b24SWalter Erquinigo 25d9ec4b24SWalter Erquinigo SBFormat::~SBFormat() = default; 26d9ec4b24SWalter Erquinigo 27d9ec4b24SWalter Erquinigo SBFormat &SBFormat::operator=(const SBFormat &rhs) { 28d9ec4b24SWalter Erquinigo if (this != &rhs) 29d9ec4b24SWalter Erquinigo m_opaque_sp = clone(rhs.m_opaque_sp); 30d9ec4b24SWalter Erquinigo return *this; 31d9ec4b24SWalter Erquinigo } 32d9ec4b24SWalter Erquinigo 33d9ec4b24SWalter Erquinigo SBFormat::operator bool() const { return (bool)m_opaque_sp; } 34d9ec4b24SWalter Erquinigo 35d9ec4b24SWalter Erquinigo SBFormat::SBFormat(const char *format, lldb::SBError &error) { 36d9ec4b24SWalter Erquinigo FormatEntrySP format_entry_sp = std::make_shared<FormatEntity::Entry>(); 37d9ec4b24SWalter Erquinigo Status status = FormatEntity::Parse(format, *format_entry_sp); 38d9ec4b24SWalter Erquinigo 39*b798f4bdSAdrian Prantl error.SetError(std::move(status)); 40d9ec4b24SWalter Erquinigo if (error.Success()) 41d9ec4b24SWalter Erquinigo m_opaque_sp = format_entry_sp; 42d9ec4b24SWalter Erquinigo } 43d9ec4b24SWalter Erquinigo 44d9ec4b24SWalter Erquinigo lldb::FormatEntrySP SBFormat::GetFormatEntrySP() const { return m_opaque_sp; } 45