/*
 * Copyright 2012, Rene Gollent, rene@gollent.com.
 * Distributed under the terms of the MIT License.
 */

#include "Watchpoint.h"


Watchpoint::Watchpoint(target_addr_t address, uint32 type, int32 length)
	:
	fAddress(address),
	fType(type),
	fLength(length),
	fInstalled(false),
	fEnabled(false)
{
}


Watchpoint::~Watchpoint()
{
}


void
Watchpoint::SetInstalled(bool installed)
{
	fInstalled = installed;
}


void
Watchpoint::SetEnabled(bool enabled)
{
	fEnabled = enabled;
}


bool
Watchpoint::Contains(target_addr_t address) const
{
	return address >= fAddress && address <= (fAddress + fLength);
}


int
Watchpoint::CompareWatchpoints(const Watchpoint* a, const Watchpoint* b)
{
	if (a->Address() < b->Address())
		return -1;
	return a->Address() == b->Address() ? 0 : 1;
}


int
Watchpoint::CompareAddressWatchpoint(const target_addr_t* address,
	const Watchpoint* watchpoint)
{
	if (*address < watchpoint->Address())
		return -1;
	return *address == watchpoint->Address() ? 0 : 1;
}