mirror of
https://github.com/gabime/spdlog.git
synced 2024-11-15 16:35:45 +08:00
astyle
This commit is contained in:
parent
6128a87da2
commit
87ddb9a6c1
File diff suppressed because it is too large
Load Diff
@ -1,107 +1,118 @@
|
|||||||
/*
|
/*
|
||||||
Formatting library for C++ - std::ostream support
|
Formatting library for C++ - std::ostream support
|
||||||
|
|
||||||
Copyright (c) 2012 - 2016, Victor Zverovich
|
Copyright (c) 2012 - 2016, Victor Zverovich
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
For the license information refer to format.h.
|
For the license information refer to format.h.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef FMT_OSTREAM_H_
|
#ifndef FMT_OSTREAM_H_
|
||||||
#define FMT_OSTREAM_H_
|
#define FMT_OSTREAM_H_
|
||||||
|
|
||||||
// commented out by spdlog
|
// commented out by spdlog
|
||||||
//#include "format.h"
|
//#include "format.h"
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
|
|
||||||
namespace fmt {
|
namespace fmt
|
||||||
|
{
|
||||||
namespace internal {
|
|
||||||
|
namespace internal
|
||||||
template <class Char>
|
{
|
||||||
class FormatBuf : public std::basic_streambuf<Char> {
|
|
||||||
private:
|
template <class Char>
|
||||||
typedef typename std::basic_streambuf<Char>::int_type int_type;
|
class FormatBuf : public std::basic_streambuf<Char>
|
||||||
typedef typename std::basic_streambuf<Char>::traits_type traits_type;
|
{
|
||||||
|
private:
|
||||||
Buffer<Char> &buffer_;
|
typedef typename std::basic_streambuf<Char>::int_type int_type;
|
||||||
Char *start_;
|
typedef typename std::basic_streambuf<Char>::traits_type traits_type;
|
||||||
|
|
||||||
public:
|
Buffer<Char> &buffer_;
|
||||||
FormatBuf(Buffer<Char> &buffer) : buffer_(buffer), start_(&buffer[0]) {
|
Char *start_;
|
||||||
this->setp(start_, start_ + buffer_.capacity());
|
|
||||||
}
|
public:
|
||||||
|
FormatBuf(Buffer<Char> &buffer) : buffer_(buffer), start_(&buffer[0])
|
||||||
int_type overflow(int_type ch = traits_type::eof()) {
|
{
|
||||||
if (!traits_type::eq_int_type(ch, traits_type::eof())) {
|
this->setp(start_, start_ + buffer_.capacity());
|
||||||
size_t buf_size = size();
|
}
|
||||||
buffer_.resize(buf_size);
|
|
||||||
buffer_.reserve(buf_size * 2);
|
int_type overflow(int_type ch = traits_type::eof())
|
||||||
|
{
|
||||||
start_ = &buffer_[0];
|
if (!traits_type::eq_int_type(ch, traits_type::eof()))
|
||||||
start_[buf_size] = traits_type::to_char_type(ch);
|
{
|
||||||
this->setp(start_ + buf_size + 1, start_ + buf_size * 2);
|
size_t buf_size = size();
|
||||||
}
|
buffer_.resize(buf_size);
|
||||||
return ch;
|
buffer_.reserve(buf_size * 2);
|
||||||
}
|
|
||||||
|
start_ = &buffer_[0];
|
||||||
size_t size() const {
|
start_[buf_size] = traits_type::to_char_type(ch);
|
||||||
return to_unsigned(this->pptr() - start_);
|
this->setp(start_ + buf_size + 1, start_ + buf_size * 2);
|
||||||
}
|
}
|
||||||
};
|
return ch;
|
||||||
|
}
|
||||||
Yes &convert(std::ostream &);
|
|
||||||
|
size_t size() const
|
||||||
struct DummyStream : std::ostream {
|
{
|
||||||
DummyStream(); // Suppress a bogus warning in MSVC.
|
return to_unsigned(this->pptr() - start_);
|
||||||
// Hide all operator<< overloads from std::ostream.
|
}
|
||||||
void operator<<(Null<>);
|
};
|
||||||
};
|
|
||||||
|
Yes &convert(std::ostream &);
|
||||||
No &operator<<(std::ostream &, int);
|
|
||||||
|
struct DummyStream : std::ostream
|
||||||
template<typename T>
|
{
|
||||||
struct ConvertToIntImpl<T, true> {
|
DummyStream(); // Suppress a bogus warning in MSVC.
|
||||||
// Convert to int only if T doesn't have an overloaded operator<<.
|
// Hide all operator<< overloads from std::ostream.
|
||||||
enum {
|
void operator<<(Null<>);
|
||||||
value = sizeof(convert(get<DummyStream>() << get<T>())) == sizeof(No)
|
};
|
||||||
};
|
|
||||||
};
|
No &operator<<(std::ostream &, int);
|
||||||
|
|
||||||
// Write the content of w to os.
|
template<typename T>
|
||||||
void write(std::ostream &os, Writer &w);
|
struct ConvertToIntImpl<T, true>
|
||||||
} // namespace internal
|
{
|
||||||
|
// Convert to int only if T doesn't have an overloaded operator<<.
|
||||||
// Formats a value.
|
enum
|
||||||
template <typename Char, typename ArgFormatter, typename T>
|
{
|
||||||
void format_arg(BasicFormatter<Char, ArgFormatter> &f,
|
value = sizeof(convert(get<DummyStream>() << get<T>())) == sizeof(No)
|
||||||
const Char *&format_str, const T &value) {
|
};
|
||||||
internal::MemoryBuffer<Char, internal::INLINE_BUFFER_SIZE> buffer;
|
};
|
||||||
|
|
||||||
internal::FormatBuf<Char> format_buf(buffer);
|
// Write the content of w to os.
|
||||||
std::basic_ostream<Char> output(&format_buf);
|
void write(std::ostream &os, Writer &w);
|
||||||
output << value;
|
} // namespace internal
|
||||||
|
|
||||||
BasicStringRef<Char> str(&buffer[0], format_buf.size());
|
// Formats a value.
|
||||||
typedef internal::MakeArg< BasicFormatter<Char> > MakeArg;
|
template <typename Char, typename ArgFormatter, typename T>
|
||||||
format_str = f.format(format_str, MakeArg(str));
|
void format_arg(BasicFormatter<Char, ArgFormatter> &f,
|
||||||
}
|
const Char *&format_str, const T &value)
|
||||||
|
{
|
||||||
/**
|
internal::MemoryBuffer<Char, internal::INLINE_BUFFER_SIZE> buffer;
|
||||||
\rst
|
|
||||||
Prints formatted data to the stream *os*.
|
internal::FormatBuf<Char> format_buf(buffer);
|
||||||
|
std::basic_ostream<Char> output(&format_buf);
|
||||||
**Example**::
|
output << value;
|
||||||
|
|
||||||
print(cerr, "Don't {}!", "panic");
|
BasicStringRef<Char> str(&buffer[0], format_buf.size());
|
||||||
\endrst
|
typedef internal::MakeArg< BasicFormatter<Char> > MakeArg;
|
||||||
*/
|
format_str = f.format(format_str, MakeArg(str));
|
||||||
FMT_API void print(std::ostream &os, CStringRef format_str, ArgList args);
|
}
|
||||||
FMT_VARIADIC(void, print, std::ostream &, CStringRef)
|
|
||||||
} // namespace fmt
|
/**
|
||||||
|
\rst
|
||||||
#ifdef FMT_HEADER_ONLY
|
Prints formatted data to the stream *os*.
|
||||||
# include "ostream.cc"
|
|
||||||
#endif
|
**Example**::
|
||||||
|
|
||||||
|
print(cerr, "Don't {}!", "panic");
|
||||||
|
\endrst
|
||||||
|
*/
|
||||||
|
FMT_API void print(std::ostream &os, CStringRef format_str, ArgList args);
|
||||||
|
FMT_VARIADIC(void, print, std::ostream &, CStringRef)
|
||||||
|
} // namespace fmt
|
||||||
|
|
||||||
|
#ifdef FMT_HEADER_ONLY
|
||||||
|
# include "ostream.cc"
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // FMT_OSTREAM_H_
|
#endif // FMT_OSTREAM_H_
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user