mirror of
https://github.com/fmtlib/fmt.git
synced 2024-12-02 06:20:09 +00:00
Merge ostream.cc into ostream.h
This commit is contained in:
parent
955062da2e
commit
941663d038
@ -82,8 +82,8 @@ endfunction()
|
|||||||
|
|
||||||
# Define the fmt library, its includes and the needed defines.
|
# Define the fmt library, its includes and the needed defines.
|
||||||
# format.cc is added to FMT_HEADERS for the header-only configuration.
|
# format.cc is added to FMT_HEADERS for the header-only configuration.
|
||||||
add_headers(FMT_HEADERS core.h format.h format.cc locale.h ostream.h ostream.cc
|
add_headers(FMT_HEADERS core.h format.h format.cc locale.h ostream.h printf.h
|
||||||
printf.h string.h time.h)
|
string.h time.h)
|
||||||
if (HAVE_OPEN)
|
if (HAVE_OPEN)
|
||||||
add_headers(FMT_HEADERS posix.h)
|
add_headers(FMT_HEADERS posix.h)
|
||||||
add_headers(FMT_SOURCES posix.cc)
|
add_headers(FMT_SOURCES posix.cc)
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
/*
|
|
||||||
Formatting library for C++ - std::ostream support
|
|
||||||
|
|
||||||
Copyright (c) 2012 - 2016, Victor Zverovich
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
For the license information refer to format.h.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "fmt/ostream.h"
|
|
||||||
|
|
||||||
namespace fmt {
|
|
||||||
|
|
||||||
namespace internal {
|
|
||||||
FMT_FUNC void write(std::ostream &os, buffer &buf) {
|
|
||||||
const char *data = buf.data();
|
|
||||||
typedef std::make_unsigned<std::streamsize>::type UnsignedStreamSize;
|
|
||||||
UnsignedStreamSize size = buf.size();
|
|
||||||
UnsignedStreamSize max_size =
|
|
||||||
internal::to_unsigned((std::numeric_limits<std::streamsize>::max)());
|
|
||||||
do {
|
|
||||||
UnsignedStreamSize n = size <= max_size ? size : max_size;
|
|
||||||
os.write(data, static_cast<std::streamsize>(n));
|
|
||||||
data += n;
|
|
||||||
size -= n;
|
|
||||||
} while (size != 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FMT_FUNC void vprint(std::ostream &os, string_view format_str,
|
|
||||||
format_args args) {
|
|
||||||
memory_buffer buffer;
|
|
||||||
vformat_to(buffer, format_str, args);
|
|
||||||
internal::write(os, buffer);
|
|
||||||
}
|
|
||||||
} // namespace fmt
|
|
@ -69,7 +69,20 @@ struct convert_to_int_impl<T, true> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Write the content of buf to os.
|
// Write the content of buf to os.
|
||||||
void write(std::ostream &os, buffer &buf);
|
template <typename Char>
|
||||||
|
void write(std::basic_ostream<Char> &os, basic_buffer<Char> &buf) {
|
||||||
|
const Char *data = buf.data();
|
||||||
|
typedef std::make_unsigned<std::streamsize>::type UnsignedStreamSize;
|
||||||
|
UnsignedStreamSize size = buf.size();
|
||||||
|
UnsignedStreamSize max_size =
|
||||||
|
internal::to_unsigned((std::numeric_limits<std::streamsize>::max)());
|
||||||
|
do {
|
||||||
|
UnsignedStreamSize n = size <= max_size ? size : max_size;
|
||||||
|
os.write(data, static_cast<std::streamsize>(n));
|
||||||
|
data += n;
|
||||||
|
size -= n;
|
||||||
|
} while (size != 0);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename Char, typename T>
|
template <typename Char, typename T>
|
||||||
void format_value(basic_buffer<Char> &buffer, const T &value) {
|
void format_value(basic_buffer<Char> &buffer, const T &value) {
|
||||||
@ -100,7 +113,11 @@ struct formatter<T, Char,
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
FMT_API void vprint(std::ostream &os, string_view format_str, format_args args);
|
inline void vprint(std::ostream &os, string_view format_str, format_args args) {
|
||||||
|
memory_buffer buffer;
|
||||||
|
vformat_to(buffer, format_str, args);
|
||||||
|
internal::write(os, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\rst
|
\rst
|
||||||
@ -118,8 +135,4 @@ inline void print(std::ostream &os, string_view format_str,
|
|||||||
}
|
}
|
||||||
} // namespace fmt
|
} // namespace fmt
|
||||||
|
|
||||||
#ifdef FMT_HEADER_ONLY
|
|
||||||
# include "ostream.cc"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // FMT_OSTREAM_H_
|
#endif // FMT_OSTREAM_H_
|
||||||
|
Loading…
Reference in New Issue
Block a user