openMSX
Connector.hh
Go to the documentation of this file.
1#ifndef CONNECTOR_HH
2#define CONNECTOR_HH
3
4#include "EmuTime.hh"
5#include "serialize_meta.hh"
6#include <memory>
7#include <string_view>
8
9namespace openmsx {
10
11class Pluggable;
12class PluggingController;
13
21{
22public:
23 Connector(const Connector&) = delete;
24 Connector& operator=(const Connector&) = delete;
25
29 [[nodiscard]] const std::string& getName() const { return name; }
30
34 [[nodiscard]] virtual std::string_view getDescription() const = 0;
35
40 [[nodiscard]] virtual std::string_view getClass() const = 0;
41
47 virtual void plug(Pluggable& device, EmuTime::param time);
48
54 virtual void unplug(EmuTime::param time);
55
59 [[nodiscard]] Pluggable& getPlugged() const { return *plugged; }
60
62 return pluggingController;
63 }
64
65 template<typename Archive>
66 void serialize(Archive& ar, unsigned version);
67
68protected:
75 Connector(PluggingController& pluggingController,
76 std::string name, std::unique_ptr<Pluggable> dummy);
77
78 ~Connector();
79
80private:
81 PluggingController& pluggingController;
82 const std::string name;
83 const std::unique_ptr<Pluggable> dummy;
84 Pluggable* plugged;
85};
86
88
89} // namespace openmsx
90
91#endif
Represents something you can plug devices into.
Definition Connector.hh:21
const std::string & getName() const
Name that identifies this connector.
Definition Connector.hh:29
virtual std::string_view getClass() const =0
A Connector belong to a certain class.
Pluggable & getPlugged() const
Returns the Pluggable currently plugged in.
Definition Connector.hh:59
virtual std::string_view getDescription() const =0
Get a description for this connector.
void serialize(Archive &ar, unsigned version)
Definition Connector.cc:38
virtual void unplug(EmuTime::param time)
This unplugs the currently inserted Pluggable from this Connector.
Definition Connector.cc:31
PluggingController & getPluggingController() const
Definition Connector.hh:61
virtual void plug(Pluggable &device, EmuTime::param time)
This plugs a Pluggable in this Connector.
Definition Connector.cc:25
Connector & operator=(const Connector &)=delete
Connector(const Connector &)=delete
Central administration of Connectors and Pluggables.
This file implemented 3 utility functions:
Definition Autofire.cc:9
#define REGISTER_BASE_CLASS(CLASS, NAME)