/*
Copyright (C) 2006 Evan Teran
                   eteran@alum.rit.edu

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/

#ifndef BREAKPOINT_20060720_H_
#define BREAKPOINT_20060720_H_

#include <QByteArray>
#include <QString>
#include "Types.h"

class Breakpoint {
public:
	Breakpoint();
	
	enum FLAGS {
		FLAG_NONE		= 0x00000000,
		FLAG_ONETIME	= 0x00000001,
		FLAG_ENABLED	= 0x00000002
	};
	
	QByteArray		originalBytes;
	QString			condition;
	edb::address_t	address;
	unsigned int	passcount;

public:
	bool oneTime() const { return flags & FLAG_ONETIME; }
	bool enabled() const { return flags & FLAG_ENABLED; }
	
	void setOneTime(bool value) { flags ^= (- static_cast<int>(value) ^ flags) & FLAG_ONETIME; }
	void setEnabled(bool value) { flags ^= (- static_cast<int>(value) ^ flags) & FLAG_ENABLED; }
	
private:
	unsigned int flags;
};

#endif

