147beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham//===-- SBEvent.h -----------------------------------------------*- C++ -*-===//
247beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham//
347beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham//                     The LLVM Compiler Infrastructure
447beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham//
547beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham// This file is distributed under the University of Illinois Open Source
647beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham// License. See LICENSE.TXT for details.
747beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham//
847beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham//===----------------------------------------------------------------------===//
947beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
1047beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham#ifndef LLDB_SBExpressionOptions_h_
1147beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham#define LLDB_SBExpressionOptions_h_
1247beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
1347beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham#include "lldb/API/SBDefines.h"
1447beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
1547beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham#include <vector>
1647beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
1747beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Inghamnamespace lldb {
1847beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
1947beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
2047beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Inghamclass SBExpressionOptions
2147beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham{
2247beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Inghampublic:
2347beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    SBExpressionOptions();
2447beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
2547beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    SBExpressionOptions (const lldb::SBExpressionOptions &rhs);
2647beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
2747beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    ~SBExpressionOptions();
2847beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
2947beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    const SBExpressionOptions &
3047beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    operator = (const lldb::SBExpressionOptions &rhs);
3147beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
3247beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    bool
3375a443b04197d18c7034968e11ce831166df3703Greg Clayton    GetCoerceResultToId () const;
3447beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
3547beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    void
3675a443b04197d18c7034968e11ce831166df3703Greg Clayton    SetCoerceResultToId (bool coerce = true);
3747beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
3847beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    bool
3975a443b04197d18c7034968e11ce831166df3703Greg Clayton    GetUnwindOnError () const;
4047beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
4147beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    void
4289e248f04ecb87d0df4a4b96158c3fac0a3e43c7Jim Ingham    SetUnwindOnError (bool unwind = true);
4347beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
44b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham    bool
45b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham    GetIgnoreBreakpoints () const;
46b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham
47b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham    void
4889e248f04ecb87d0df4a4b96158c3fac0a3e43c7Jim Ingham    SetIgnoreBreakpoints (bool ignore = true);
49b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham
5047beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    lldb::DynamicValueType
5175a443b04197d18c7034968e11ce831166df3703Greg Clayton    GetFetchDynamicValue () const;
5247beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
5347beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    void
5475a443b04197d18c7034968e11ce831166df3703Greg Clayton    SetFetchDynamicValue (lldb::DynamicValueType dynamic = lldb::eDynamicCanRunTarget);
5547beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
5647beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    uint32_t
5775a443b04197d18c7034968e11ce831166df3703Greg Clayton    GetTimeoutInMicroSeconds () const;
5847beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
5947beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    void
6075a443b04197d18c7034968e11ce831166df3703Greg Clayton    SetTimeoutInMicroSeconds (uint32_t timeout = 0);
6147beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
6247beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    bool
6375a443b04197d18c7034968e11ce831166df3703Greg Clayton    GetTryAllThreads () const;
6447beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
6547beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    void
6675a443b04197d18c7034968e11ce831166df3703Greg Clayton    SetTryAllThreads (bool run_others = true);
6747beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
6847beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Inghamprotected:
6947beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
7047beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    SBExpressionOptions (lldb_private::EvaluateExpressionOptions &expression_options);
7147beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
7247beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    lldb_private::EvaluateExpressionOptions *
7347beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    get () const;
7447beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
7547beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    lldb_private::EvaluateExpressionOptions &
7647beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    ref () const;
7747beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
7819b646725e7d6bebda787fa3cb55ff223a00d907Greg Clayton    friend class SBFrame;
7919b646725e7d6bebda787fa3cb55ff223a00d907Greg Clayton    friend class SBValue;
8019b646725e7d6bebda787fa3cb55ff223a00d907Greg Clayton    friend class SBTarget;
8119b646725e7d6bebda787fa3cb55ff223a00d907Greg Clayton
8247beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Inghamprivate:
8347beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    // This auto_pointer is made in the constructor and is always valid.
84102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton    mutable std::unique_ptr<lldb_private::EvaluateExpressionOptions> m_opaque_ap;
8547beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham};
8647beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
8747beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham} // namespace lldb
8847beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
8947beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham#endif  // LLDB_SBExpressionOptions_h_
90