]> git.tdb.fi Git - libs/core.git/blob - source/io/handle.h
Add move semantics to Variant
[libs/core.git] / source / io / handle.h
1 #ifndef MSP_IO_HANDLE_H_
2 #define MSP_IO_HANDLE_H_
3
4 #include <cstddef>
5 #include <msp/core/mspcore_api.h>
6
7 namespace Msp {
8 namespace IO {
9
10 class MSPCORE_API Handle
11 {
12 public:
13         struct Private;
14
15 private:
16         Private *priv = nullptr;
17
18 public:
19         Handle();
20         Handle(const Handle &);
21         Handle &operator=(const Handle &);
22         ~Handle();
23
24         Private &operator*() { return *priv; }
25         const Private &operator*() const { return *priv; }
26
27         explicit operator bool() const;
28 };
29
30
31 void sys_set_blocking(Handle &, bool);
32 void sys_set_inherit(Handle &, bool);
33 std::size_t sys_read(Handle &, char *, std::size_t);
34 std::size_t sys_write(Handle &, const char *, std::size_t);
35 void sys_close(Handle &);
36
37 } // namespace IO
38 } // namespace Msp
39
40 #endif