root/src/kits/debugger/debugger_interface/DebugEvent.cpp
/*
 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */

#include "DebugEvent.h"

#include "CpuState.h"


// #pragma mark - DebugEvent


DebugEvent::DebugEvent(int32 eventType, team_id team,
        thread_id thread)
        :
        fEventType(eventType),
        fTeam(team),
        fThread(thread),
        fThreadStopped(false)
{
}


DebugEvent::~DebugEvent()
{
}


void
DebugEvent::SetThreadStopped(bool stopped)
{
        fThreadStopped = stopped;
}


// #pragma mark - CpuStateEvent


CpuStateEvent::CpuStateEvent(debug_debugger_message eventType, team_id team,
        thread_id thread, CpuState* state)
        :
        DebugEvent(eventType, team, thread),
        fCpuState(state)
{
        if (fCpuState != NULL)
                fCpuState->AcquireReference();
}


CpuStateEvent::~CpuStateEvent()
{
        if (fCpuState != NULL)
                fCpuState->ReleaseReference();
}


// #pragma mark - ThreadDebuggedEvent


ThreadDebuggedEvent::ThreadDebuggedEvent(team_id team, thread_id thread)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_THREAD_DEBUGGED, team, thread)
{
}


// #pragma mark - DebuggerCallEvent


DebuggerCallEvent::DebuggerCallEvent(team_id team, thread_id thread,
        target_addr_t message)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_DEBUGGER_CALL, team, thread),
        fMessage(message)
{
}


// #pragma mark - BreakpointHitEvent


BreakpointHitEvent::BreakpointHitEvent(team_id team, thread_id thread,
        CpuState* state)
        :
        CpuStateEvent(B_DEBUGGER_MESSAGE_BREAKPOINT_HIT, team, thread, state)
{
}


// #pragma mark - WatchpointHitEvent


WatchpointHitEvent::WatchpointHitEvent(team_id team, thread_id thread,
        CpuState* state)
        :
        CpuStateEvent(B_DEBUGGER_MESSAGE_WATCHPOINT_HIT, team, thread, state)
{
}



// #pragma mark - SingleStepEvent


SingleStepEvent::SingleStepEvent(team_id team, thread_id thread,
        CpuState* state)
        :
        CpuStateEvent(B_DEBUGGER_MESSAGE_SINGLE_STEP, team, thread, state)
{
}


// #pragma mark - ExceptionOccurredEvent


ExceptionOccurredEvent::ExceptionOccurredEvent(team_id team, thread_id thread,
        debug_exception_type exception)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_EXCEPTION_OCCURRED, team, thread),
        fException(exception)
{
}


// #pragma mark - TeamDeletedEvent


TeamDeletedEvent::TeamDeletedEvent(team_id team, thread_id thread)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_TEAM_DELETED, team, thread)
{
}


// #pragma mark - TeamExecEvent


TeamExecEvent::TeamExecEvent(team_id team, thread_id thread)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_TEAM_EXEC, team, thread)
{
}


// #pragma mark - ThreadCreatedEvent


ThreadCreatedEvent::ThreadCreatedEvent(team_id team, thread_id thread,
        thread_id newThread)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_THREAD_CREATED, team, thread),
        fNewThread(newThread)
{
}


// #pragma mark - ThreadRenamedEvent


ThreadRenamedEvent::ThreadRenamedEvent(team_id team, thread_id thread,
        thread_id renamedThread, const char* newName)
        :
        DebugEvent(DEBUGGER_MESSAGE_THREAD_RENAMED, team, thread),
        fRenamedThread(renamedThread)
{
        strlcpy(fName, newName, sizeof(fName));
}


// #pragma mark - ThreadPriorityChangedEvent


ThreadPriorityChangedEvent::ThreadPriorityChangedEvent(team_id team,
        thread_id thread, thread_id changedThread, int32 newPriority)
        :
        DebugEvent(DEBUGGER_MESSAGE_THREAD_PRIORITY_CHANGED, team, thread),
        fChangedThread(changedThread),
        fNewPriority(newPriority)
{
}


// #pragma mark - ThreadDeletedEvent


ThreadDeletedEvent::ThreadDeletedEvent(team_id team, thread_id thread)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_THREAD_DELETED, team, thread)
{
}


// #pragma mark - ImageCreatedEvent


ImageCreatedEvent::ImageCreatedEvent(team_id team, thread_id thread,
        const ImageInfo& info)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_IMAGE_CREATED, team, thread),
        fInfo(info)
{
}


// #pragma mark - ImageDeletedEvent


ImageDeletedEvent::ImageDeletedEvent(team_id team, thread_id thread,
        const ImageInfo& info)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_IMAGE_DELETED, team, thread),
        fInfo(info)
{
}


// #pragma mark - PostSyscallEvent


PostSyscallEvent::PostSyscallEvent(team_id team, thread_id thread,
        const SyscallInfo& info)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_POST_SYSCALL, team, thread),
        fInfo(info)
{
}


// #pragma mark - HandedOverEvent


HandedOverEvent::HandedOverEvent(team_id team, thread_id thread,
        thread_id causingThread)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_HANDED_OVER, team, thread),
        fCausingThread(causingThread)
{
}


// #pragma mark - SignalReceivedEvent


SignalReceivedEvent::SignalReceivedEvent(team_id team, thread_id thread,
        const SignalInfo& info)
        :
        DebugEvent(B_DEBUGGER_MESSAGE_SIGNAL_RECEIVED, team, thread),
        fInfo(info)
{
}