stella/src/debugger/DebuggerSystem.hxx

75 lines
2.2 KiB
C++
Raw Normal View History

//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
2019-01-01 15:05:51 +00:00
// Copyright (c) 1995-2019 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#ifndef DEBUGGER_SYSTEM_HXX
#define DEBUGGER_SYSTEM_HXX
class Debugger;
#include "Console.hxx"
/**
The DebuggerState class is used as a base class for state in all
DebuggerSystem objects. We make it a class so we can take advantage
of the copy constructor.
*/
class DebuggerState
{
public:
DebuggerState() = default;
~DebuggerState() = default;
DebuggerState(const DebuggerState&) = default;
DebuggerState(DebuggerState&&) = delete;
DebuggerState& operator=(const DebuggerState&) = default;
DebuggerState& operator=(DebuggerState&&) = delete;
};
/**
The base class for all debugger objects. Its real purpose is to
clean up the Debugger API, partitioning it into separate
subsystems.
*/
class DebuggerSystem
{
public:
DebuggerSystem(Debugger& dbg, Console& console) :
myDebugger(dbg), myConsole(console), mySystem(console.system()) { }
virtual ~DebuggerSystem() = default;
virtual const DebuggerState& getState() = 0;
virtual const DebuggerState& getOldState() = 0;
virtual void saveOldState() = 0;
virtual string toString() = 0;
protected:
Debugger& myDebugger;
Console& myConsole;
System& mySystem;
private:
// Following constructors and assignment operators not supported
DebuggerSystem() = delete;
DebuggerSystem(const DebuggerSystem&) = delete;
DebuggerSystem(DebuggerSystem&&) = delete;
DebuggerSystem& operator=(const DebuggerSystem&) = delete;
DebuggerSystem& operator=(DebuggerSystem&&) = delete;
};
#endif