⛏️ index : haiku.git

/*
 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Copyright 2013-2014, Rene Gollent, rene@gollent.com.
 * Distributed under the terms of the MIT License.
 */
#ifndef BREAKPOINT_SETTING_H
#define BREAKPOINT_SETTING_H


#include <String.h>

#include <ObjectList.h>

#include "SourceLocation.h"
#include "Types.h"


class BMessage;
class FunctionID;
class UserBreakpointLocation;


class BreakpointSetting {
public:
								BreakpointSetting();
								BreakpointSetting(
									const BreakpointSetting& other);
								~BreakpointSetting();

			status_t			SetTo(const UserBreakpointLocation& location,
									bool enabled, bool hidden,
									const BString& conditionExpression);
			status_t			SetTo(const BMessage& archive);
			status_t			WriteTo(BMessage& archive) const;

			FunctionID*			GetFunctionID() const	{ return fFunctionID; }
			const BString&		SourceFile() const		{ return fSourceFile; }
			SourceLocation		GetSourceLocation() const
									{ return fSourceLocation; }
			target_addr_t		RelativeAddress() const
									{ return fRelativeAddress; }

			bool				IsEnabled() const	{ return fEnabled; }
			bool				IsHidden() const	{ return fHidden; }

			const BString&		Condition() const
									{ return fConditionExpression; }

			BreakpointSetting&	operator=(const BreakpointSetting& other);

private:
			void				_Unset();

private:
			FunctionID*			fFunctionID;
			BString				fSourceFile;
			SourceLocation		fSourceLocation;
			target_addr_t		fRelativeAddress;
			bool				fEnabled;
			bool				fHidden;
			BString				fConditionExpression;
};


#endif	// BREAKPOINT_SETTING_H