1254721Semaste//===-- SBCommandReturnObject.cpp -------------------------------*- C++ -*-===// 2254721Semaste// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6254721Semaste// 7254721Semaste//===----------------------------------------------------------------------===// 8254721Semaste 9254721Semaste#include "lldb/API/SBCommandReturnObject.h" 10353358Sdim#include "SBReproducerPrivate.h" 11353358Sdim#include "Utils.h" 12254721Semaste#include "lldb/API/SBError.h" 13360784Sdim#include "lldb/API/SBFile.h" 14254721Semaste#include "lldb/API/SBStream.h" 15254721Semaste#include "lldb/Interpreter/CommandReturnObject.h" 16321369Sdim#include "lldb/Utility/ConstString.h" 17321369Sdim#include "lldb/Utility/Status.h" 18254721Semaste 19254721Semasteusing namespace lldb; 20254721Semasteusing namespace lldb_private; 21254721Semaste 22360784Sdimclass lldb_private::SBCommandReturnObjectImpl { 23360784Sdimpublic: 24360784Sdim SBCommandReturnObjectImpl() 25360784Sdim : m_ptr(new CommandReturnObject()), m_owned(true) {} 26360784Sdim SBCommandReturnObjectImpl(CommandReturnObject &ref) 27360784Sdim : m_ptr(&ref), m_owned(false) {} 28360784Sdim SBCommandReturnObjectImpl(const SBCommandReturnObjectImpl &rhs) 29360784Sdim : m_ptr(new CommandReturnObject(*rhs.m_ptr)), m_owned(rhs.m_owned) {} 30360784Sdim SBCommandReturnObjectImpl &operator=(const SBCommandReturnObjectImpl &rhs) { 31360784Sdim SBCommandReturnObjectImpl copy(rhs); 32360784Sdim std::swap(*this, copy); 33360784Sdim return *this; 34360784Sdim } 35360784Sdim // rvalue ctor+assignment are not used by SBCommandReturnObject. 36360784Sdim ~SBCommandReturnObjectImpl() { 37360784Sdim if (m_owned) 38360784Sdim delete m_ptr; 39360784Sdim } 40360784Sdim 41360784Sdim CommandReturnObject &operator*() const { return *m_ptr; } 42360784Sdim 43360784Sdimprivate: 44360784Sdim CommandReturnObject *m_ptr; 45360784Sdim bool m_owned; 46360784Sdim}; 47360784Sdim 48314564SdimSBCommandReturnObject::SBCommandReturnObject() 49360784Sdim : m_opaque_up(new SBCommandReturnObjectImpl()) { 50353358Sdim LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBCommandReturnObject); 51353358Sdim} 52254721Semaste 53360784SdimSBCommandReturnObject::SBCommandReturnObject(CommandReturnObject &ref) 54360784Sdim : m_opaque_up(new SBCommandReturnObjectImpl(ref)) { 55360784Sdim LLDB_RECORD_CONSTRUCTOR(SBCommandReturnObject, 56360784Sdim (lldb_private::CommandReturnObject &), ref); 57360784Sdim} 58360784Sdim 59314564SdimSBCommandReturnObject::SBCommandReturnObject(const SBCommandReturnObject &rhs) 60353358Sdim : m_opaque_up() { 61353358Sdim LLDB_RECORD_CONSTRUCTOR(SBCommandReturnObject, 62353358Sdim (const lldb::SBCommandReturnObject &), rhs); 63353358Sdim 64353358Sdim m_opaque_up = clone(rhs.m_opaque_up); 65254721Semaste} 66254721Semaste 67360784SdimSBCommandReturnObject &SBCommandReturnObject:: 68314564Sdimoperator=(const SBCommandReturnObject &rhs) { 69353358Sdim LLDB_RECORD_METHOD( 70360784Sdim lldb::SBCommandReturnObject &, 71353358Sdim SBCommandReturnObject, operator=,(const lldb::SBCommandReturnObject &), 72353358Sdim rhs); 73353358Sdim 74353358Sdim if (this != &rhs) 75353358Sdim m_opaque_up = clone(rhs.m_opaque_up); 76353358Sdim return LLDB_RECORD_RESULT(*this); 77254721Semaste} 78254721Semaste 79360784SdimSBCommandReturnObject::~SBCommandReturnObject() = default; 80360784Sdim 81353358Sdimbool SBCommandReturnObject::IsValid() const { 82353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBCommandReturnObject, IsValid); 83353358Sdim return this->operator bool(); 84353358Sdim} 85353358SdimSBCommandReturnObject::operator bool() const { 86353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBCommandReturnObject, operator bool); 87254721Semaste 88360784Sdim // This method is not useful but it needs to stay to keep SB API stable. 89360784Sdim return true; 90353358Sdim} 91353358Sdim 92314564Sdimconst char *SBCommandReturnObject::GetOutput() { 93353358Sdim LLDB_RECORD_METHOD_NO_ARGS(const char *, SBCommandReturnObject, GetOutput); 94254721Semaste 95360784Sdim ConstString output(ref().GetOutputData()); 96360784Sdim return output.AsCString(/*value_if_empty*/ ""); 97314564Sdim} 98254721Semaste 99314564Sdimconst char *SBCommandReturnObject::GetError() { 100353358Sdim LLDB_RECORD_METHOD_NO_ARGS(const char *, SBCommandReturnObject, GetError); 101276479Sdim 102360784Sdim ConstString output(ref().GetErrorData()); 103360784Sdim return output.AsCString(/*value_if_empty*/ ""); 104254721Semaste} 105254721Semaste 106314564Sdimsize_t SBCommandReturnObject::GetOutputSize() { 107353358Sdim LLDB_RECORD_METHOD_NO_ARGS(size_t, SBCommandReturnObject, GetOutputSize); 108353358Sdim 109360784Sdim return ref().GetOutputData().size(); 110254721Semaste} 111254721Semaste 112314564Sdimsize_t SBCommandReturnObject::GetErrorSize() { 113353358Sdim LLDB_RECORD_METHOD_NO_ARGS(size_t, SBCommandReturnObject, GetErrorSize); 114353358Sdim 115360784Sdim return ref().GetErrorData().size(); 116254721Semaste} 117254721Semaste 118314564Sdimsize_t SBCommandReturnObject::PutOutput(FILE *fh) { 119360784Sdim LLDB_RECORD_DUMMY(size_t, SBCommandReturnObject, PutOutput, (FILE *), fh); 120314564Sdim if (fh) { 121314564Sdim size_t num_bytes = GetOutputSize(); 122314564Sdim if (num_bytes) 123314564Sdim return ::fprintf(fh, "%s", GetOutput()); 124314564Sdim } 125314564Sdim return 0; 126254721Semaste} 127254721Semaste 128360784Sdimsize_t SBCommandReturnObject::PutOutput(FileSP file_sp) { 129360784Sdim LLDB_RECORD_METHOD(size_t, SBCommandReturnObject, PutOutput, (FileSP), 130360784Sdim file_sp); 131360784Sdim if (!file_sp) 132360784Sdim return 0; 133360784Sdim return file_sp->Printf("%s", GetOutput()); 134360784Sdim} 135360784Sdim 136360784Sdimsize_t SBCommandReturnObject::PutOutput(SBFile file) { 137360784Sdim LLDB_RECORD_METHOD(size_t, SBCommandReturnObject, PutOutput, (SBFile), file); 138360784Sdim if (!file.m_opaque_sp) 139360784Sdim return 0; 140360784Sdim return file.m_opaque_sp->Printf("%s", GetOutput()); 141360784Sdim} 142360784Sdim 143314564Sdimsize_t SBCommandReturnObject::PutError(FILE *fh) { 144360784Sdim LLDB_RECORD_DUMMY(size_t, SBCommandReturnObject, PutError, (FILE *), fh); 145314564Sdim if (fh) { 146314564Sdim size_t num_bytes = GetErrorSize(); 147314564Sdim if (num_bytes) 148314564Sdim return ::fprintf(fh, "%s", GetError()); 149314564Sdim } 150314564Sdim return 0; 151254721Semaste} 152254721Semaste 153360784Sdimsize_t SBCommandReturnObject::PutError(FileSP file_sp) { 154360784Sdim LLDB_RECORD_METHOD(size_t, SBCommandReturnObject, PutError, (FileSP), 155360784Sdim file_sp); 156360784Sdim if (!file_sp) 157360784Sdim return 0; 158360784Sdim return file_sp->Printf("%s", GetError()); 159360784Sdim} 160360784Sdim 161360784Sdimsize_t SBCommandReturnObject::PutError(SBFile file) { 162360784Sdim LLDB_RECORD_METHOD(size_t, SBCommandReturnObject, PutError, (SBFile), file); 163360784Sdim if (!file.m_opaque_sp) 164360784Sdim return 0; 165360784Sdim return file.m_opaque_sp->Printf("%s", GetError()); 166360784Sdim} 167360784Sdim 168314564Sdimvoid SBCommandReturnObject::Clear() { 169353358Sdim LLDB_RECORD_METHOD_NO_ARGS(void, SBCommandReturnObject, Clear); 170353358Sdim 171360784Sdim ref().Clear(); 172254721Semaste} 173254721Semaste 174314564Sdimlldb::ReturnStatus SBCommandReturnObject::GetStatus() { 175353358Sdim LLDB_RECORD_METHOD_NO_ARGS(lldb::ReturnStatus, SBCommandReturnObject, 176353358Sdim GetStatus); 177353358Sdim 178360784Sdim return ref().GetStatus(); 179254721Semaste} 180254721Semaste 181314564Sdimvoid SBCommandReturnObject::SetStatus(lldb::ReturnStatus status) { 182353358Sdim LLDB_RECORD_METHOD(void, SBCommandReturnObject, SetStatus, 183353358Sdim (lldb::ReturnStatus), status); 184353358Sdim 185360784Sdim ref().SetStatus(status); 186254721Semaste} 187254721Semaste 188314564Sdimbool SBCommandReturnObject::Succeeded() { 189353358Sdim LLDB_RECORD_METHOD_NO_ARGS(bool, SBCommandReturnObject, Succeeded); 190353358Sdim 191360784Sdim return ref().Succeeded(); 192254721Semaste} 193254721Semaste 194314564Sdimbool SBCommandReturnObject::HasResult() { 195353358Sdim LLDB_RECORD_METHOD_NO_ARGS(bool, SBCommandReturnObject, HasResult); 196353358Sdim 197360784Sdim return ref().HasResult(); 198254721Semaste} 199254721Semaste 200314564Sdimvoid SBCommandReturnObject::AppendMessage(const char *message) { 201353358Sdim LLDB_RECORD_METHOD(void, SBCommandReturnObject, AppendMessage, (const char *), 202353358Sdim message); 203353358Sdim 204360784Sdim ref().AppendMessage(message); 205254721Semaste} 206254721Semaste 207314564Sdimvoid SBCommandReturnObject::AppendWarning(const char *message) { 208353358Sdim LLDB_RECORD_METHOD(void, SBCommandReturnObject, AppendWarning, (const char *), 209353358Sdim message); 210353358Sdim 211360784Sdim ref().AppendWarning(message); 212254721Semaste} 213254721Semaste 214314564SdimCommandReturnObject *SBCommandReturnObject::operator->() const { 215360784Sdim return &**m_opaque_up; 216254721Semaste} 217254721Semaste 218314564SdimCommandReturnObject *SBCommandReturnObject::get() const { 219360784Sdim return &**m_opaque_up; 220254721Semaste} 221254721Semaste 222314564SdimCommandReturnObject &SBCommandReturnObject::operator*() const { 223360784Sdim return **m_opaque_up; 224254721Semaste} 225254721Semaste 226314564SdimCommandReturnObject &SBCommandReturnObject::ref() const { 227360784Sdim return **m_opaque_up; 228254721Semaste} 229254721Semaste 230314564Sdimbool SBCommandReturnObject::GetDescription(SBStream &description) { 231353358Sdim LLDB_RECORD_METHOD(bool, SBCommandReturnObject, GetDescription, 232353358Sdim (lldb::SBStream &), description); 233353358Sdim 234314564Sdim Stream &strm = description.ref(); 235254721Semaste 236360784Sdim description.Printf("Error: "); 237360784Sdim lldb::ReturnStatus status = ref().GetStatus(); 238360784Sdim if (status == lldb::eReturnStatusStarted) 239360784Sdim strm.PutCString("Started"); 240360784Sdim else if (status == lldb::eReturnStatusInvalid) 241360784Sdim strm.PutCString("Invalid"); 242360784Sdim else if (ref().Succeeded()) 243360784Sdim strm.PutCString("Success"); 244360784Sdim else 245360784Sdim strm.PutCString("Fail"); 246254721Semaste 247360784Sdim if (GetOutputSize() > 0) 248360784Sdim strm.Printf("\nOutput Message:\n%s", GetOutput()); 249254721Semaste 250360784Sdim if (GetErrorSize() > 0) 251360784Sdim strm.Printf("\nError Message:\n%s", GetError()); 252254721Semaste 253314564Sdim return true; 254254721Semaste} 255254721Semaste 256314564Sdimvoid SBCommandReturnObject::SetImmediateOutputFile(FILE *fh) { 257360784Sdim LLDB_RECORD_DUMMY(void, SBCommandReturnObject, SetImmediateOutputFile, 258360784Sdim (FILE *), fh); 259353358Sdim 260314564Sdim SetImmediateOutputFile(fh, false); 261254721Semaste} 262254721Semaste 263314564Sdimvoid SBCommandReturnObject::SetImmediateErrorFile(FILE *fh) { 264360784Sdim LLDB_RECORD_DUMMY(void, SBCommandReturnObject, SetImmediateErrorFile, 265360784Sdim (FILE *), fh); 266353358Sdim 267314564Sdim SetImmediateErrorFile(fh, false); 268309124Sdim} 269309124Sdim 270314564Sdimvoid SBCommandReturnObject::SetImmediateOutputFile(FILE *fh, 271314564Sdim bool transfer_ownership) { 272360784Sdim LLDB_RECORD_DUMMY(void, SBCommandReturnObject, SetImmediateOutputFile, 273360784Sdim (FILE *, bool), fh, transfer_ownership); 274360784Sdim FileSP file = std::make_shared<NativeFile>(fh, transfer_ownership); 275360784Sdim ref().SetImmediateOutputFile(file); 276254721Semaste} 277254721Semaste 278314564Sdimvoid SBCommandReturnObject::SetImmediateErrorFile(FILE *fh, 279314564Sdim bool transfer_ownership) { 280360784Sdim LLDB_RECORD_DUMMY(void, SBCommandReturnObject, SetImmediateErrorFile, 281360784Sdim (FILE *, bool), fh, transfer_ownership); 282360784Sdim FileSP file = std::make_shared<NativeFile>(fh, transfer_ownership); 283360784Sdim ref().SetImmediateErrorFile(file); 284360784Sdim} 285360784Sdim 286360784Sdimvoid SBCommandReturnObject::SetImmediateOutputFile(SBFile file) { 287360784Sdim LLDB_RECORD_METHOD(void, SBCommandReturnObject, SetImmediateOutputFile, 288360784Sdim (SBFile), file); 289360784Sdim ref().SetImmediateOutputFile(file.m_opaque_sp); 290360784Sdim} 291360784Sdim 292360784Sdimvoid SBCommandReturnObject::SetImmediateErrorFile(SBFile file) { 293353358Sdim LLDB_RECORD_METHOD(void, SBCommandReturnObject, SetImmediateErrorFile, 294360784Sdim (SBFile), file); 295360784Sdim ref().SetImmediateErrorFile(file.m_opaque_sp); 296360784Sdim} 297353358Sdim 298360784Sdimvoid SBCommandReturnObject::SetImmediateOutputFile(FileSP file_sp) { 299360784Sdim LLDB_RECORD_METHOD(void, SBCommandReturnObject, SetImmediateOutputFile, 300360784Sdim (FileSP), file_sp); 301360784Sdim SetImmediateOutputFile(SBFile(file_sp)); 302309124Sdim} 303309124Sdim 304360784Sdimvoid SBCommandReturnObject::SetImmediateErrorFile(FileSP file_sp) { 305360784Sdim LLDB_RECORD_METHOD(void, SBCommandReturnObject, SetImmediateErrorFile, 306360784Sdim (FileSP), file_sp); 307360784Sdim SetImmediateErrorFile(SBFile(file_sp)); 308360784Sdim} 309360784Sdim 310314564Sdimvoid SBCommandReturnObject::PutCString(const char *string, int len) { 311353358Sdim LLDB_RECORD_METHOD(void, SBCommandReturnObject, PutCString, 312353358Sdim (const char *, int), string, len); 313353358Sdim 314360784Sdim if (len == 0 || string == nullptr || *string == 0) { 315360784Sdim return; 316360784Sdim } else if (len > 0) { 317360784Sdim std::string buffer(string, len); 318360784Sdim ref().AppendMessage(buffer.c_str()); 319360784Sdim } else 320360784Sdim ref().AppendMessage(string); 321254721Semaste} 322254721Semaste 323314564Sdimconst char *SBCommandReturnObject::GetOutput(bool only_if_no_immediate) { 324353358Sdim LLDB_RECORD_METHOD(const char *, SBCommandReturnObject, GetOutput, (bool), 325353358Sdim only_if_no_immediate); 326353358Sdim 327314564Sdim if (!only_if_no_immediate || 328360784Sdim ref().GetImmediateOutputStream().get() == nullptr) 329314564Sdim return GetOutput(); 330314564Sdim return nullptr; 331254721Semaste} 332254721Semaste 333314564Sdimconst char *SBCommandReturnObject::GetError(bool only_if_no_immediate) { 334353358Sdim LLDB_RECORD_METHOD(const char *, SBCommandReturnObject, GetError, (bool), 335353358Sdim only_if_no_immediate); 336353358Sdim 337360784Sdim if (!only_if_no_immediate || ref().GetImmediateErrorStream().get() == nullptr) 338314564Sdim return GetError(); 339314564Sdim return nullptr; 340254721Semaste} 341254721Semaste 342314564Sdimsize_t SBCommandReturnObject::Printf(const char *format, ...) { 343360784Sdim va_list args; 344360784Sdim va_start(args, format); 345360784Sdim size_t result = ref().GetOutputStream().PrintfVarArg(format, args); 346360784Sdim va_end(args); 347360784Sdim return result; 348254721Semaste} 349254721Semaste 350314564Sdimvoid SBCommandReturnObject::SetError(lldb::SBError &error, 351314564Sdim const char *fallback_error_cstr) { 352353358Sdim LLDB_RECORD_METHOD(void, SBCommandReturnObject, SetError, 353353358Sdim (lldb::SBError &, const char *), error, 354353358Sdim fallback_error_cstr); 355353358Sdim 356360784Sdim if (error.IsValid()) 357360784Sdim ref().SetError(error.ref(), fallback_error_cstr); 358360784Sdim else if (fallback_error_cstr) 359360784Sdim ref().SetError(Status(), fallback_error_cstr); 360254721Semaste} 361254721Semaste 362314564Sdimvoid SBCommandReturnObject::SetError(const char *error_cstr) { 363353358Sdim LLDB_RECORD_METHOD(void, SBCommandReturnObject, SetError, (const char *), 364353358Sdim error_cstr); 365353358Sdim 366360784Sdim if (error_cstr) 367360784Sdim ref().SetError(error_cstr); 368254721Semaste} 369353358Sdim 370353358Sdimnamespace lldb_private { 371353358Sdimnamespace repro { 372353358Sdim 373353358Sdimtemplate <> 374353358Sdimvoid RegisterMethods<SBCommandReturnObject>(Registry &R) { 375353358Sdim LLDB_REGISTER_CONSTRUCTOR(SBCommandReturnObject, ()); 376353358Sdim LLDB_REGISTER_CONSTRUCTOR(SBCommandReturnObject, 377360784Sdim (lldb_private::CommandReturnObject &)); 378360784Sdim LLDB_REGISTER_CONSTRUCTOR(SBCommandReturnObject, 379353358Sdim (const lldb::SBCommandReturnObject &)); 380353358Sdim LLDB_REGISTER_METHOD( 381360784Sdim lldb::SBCommandReturnObject &, 382353358Sdim SBCommandReturnObject, operator=,(const lldb::SBCommandReturnObject &)); 383353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBCommandReturnObject, IsValid, ()); 384353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBCommandReturnObject, operator bool, ()); 385353358Sdim LLDB_REGISTER_METHOD(const char *, SBCommandReturnObject, GetOutput, ()); 386353358Sdim LLDB_REGISTER_METHOD(const char *, SBCommandReturnObject, GetError, ()); 387353358Sdim LLDB_REGISTER_METHOD(size_t, SBCommandReturnObject, GetOutputSize, ()); 388353358Sdim LLDB_REGISTER_METHOD(size_t, SBCommandReturnObject, GetErrorSize, ()); 389353358Sdim LLDB_REGISTER_METHOD(size_t, SBCommandReturnObject, PutOutput, (FILE *)); 390353358Sdim LLDB_REGISTER_METHOD(size_t, SBCommandReturnObject, PutError, (FILE *)); 391360784Sdim LLDB_REGISTER_METHOD(size_t, SBCommandReturnObject, PutOutput, (SBFile)); 392360784Sdim LLDB_REGISTER_METHOD(size_t, SBCommandReturnObject, PutError, (SBFile)); 393360784Sdim LLDB_REGISTER_METHOD(size_t, SBCommandReturnObject, PutOutput, (FileSP)); 394360784Sdim LLDB_REGISTER_METHOD(size_t, SBCommandReturnObject, PutError, (FileSP)); 395353358Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, Clear, ()); 396353358Sdim LLDB_REGISTER_METHOD(lldb::ReturnStatus, SBCommandReturnObject, GetStatus, 397353358Sdim ()); 398353358Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, SetStatus, 399353358Sdim (lldb::ReturnStatus)); 400353358Sdim LLDB_REGISTER_METHOD(bool, SBCommandReturnObject, Succeeded, ()); 401353358Sdim LLDB_REGISTER_METHOD(bool, SBCommandReturnObject, HasResult, ()); 402353358Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, AppendMessage, 403353358Sdim (const char *)); 404353358Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, AppendWarning, 405353358Sdim (const char *)); 406353358Sdim LLDB_REGISTER_METHOD(bool, SBCommandReturnObject, GetDescription, 407353358Sdim (lldb::SBStream &)); 408353358Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, SetImmediateOutputFile, 409353358Sdim (FILE *)); 410353358Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, SetImmediateErrorFile, 411353358Sdim (FILE *)); 412353358Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, SetImmediateOutputFile, 413360784Sdim (SBFile)); 414360784Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, SetImmediateErrorFile, 415360784Sdim (SBFile)); 416360784Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, SetImmediateOutputFile, 417360784Sdim (FileSP)); 418360784Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, SetImmediateErrorFile, 419360784Sdim (FileSP)); 420360784Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, SetImmediateOutputFile, 421353358Sdim (FILE *, bool)); 422353358Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, SetImmediateErrorFile, 423353358Sdim (FILE *, bool)); 424353358Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, PutCString, 425353358Sdim (const char *, int)); 426353358Sdim LLDB_REGISTER_METHOD(const char *, SBCommandReturnObject, GetOutput, 427353358Sdim (bool)); 428353358Sdim LLDB_REGISTER_METHOD(const char *, SBCommandReturnObject, GetError, (bool)); 429353358Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, SetError, 430353358Sdim (lldb::SBError &, const char *)); 431353358Sdim LLDB_REGISTER_METHOD(void, SBCommandReturnObject, SetError, (const char *)); 432353358Sdim} 433353358Sdim 434353358Sdim} 435353358Sdim} 436