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

// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/Breakpoint/StoppointCallbackContext.h"

using namespace lldb_private;

StoppointCallbackContext::StoppointCallbackContext() :
    event (nullptr),
    exe_ctx_ref (),
    is_synchronous (false)
{
}

StoppointCallbackContext::StoppointCallbackContext(Event *e, const ExecutionContext &exe_ctx, bool synchronously) :
    event (e),
    exe_ctx_ref (exe_ctx),
    is_synchronous(synchronously)
{
}

void
StoppointCallbackContext::Clear()
{
    event = nullptr;
    exe_ctx_ref.Clear();
    is_synchronous = false;
}
