From 709afcd94508dabb32c5128ee920c61e1573b2d2 Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Thu, 15 Mar 2018 19:14:55 +0100 Subject: [PATCH] nic_router: overwritable reference wrapper While references are const and always valid, this wrapper is like a reference that is only always valid and can be overwritten. Ref #2670 --- repos/os/src/server/nic_router/reference.h | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 repos/os/src/server/nic_router/reference.h diff --git a/repos/os/src/server/nic_router/reference.h b/repos/os/src/server/nic_router/reference.h new file mode 100644 index 0000000000..32603ef4af --- /dev/null +++ b/repos/os/src/server/nic_router/reference.h @@ -0,0 +1,53 @@ +/* + * \brief Reference that can be overwritten + * \author Martin Stein + * \date 2016-08-24 + */ + +/* + * Copyright (C) 2016-2017 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU Affero General Public License version 3. + */ + +#ifndef _REFERENCE_H_ +#define _REFERENCE_H_ + +namespace Net { + + template class Reference; + template class Const_reference; +} + + +template +class Net::Reference +{ + private: + + T *_obj; + + public: + + Reference(T &obj) : _obj(&obj) { } + + T &operator () () const { return *_obj; } +}; + + +template +class Net::Const_reference +{ + private: + + T const *_obj; + + public: + + Const_reference(T const &obj) : _obj(&obj) { } + + T const &operator () () const { return *_obj; } +}; + +#endif /* _REFERENCE_H_ */