diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 20:51:52 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 20:51:52 +0000 | 
| commit | 5f29bb8a675e8f96452b632e7129113f7dec850e (patch) | |
| tree | 3d3f2a0d3ad10872a4dcaba8ec8d1d20c87ab147 /source/API/SBDeclaration.cpp | |
| parent | 88c643b6fec27eec436c8d138fee6346e92337d6 (diff) | |
Notes
Diffstat (limited to 'source/API/SBDeclaration.cpp')
| -rw-r--r-- | source/API/SBDeclaration.cpp | 158 | 
1 files changed, 106 insertions, 52 deletions
| diff --git a/source/API/SBDeclaration.cpp b/source/API/SBDeclaration.cpp index 90e4db367d2a7..a7790b2939810 100644 --- a/source/API/SBDeclaration.cpp +++ b/source/API/SBDeclaration.cpp @@ -1,17 +1,17 @@  //===-- SBDeclaration.cpp ----------------------------------------*- C++-*-===//  // -//                     The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// 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  //  //===----------------------------------------------------------------------===//  #include "lldb/API/SBDeclaration.h" +#include "SBReproducerPrivate.h" +#include "Utils.h"  #include "lldb/API/SBStream.h"  #include "lldb/Host/PosixApi.h"  #include "lldb/Symbol/Declaration.h" -#include "lldb/Utility/Log.h"  #include "lldb/Utility/Stream.h"  #include <limits.h> @@ -19,27 +19,30 @@  using namespace lldb;  using namespace lldb_private; -SBDeclaration::SBDeclaration() : m_opaque_ap() {} +SBDeclaration::SBDeclaration() : m_opaque_up() { +  LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBDeclaration); +} + +SBDeclaration::SBDeclaration(const SBDeclaration &rhs) : m_opaque_up() { +  LLDB_RECORD_CONSTRUCTOR(SBDeclaration, (const lldb::SBDeclaration &), rhs); -SBDeclaration::SBDeclaration(const SBDeclaration &rhs) : m_opaque_ap() { -  if (rhs.IsValid()) -    ref() = rhs.ref(); +  m_opaque_up = clone(rhs.m_opaque_up);  }  SBDeclaration::SBDeclaration(const lldb_private::Declaration *lldb_object_ptr) -    : m_opaque_ap() { +    : m_opaque_up() {    if (lldb_object_ptr) -    ref() = *lldb_object_ptr; +    m_opaque_up = llvm::make_unique<Declaration>(*lldb_object_ptr);  }  const SBDeclaration &SBDeclaration::operator=(const SBDeclaration &rhs) { -  if (this != &rhs) { -    if (rhs.IsValid()) -      ref() = rhs.ref(); -    else -      m_opaque_ap.reset(); -  } -  return *this; +  LLDB_RECORD_METHOD(const lldb::SBDeclaration &, +                     SBDeclaration, operator=,(const lldb::SBDeclaration &), +                     rhs); + +  if (this != &rhs) +    m_opaque_up = clone(rhs.m_opaque_up); +  return LLDB_RECORD_RESULT(*this);  }  void SBDeclaration::SetDeclaration( @@ -50,60 +53,75 @@ void SBDeclaration::SetDeclaration(  SBDeclaration::~SBDeclaration() {}  bool SBDeclaration::IsValid() const { -  return m_opaque_ap.get() && m_opaque_ap->IsValid(); +  LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBDeclaration, IsValid); +  return this->operator bool(); +} +SBDeclaration::operator bool() const { +  LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBDeclaration, operator bool); + +  return m_opaque_up.get() && m_opaque_up->IsValid();  }  SBFileSpec SBDeclaration::GetFileSpec() const { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); +  LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::SBFileSpec, SBDeclaration, +                                   GetFileSpec); +    SBFileSpec sb_file_spec; -  if (m_opaque_ap.get() && m_opaque_ap->GetFile()) -    sb_file_spec.SetFileSpec(m_opaque_ap->GetFile()); +  if (m_opaque_up.get() && m_opaque_up->GetFile()) +    sb_file_spec.SetFileSpec(m_opaque_up->GetFile()); -  if (log) { -    SBStream sstr; -    sb_file_spec.GetDescription(sstr); -    log->Printf("SBLineEntry(%p)::GetFileSpec () => SBFileSpec(%p): %s", -                static_cast<void *>(m_opaque_ap.get()), -                static_cast<const void *>(sb_file_spec.get()), sstr.GetData()); -  } -  return sb_file_spec; +  return LLDB_RECORD_RESULT(sb_file_spec);  }  uint32_t SBDeclaration::GetLine() const { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); +  LLDB_RECORD_METHOD_CONST_NO_ARGS(uint32_t, SBDeclaration, GetLine); +    uint32_t line = 0; -  if (m_opaque_ap) -    line = m_opaque_ap->GetLine(); +  if (m_opaque_up) +    line = m_opaque_up->GetLine(); -  if (log) -    log->Printf("SBLineEntry(%p)::GetLine () => %u", -                static_cast<void *>(m_opaque_ap.get()), line);    return line;  }  uint32_t SBDeclaration::GetColumn() const { -  if (m_opaque_ap) -    return m_opaque_ap->GetColumn(); +  LLDB_RECORD_METHOD_CONST_NO_ARGS(uint32_t, SBDeclaration, GetColumn); + +  if (m_opaque_up) +    return m_opaque_up->GetColumn();    return 0;  }  void SBDeclaration::SetFileSpec(lldb::SBFileSpec filespec) { +  LLDB_RECORD_METHOD(void, SBDeclaration, SetFileSpec, (lldb::SBFileSpec), +                     filespec); +    if (filespec.IsValid())      ref().SetFile(filespec.ref());    else      ref().SetFile(FileSpec());  } -void SBDeclaration::SetLine(uint32_t line) { ref().SetLine(line); } +void SBDeclaration::SetLine(uint32_t line) { +  LLDB_RECORD_METHOD(void, SBDeclaration, SetLine, (uint32_t), line); -void SBDeclaration::SetColumn(uint32_t column) { ref().SetColumn(column); } +  ref().SetLine(line); +} + +void SBDeclaration::SetColumn(uint32_t column) { +  LLDB_RECORD_METHOD(void, SBDeclaration, SetColumn, (uint32_t), column); + +  ref().SetColumn(column); +}  bool SBDeclaration::operator==(const SBDeclaration &rhs) const { -  lldb_private::Declaration *lhs_ptr = m_opaque_ap.get(); -  lldb_private::Declaration *rhs_ptr = rhs.m_opaque_ap.get(); +  LLDB_RECORD_METHOD_CONST( +      bool, SBDeclaration, operator==,(const lldb::SBDeclaration &), rhs); + +  lldb_private::Declaration *lhs_ptr = m_opaque_up.get(); +  lldb_private::Declaration *rhs_ptr = rhs.m_opaque_up.get();    if (lhs_ptr && rhs_ptr)      return lldb_private::Declaration::Compare(*lhs_ptr, *rhs_ptr) == 0; @@ -112,8 +130,11 @@ bool SBDeclaration::operator==(const SBDeclaration &rhs) const {  }  bool SBDeclaration::operator!=(const SBDeclaration &rhs) const { -  lldb_private::Declaration *lhs_ptr = m_opaque_ap.get(); -  lldb_private::Declaration *rhs_ptr = rhs.m_opaque_ap.get(); +  LLDB_RECORD_METHOD_CONST( +      bool, SBDeclaration, operator!=,(const lldb::SBDeclaration &), rhs); + +  lldb_private::Declaration *lhs_ptr = m_opaque_up.get(); +  lldb_private::Declaration *rhs_ptr = rhs.m_opaque_up.get();    if (lhs_ptr && rhs_ptr)      return lldb_private::Declaration::Compare(*lhs_ptr, *rhs_ptr) != 0; @@ -122,25 +143,28 @@ bool SBDeclaration::operator!=(const SBDeclaration &rhs) const {  }  const lldb_private::Declaration *SBDeclaration::operator->() const { -  return m_opaque_ap.get(); +  return m_opaque_up.get();  }  lldb_private::Declaration &SBDeclaration::ref() { -  if (m_opaque_ap == NULL) -    m_opaque_ap.reset(new lldb_private::Declaration()); -  return *m_opaque_ap; +  if (m_opaque_up == nullptr) +    m_opaque_up.reset(new lldb_private::Declaration()); +  return *m_opaque_up;  }  const lldb_private::Declaration &SBDeclaration::ref() const { -  return *m_opaque_ap; +  return *m_opaque_up;  }  bool SBDeclaration::GetDescription(SBStream &description) { +  LLDB_RECORD_METHOD(bool, SBDeclaration, GetDescription, (lldb::SBStream &), +                     description); +    Stream &strm = description.ref(); -  if (m_opaque_ap) { +  if (m_opaque_up) {      char file_path[PATH_MAX * 2]; -    m_opaque_ap->GetFile().GetPath(file_path, sizeof(file_path)); +    m_opaque_up->GetFile().GetPath(file_path, sizeof(file_path));      strm.Printf("%s:%u", file_path, GetLine());      if (GetColumn() > 0)        strm.Printf(":%u", GetColumn()); @@ -150,4 +174,34 @@ bool SBDeclaration::GetDescription(SBStream &description) {    return true;  } -lldb_private::Declaration *SBDeclaration::get() { return m_opaque_ap.get(); } +lldb_private::Declaration *SBDeclaration::get() { return m_opaque_up.get(); } + +namespace lldb_private { +namespace repro { + +template <> +void RegisterMethods<SBDeclaration>(Registry &R) { +  LLDB_REGISTER_CONSTRUCTOR(SBDeclaration, ()); +  LLDB_REGISTER_CONSTRUCTOR(SBDeclaration, (const lldb::SBDeclaration &)); +  LLDB_REGISTER_METHOD( +      const lldb::SBDeclaration &, +      SBDeclaration, operator=,(const lldb::SBDeclaration &)); +  LLDB_REGISTER_METHOD_CONST(bool, SBDeclaration, IsValid, ()); +  LLDB_REGISTER_METHOD_CONST(bool, SBDeclaration, operator bool, ()); +  LLDB_REGISTER_METHOD_CONST(lldb::SBFileSpec, SBDeclaration, GetFileSpec, +                             ()); +  LLDB_REGISTER_METHOD_CONST(uint32_t, SBDeclaration, GetLine, ()); +  LLDB_REGISTER_METHOD_CONST(uint32_t, SBDeclaration, GetColumn, ()); +  LLDB_REGISTER_METHOD(void, SBDeclaration, SetFileSpec, (lldb::SBFileSpec)); +  LLDB_REGISTER_METHOD(void, SBDeclaration, SetLine, (uint32_t)); +  LLDB_REGISTER_METHOD(void, SBDeclaration, SetColumn, (uint32_t)); +  LLDB_REGISTER_METHOD_CONST( +      bool, SBDeclaration, operator==,(const lldb::SBDeclaration &)); +  LLDB_REGISTER_METHOD_CONST( +      bool, SBDeclaration, operator!=,(const lldb::SBDeclaration &)); +  LLDB_REGISTER_METHOD(bool, SBDeclaration, GetDescription, +                       (lldb::SBStream &)); +} + +} +} | 
