DNA Calib 1.1
Project brief
StreamScope.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "trio/Stream.h"
6
7#include <utility>
8
9namespace trio {
10
12 public:
13 explicit StreamScope(Controllable* stream_) : stream{stream_} {
14 stream->open();
15 }
16
18 if (stream != nullptr) {
19 stream->close();
20 }
21 }
22
23 StreamScope(const StreamScope&) = delete;
25
26 StreamScope(StreamScope&& rhs) noexcept : stream{nullptr} {
27 std::swap(stream, rhs.stream);
28 }
29
31 std::swap(stream, rhs.stream);
32 return *this;
33 }
34
35 private:
37};
38
39} // namespace trio
virtual void close()=0
Close access to the stream.
Definition: Concepts.h:114
virtual void open()=0
Open access to the stream.
Definition: StreamScope.h:11
StreamScope(const StreamScope &)=delete
StreamScope(StreamScope &&rhs) noexcept
Definition: StreamScope.h:26
Controllable * stream
Definition: StreamScope.h:36
~StreamScope()
Definition: StreamScope.h:17
StreamScope & operator=(StreamScope &&rhs) noexcept
Definition: StreamScope.h:30
StreamScope & operator=(const StreamScope &)=delete
StreamScope(Controllable *stream_)
Definition: StreamScope.h:13
Definition: Concepts.h:10