orwell 0.0.0
ReferenceController.hpp
1/*
2 Copyright (c) Tobias Löw
3 Written by Tobias Löw <https://tobiloew.ch>
4
5 This file is part of orwell.
6
7 gafro is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License version 3 as
9 published by the Free Software Foundation.
10
11 gafro is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with gafro. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#pragma once
21
22#include <orwell/Controller.hpp>
23
24namespace orwell
25{
26
34 template <class Reference, class DerivedController>
35 class ReferenceController : public DerivedController
36 {
37 public:
45 ReferenceController(const sackmesser::Interface::Ptr &interface, const std::string &name);
46
50 virtual ~ReferenceController();
51
58 void setReference(const Reference &reference);
59
65 const Reference &getReference() const;
66
67 protected:
68 private:
70 Reference reference_;
71
72 public:
74 using Ptr = std::shared_ptr<ReferenceController>;
75 };
76
77} // namespace orwell
78
79#include <orwell/ReferenceController.hxx>
base implementation of a Controller tracking a given Reference
const Reference & getReference() const
provide access to the Reference to derived classes
void setReference(const Reference &reference)
set Reference
ReferenceController(const sackmesser::Interface::Ptr &interface, const std::string &name)
std::shared_ptr< ReferenceController > Ptr
typedef