//===-- SBVariablesOptions.h ------------------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef LLDB_SBVariablesOptions_h_
#define LLDB_SBVariablesOptions_h_

#include "lldb/API/SBDefines.h"

class VariablesOptionsImpl;

namespace lldb {

class LLDB_API SBVariablesOptions
{
public:
    SBVariablesOptions ();
    
    SBVariablesOptions (const SBVariablesOptions& options);
    
    SBVariablesOptions&
    operator = (const SBVariablesOptions& options);
    
    ~SBVariablesOptions ();
    
    bool
    IsValid () const;
    
    bool
    GetIncludeArguments () const;
    
    void
    SetIncludeArguments (bool);
    
    bool
    GetIncludeLocals () const;
    
    void
    SetIncludeLocals (bool);
    
    bool
    GetIncludeStatics () const;
    
    void
    SetIncludeStatics (bool);
    
    bool
    GetInScopeOnly () const;
    
    void
    SetInScopeOnly (bool);
    
    bool
    GetIncludeRuntimeSupportValues () const;
    
    void
    SetIncludeRuntimeSupportValues (bool);
    
    lldb::DynamicValueType
    GetUseDynamic () const;
    
    void
    SetUseDynamic (lldb::DynamicValueType);
    
protected:
    VariablesOptionsImpl *
    operator->();
    
    const VariablesOptionsImpl *
    operator->() const;
    
    VariablesOptionsImpl *
    get ();
    
    VariablesOptionsImpl &
    ref();
    
    const VariablesOptionsImpl &
    ref() const;
    
    SBVariablesOptions (VariablesOptionsImpl *lldb_object_ptr);
    
    void
    SetOptions (VariablesOptionsImpl *lldb_object_ptr);
    
private:
    
    std::unique_ptr<VariablesOptionsImpl> m_opaque_ap;
};

} // namespace lldb

#endif  // LLDB_SBValue_h_
