File indexing completed on 2026-05-10 08:42:41
0001
0002
0003
0004
0005
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 }
0025
0026 namespace lldb {
0027
0028 class LLDB_API SBCommandReturnObject {
0029 public:
0030 SBCommandReturnObject();
0031
0032
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 }
0157
0158 #endif