aboutsummaryrefslogtreecommitdiff
path: root/butl/fdstream
diff options
context:
space:
mode:
Diffstat (limited to 'butl/fdstream')
-rw-r--r--butl/fdstream46
1 files changed, 24 insertions, 22 deletions
diff --git a/butl/fdstream b/butl/fdstream
index bb14f25..0caac5c 100644
--- a/butl/fdstream
+++ b/butl/fdstream
@@ -10,6 +10,8 @@
#include <ostream>
#include <cstdint> // uint16_t
+#include <butl/export>
+
#include <butl/path>
#include <butl/filesystem> // permissions
@@ -38,7 +40,7 @@ namespace butl
// used
// - not movable, though can be easily supported
//
- class fdbuf: public std::basic_streambuf<char>
+ class LIBBUTL_EXPORT fdbuf: public std::basic_streambuf<char>
{
public:
virtual
@@ -111,10 +113,10 @@ namespace butl
skip = 0x04
};
- fdstream_mode operator& (fdstream_mode, fdstream_mode);
- fdstream_mode operator| (fdstream_mode, fdstream_mode);
- fdstream_mode operator&= (fdstream_mode&, fdstream_mode);
- fdstream_mode operator|= (fdstream_mode&, fdstream_mode);
+ inline fdstream_mode operator& (fdstream_mode, fdstream_mode);
+ inline fdstream_mode operator| (fdstream_mode, fdstream_mode);
+ inline fdstream_mode operator&= (fdstream_mode&, fdstream_mode);
+ inline fdstream_mode operator|= (fdstream_mode&, fdstream_mode);
// Extended (compared to ios::openmode) file open flags.
//
@@ -132,12 +134,12 @@ namespace butl
none = 0 // Usefull when build the mode incrementally.
};
- fdopen_mode operator& (fdopen_mode, fdopen_mode);
- fdopen_mode operator| (fdopen_mode, fdopen_mode);
- fdopen_mode operator&= (fdopen_mode&, fdopen_mode);
- fdopen_mode operator|= (fdopen_mode&, fdopen_mode);
+ inline fdopen_mode operator& (fdopen_mode, fdopen_mode);
+ inline fdopen_mode operator| (fdopen_mode, fdopen_mode);
+ inline fdopen_mode operator&= (fdopen_mode&, fdopen_mode);
+ inline fdopen_mode operator|= (fdopen_mode&, fdopen_mode);
- class fdstream_base
+ class LIBBUTL_EXPORT fdstream_base
{
protected:
fdstream_base () = default;
@@ -180,7 +182,7 @@ namespace butl
// Note that ifdstream destructor will close an open file descriptor but
// will ignore any errors. To detect such errors, call close() explicitly.
//
- class ifdstream: fdstream_base, public std::istream
+ class LIBBUTL_EXPORT ifdstream: fdstream_base, public std::istream
{
public:
// Create an unopened object with iostate = badbit | failbit (we cannot
@@ -260,7 +262,7 @@ namespace butl
// (std::uncaught_exception() == true). This is enforced with assert() in
// the ofdstream destructor.
//
- class ofdstream: fdstream_base, public std::ostream
+ class LIBBUTL_EXPORT ofdstream: fdstream_base, public std::ostream
{
public:
// Create an unopened object with iostate = badbit | failbit (we cannot
@@ -344,7 +346,7 @@ namespace butl
// - The fail and eof bits may be left cleared in the stream exception mask
// when the function throws because of badbit.
//
- ifdstream&
+ LIBBUTL_EXPORT ifdstream&
getline (ifdstream&, std::string&, char delim = '\n');
// Open a file returning the file descriptor on success and throwing
@@ -363,21 +365,21 @@ namespace butl
// process' umask, so effective permissions are permissions & ~umask. On
// Windows permissions other than ru and wu are unlikelly to have effect.
//
- int
+ LIBBUTL_EXPORT int
fdopen (const char*,
fdopen_mode,
permissions = permissions::ru | permissions::wu |
permissions::rg | permissions::wg |
permissions::ro | permissions::wo);
- int
+ LIBBUTL_EXPORT int
fdopen (const std::string&,
fdopen_mode,
permissions = permissions::ru | permissions::wu |
permissions::rg | permissions::wg |
permissions::ro | permissions::wo);
- int
+ LIBBUTL_EXPORT int
fdopen (const path&,
fdopen_mode,
permissions = permissions::ru | permissions::wu |
@@ -387,15 +389,15 @@ namespace butl
// Set the translation mode for the file descriptor. Return the previous
// mode on success, throw ios::failure otherwise.
//
- fdstream_mode
+ LIBBUTL_EXPORT fdstream_mode
fdmode (int, fdstream_mode);
// Convenience functions for setting the translation mode for standard
// streams.
//
- fdstream_mode stdin_fdmode (fdstream_mode);
- fdstream_mode stdout_fdmode (fdstream_mode);
- fdstream_mode stderr_fdmode (fdstream_mode);
+ LIBBUTL_EXPORT fdstream_mode stdin_fdmode (fdstream_mode);
+ LIBBUTL_EXPORT fdstream_mode stdout_fdmode (fdstream_mode);
+ LIBBUTL_EXPORT fdstream_mode stderr_fdmode (fdstream_mode);
// Low-level, nothrow file descriptor API.
//
@@ -403,7 +405,7 @@ namespace butl
// Close the file descriptor. Return true on success, set errno and return
// false otherwise.
//
- bool
+ LIBBUTL_EXPORT bool
fdclose (int) noexcept;
// Open the null device (e.g., /dev/null) that discards all data written to
@@ -412,7 +414,7 @@ namespace butl
// Note that it's the caller's responsibility to close the returned file
// descriptor.
//
- int
+ LIBBUTL_EXPORT int
fdnull () noexcept;
}