1 //===-- SBExpressionOptions.h -----------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_API_SBEXPRESSIONOPTIONS_H 10 #define LLDB_API_SBEXPRESSIONOPTIONS_H 11 12 #include "lldb/API/SBDefines.h" 13 14 #include <vector> 15 16 namespace lldb { 17 18 class LLDB_API SBExpressionOptions { 19 public: 20 SBExpressionOptions(); 21 22 SBExpressionOptions(const lldb::SBExpressionOptions &rhs); 23 24 ~SBExpressionOptions(); 25 26 const SBExpressionOptions &operator=(const lldb::SBExpressionOptions &rhs); 27 28 bool GetCoerceResultToId() const; 29 30 void SetCoerceResultToId(bool coerce = true); 31 32 bool GetUnwindOnError() const; 33 34 void SetUnwindOnError(bool unwind = true); 35 36 bool GetIgnoreBreakpoints() const; 37 38 void SetIgnoreBreakpoints(bool ignore = true); 39 40 lldb::DynamicValueType GetFetchDynamicValue() const; 41 42 void SetFetchDynamicValue( 43 lldb::DynamicValueType dynamic = lldb::eDynamicCanRunTarget); 44 45 uint32_t GetTimeoutInMicroSeconds() const; 46 47 // Set the timeout for the expression, 0 means wait forever. 48 void SetTimeoutInMicroSeconds(uint32_t timeout = 0); 49 50 uint32_t GetOneThreadTimeoutInMicroSeconds() const; 51 52 // Set the timeout for running on one thread, 0 means use the default 53 // behavior. If you set this higher than the overall timeout, you'll get an 54 // error when you try to run the expression. 55 void SetOneThreadTimeoutInMicroSeconds(uint32_t timeout = 0); 56 57 bool GetTryAllThreads() const; 58 59 void SetTryAllThreads(bool run_others = true); 60 61 bool GetStopOthers() const; 62 63 void SetStopOthers(bool stop_others = true); 64 65 bool GetTrapExceptions() const; 66 67 void SetTrapExceptions(bool trap_exceptions = true); 68 69 void SetLanguage(lldb::LanguageType language); 70 71 #ifndef SWIG 72 void SetCancelCallback(lldb::ExpressionCancelCallback callback, void *baton); 73 #endif 74 75 bool GetGenerateDebugInfo(); 76 77 void SetGenerateDebugInfo(bool b = true); 78 79 bool GetSuppressPersistentResult(); 80 81 void SetSuppressPersistentResult(bool b = false); 82 83 const char *GetPrefix() const; 84 85 void SetPrefix(const char *prefix); 86 87 void SetAutoApplyFixIts(bool b = true); 88 89 bool GetAutoApplyFixIts(); 90 91 void SetRetriesWithFixIts(uint64_t retries); 92 93 uint64_t GetRetriesWithFixIts(); 94 95 bool GetTopLevel(); 96 97 void SetTopLevel(bool b = true); 98 99 // Gets whether we will JIT an expression if it cannot be interpreted 100 bool GetAllowJIT(); 101 102 // Sets whether we will JIT an expression if it cannot be interpreted 103 void SetAllowJIT(bool allow); 104 105 protected: 106 lldb_private::EvaluateExpressionOptions *get() const; 107 108 lldb_private::EvaluateExpressionOptions &ref() const; 109 110 friend class SBFrame; 111 friend class SBValue; 112 friend class SBTarget; 113 114 private: 115 // This auto_pointer is made in the constructor and is always valid. 116 mutable std::unique_ptr<lldb_private::EvaluateExpressionOptions> m_opaque_up; 117 }; 118 119 } // namespace lldb 120 121 #endif // LLDB_API_SBEXPRESSIONOPTIONS_H 122