Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:42:41

0001 //===-- SBCommandReturnObject.h ---------------------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 
0009 #ifndef LLDB_API_SBCOMMANDRETURNOBJECT_H
0010 #define LLDB_API_SBCOMMANDRETURNOBJECT_H
0011 
0012 #include <cstdio>
0013 
0014 #include <memory>
0015 
0016 #include "lldb/API/SBDefines.h"
0017 
0018 namespace lldb_private {
0019 class CommandPluginInterfaceImplementation;
0020 class SBCommandReturnObjectImpl;
0021 namespace python {
0022 class SWIGBridge;
0023 }
0024 } // namespace lldb_private
0025 
0026 namespace lldb {
0027 
0028 class LLDB_API SBCommandReturnObject {
0029 public:
0030   SBCommandReturnObject();
0031 
0032   // rvalue ctor+assignment are incompatible with Reproducers.
0033 
0034   SBCommandReturnObject(const lldb::SBCommandReturnObject &rhs);
0035 
0036   ~SBCommandReturnObject();
0037 
0038   lldb::SBCommandReturnObject &
0039   operator=(const lldb::SBCommandReturnObject &rhs);
0040 
0041   explicit operator bool() const;
0042 
0043   bool IsValid() const;
0044 
0045   const char *GetOutput();
0046 
0047   const char *GetError();
0048   SBStructuredData GetErrorData();
0049 
0050 #ifndef SWIG
0051   LLDB_DEPRECATED_FIXME("Use PutOutput(SBFile) or PutOutput(FileSP)",
0052                         "PutOutput(SBFile)")
0053   size_t PutOutput(FILE *fh);
0054 #endif
0055 
0056   size_t PutOutput(SBFile file);
0057 
0058   size_t PutOutput(FileSP BORROWED);
0059 
0060   size_t GetOutputSize();
0061 
0062   size_t GetErrorSize();
0063 
0064 #ifndef SWIG
0065   LLDB_DEPRECATED_FIXME("Use PutError(SBFile) or PutError(FileSP)",
0066                         "PutError(SBFile)")
0067   size_t PutError(FILE *fh);
0068 #endif
0069 
0070   size_t PutError(SBFile file);
0071 
0072   size_t PutError(FileSP BORROWED);
0073 
0074   void Clear();
0075 
0076   lldb::ReturnStatus GetStatus();
0077 
0078   void SetStatus(lldb::ReturnStatus status);
0079 
0080   bool Succeeded();
0081 
0082   bool HasResult();
0083 
0084   void AppendMessage(const char *message);
0085 
0086   void AppendWarning(const char *message);
0087 
0088   bool GetDescription(lldb::SBStream &description);
0089 
0090 #ifndef SWIG
0091   LLDB_DEPRECATED_FIXME(
0092       "Use SetImmediateOutputFile(SBFile) or SetImmediateOutputFile(FileSP)",
0093       "SetImmediateOutputFile(SBFile)")
0094   void SetImmediateOutputFile(FILE *fh);
0095 
0096   LLDB_DEPRECATED_FIXME(
0097       "Use SetImmediateErrorFile(SBFile) or SetImmediateErrorFile(FileSP)",
0098       "SetImmediateErrorFile(SBFile)")
0099   void SetImmediateErrorFile(FILE *fh);
0100 
0101   LLDB_DEPRECATED_FIXME(
0102       "Use SetImmediateOutputFile(SBFile) or SetImmediateOutputFile(FileSP)",
0103       "SetImmediateOutputFile(SBFile)")
0104   void SetImmediateOutputFile(FILE *fh, bool transfer_ownership);
0105 
0106   LLDB_DEPRECATED_FIXME(
0107       "Use SetImmediateErrorFile(SBFile) or SetImmediateErrorFile(FileSP)",
0108       "SetImmediateErrorFile(SBFile)")
0109   void SetImmediateErrorFile(FILE *fh, bool transfer_ownership);
0110 #endif
0111 
0112   void SetImmediateOutputFile(SBFile file);
0113 
0114   void SetImmediateErrorFile(SBFile file);
0115 
0116   void SetImmediateOutputFile(FileSP BORROWED);
0117 
0118   void SetImmediateErrorFile(FileSP BORROWED);
0119 
0120   void PutCString(const char *string, int len = -1);
0121 
0122 #ifndef SWIG
0123   __attribute__((format(printf, 2, 3))) size_t Printf(const char *format, ...);
0124 #endif
0125 
0126   const char *GetOutput(bool only_if_no_immediate);
0127 
0128   const char *GetError(bool only_if_no_immediate);
0129 
0130   void SetError(lldb::SBError &error,
0131                 const char *fallback_error_cstr = nullptr);
0132 
0133   void SetError(const char *error_cstr);
0134 
0135 protected:
0136   friend class SBCommandInterpreter;
0137   friend class SBOptions;
0138 
0139   friend class lldb_private::CommandPluginInterfaceImplementation;
0140   friend class lldb_private::python::SWIGBridge;
0141 
0142   SBCommandReturnObject(lldb_private::CommandReturnObject &ref);
0143 
0144   lldb_private::CommandReturnObject *operator->() const;
0145 
0146   lldb_private::CommandReturnObject *get() const;
0147 
0148   lldb_private::CommandReturnObject &operator*() const;
0149 
0150 private:
0151   lldb_private::CommandReturnObject &ref() const;
0152 
0153   std::unique_ptr<lldb_private::SBCommandReturnObjectImpl> m_opaque_up;
0154 };
0155 
0156 } // namespace lldb
0157 
0158 #endif // LLDB_API_SBCOMMANDRETURNOBJECT_H