]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/handle.h
Add a pimpl Handle class
[libs/core.git] / source / io / handle.h
diff --git a/source/io/handle.h b/source/io/handle.h
new file mode 100644 (file)
index 0000000..44b5937
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef MSP_IO_HANDLE_H_
+#define MSP_IO_HANDLE_H_
+
+namespace Msp {
+namespace IO {
+
+class Handle
+{
+public:
+       struct Private;
+
+private:
+       Private *priv;
+
+public:
+       Handle();
+       Handle(const Handle &);
+       Handle &operator=(const Handle &);
+       ~Handle();
+
+       Private &operator*() { return *priv; }
+       const Private &operator*() const { return *priv; }
+
+       /** This is effectively a boolean conversion, but avoids accidental
+       conversion to OS native handles.  Unix-based systems use int and win32 uses
+       void *; const void * is not implicitly convertible to either. */
+       operator const void *() const;
+};
+
+} // namespace IO
+} // namespace Msp
+
+#endif