io/BufferedOutputStream: more API documentation
This commit is contained in:
parent
d1f9b06f84
commit
9da28e5c73
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014-2019 Max Kellermann <max.kellermann@gmail.com>
|
* Copyright 2014-2021 Max Kellermann <max.kellermann@gmail.com>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@ -46,6 +46,9 @@ class OutputStream;
|
|||||||
* number of OutputStream::Write() calls.
|
* number of OutputStream::Write() calls.
|
||||||
*
|
*
|
||||||
* All wchar_t based strings are converted to UTF-8.
|
* All wchar_t based strings are converted to UTF-8.
|
||||||
|
*
|
||||||
|
* To make sure everything is written to the underlying #OutputStream,
|
||||||
|
* call Flush() before destructing this object.
|
||||||
*/
|
*/
|
||||||
class BufferedOutputStream {
|
class BufferedOutputStream {
|
||||||
OutputStream &os;
|
OutputStream &os;
|
||||||
@ -56,27 +59,49 @@ public:
|
|||||||
explicit BufferedOutputStream(OutputStream &_os) noexcept
|
explicit BufferedOutputStream(OutputStream &_os) noexcept
|
||||||
:os(_os), buffer(32768) {}
|
:os(_os), buffer(32768) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write the contents of a buffer.
|
||||||
|
*/
|
||||||
void Write(const void *data, std::size_t size);
|
void Write(const void *data, std::size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write the given object. Note that this is only safe with
|
||||||
|
* POD types. Types with padding can expose sensitive data.
|
||||||
|
*/
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void WriteT(const T &value) {
|
void WriteT(const T &value) {
|
||||||
Write(&value, sizeof(value));
|
Write(&value, sizeof(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write one narrow character.
|
||||||
|
*/
|
||||||
void Write(const char &ch) {
|
void Write(const char &ch) {
|
||||||
WriteT(ch);
|
WriteT(ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write a null-terminated string.
|
||||||
|
*/
|
||||||
void Write(const char *p);
|
void Write(const char *p);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write a printf-style formatted string.
|
||||||
|
*/
|
||||||
gcc_printf(2,3)
|
gcc_printf(2,3)
|
||||||
void Format(const char *fmt, ...);
|
void Format(const char *fmt, ...);
|
||||||
|
|
||||||
#ifdef _UNICODE
|
#ifdef _UNICODE
|
||||||
|
/**
|
||||||
|
* Write one narrow character.
|
||||||
|
*/
|
||||||
void Write(const wchar_t &ch) {
|
void Write(const wchar_t &ch) {
|
||||||
WriteWideToUTF8(&ch, 1);
|
WriteWideToUTF8(&ch, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write a null-terminated wide string.
|
||||||
|
*/
|
||||||
void Write(const wchar_t *p);
|
void Write(const wchar_t *p);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -93,6 +118,10 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function which constructs a #BufferedOutputStream, calls the
|
||||||
|
* given function and flushes the #BufferedOutputStream.
|
||||||
|
*/
|
||||||
template<typename F>
|
template<typename F>
|
||||||
void
|
void
|
||||||
WithBufferedOutputStream(OutputStream &os, F &&f)
|
WithBufferedOutputStream(OutputStream &os, F &&f)
|
||||||
|
Loading…
Reference in New Issue
Block a user