Commit 9773e441 authored by Phil Willoughby's avatar Phil Willoughby Committed by Facebook Github Bot

Run clang-format over Format*.h

Summary:
Changes are planned, this will make it easier for the new code to look good
without making the older code look weird.

Reviewed By: yfeldblum

Differential Revision: D4514839

fbshipit-source-id: 43f8cd7d85901e1915cc434a0f4b5fd6bce1ec7a
parent 3259ce0e
This diff is collapsed.
......@@ -22,10 +22,10 @@
#include <type_traits>
#include <folly/Conv.h>
#include <folly/FormatArg.h>
#include <folly/Range.h>
#include <folly/Traits.h>
#include <folly/String.h>
#include <folly/FormatArg.h>
#include <folly/Traits.h>
// Ignore shadowing warnings within this file, so includers can use -Wshadow.
#pragma GCC diagnostic push
......@@ -34,12 +34,14 @@
namespace folly {
// forward declarations
template <bool containerMode, class... Args> class Formatter;
template <bool containerMode, class... Args>
class Formatter;
template <class... Args>
Formatter<false, Args...> format(StringPiece fmt, Args&&... args);
template <class C>
Formatter<true, C> vformat(StringPiece fmt, C&& container);
template <class T, class Enable=void> class FormatValue;
template <class T, class Enable = void>
class FormatValue;
// meta-attribute to identify formatters in this sea of template weirdness
namespace detail {
......@@ -71,9 +73,9 @@ class BaseFormatter {
* Append to a string.
*/
template <class Str>
typename std::enable_if<IsSomeString<Str>::value>::type
appendTo(Str& str) const {
auto appender = [&str] (StringPiece s) { str.append(s.data(), s.size()); };
typename std::enable_if<IsSomeString<Str>::value>::type appendTo(
Str& str) const {
auto appender = [&str](StringPiece s) { str.append(s.data(), s.size()); };
(*this)(appender);
}
......@@ -102,8 +104,8 @@ class BaseFormatter {
typedef BaseFormatter BaseType;
private:
typedef std::tuple<FormatValue<
typename std::decay<Args>::type>...> ValueTuple;
typedef std::tuple<FormatValue<typename std::decay<Args>::type>...>
ValueTuple;
static constexpr size_t valueCount = std::tuple_size<ValueTuple>::value;
template <size_t K, class Callback>
......@@ -118,7 +120,7 @@ class BaseFormatter {
if (i == K) {
static_cast<const Derived*>(this)->template doFormatArg<K>(arg, cb);
} else {
doFormatFrom<K+1>(i, arg, cb);
doFormatFrom<K + 1>(i, arg, cb);
}
}
......@@ -128,32 +130,36 @@ class BaseFormatter {
}
template <size_t K>
typename std::enable_if<K == valueCount, int>::type
getSizeArgFrom(size_t i, const FormatArg& arg) const {
typename std::enable_if<K == valueCount, int>::type getSizeArgFrom(
size_t i,
const FormatArg& arg) const {
arg.error("argument index out of range, max=", i);
}
template <class T>
typename std::enable_if<std::is_integral<T>::value &&
!std::is_same<T, bool>::value, int>::type
typename std::enable_if<
std::is_integral<T>::value && !std::is_same<T, bool>::value,
int>::type
getValue(const FormatValue<T>& format, const FormatArg&) const {
return static_cast<int>(format.getValue());
}
template <class T>
typename std::enable_if<!std::is_integral<T>::value ||
std::is_same<T, bool>::value, int>::type
typename std::enable_if<
!std::is_integral<T>::value || std::is_same<T, bool>::value,
int>::type
getValue(const FormatValue<T>&, const FormatArg& arg) const {
arg.error("dynamic field width argument must be integral");
}
template <size_t K>
typename std::enable_if<K < valueCount, int>::type
getSizeArgFrom(size_t i, const FormatArg& arg) const {
typename std::enable_if <
K<valueCount, int>::type getSizeArgFrom(size_t i, const FormatArg& arg)
const {
if (i == K) {
return getValue(std::get<K>(values_), arg);
}
return getSizeArgFrom<K+1>(i, arg);
return getSizeArgFrom<K + 1>(i, arg);
}
int getSizeArg(size_t i, const FormatArg& arg) const {
......@@ -181,23 +187,26 @@ class BaseFormatter {
};
template <bool containerMode, class... Args>
class Formatter : public BaseFormatter<Formatter<containerMode, Args...>,
containerMode,
Args...> {
class Formatter : public BaseFormatter<
Formatter<containerMode, Args...>,
containerMode,
Args...> {
private:
explicit Formatter(StringPiece& str, Args&&... args)
: BaseFormatter<Formatter<containerMode, Args...>,
containerMode,
Args...>(str, std::forward<Args>(args)...) {}
: BaseFormatter<
Formatter<containerMode, Args...>,
containerMode,
Args...>(str, std::forward<Args>(args)...) {}
template <size_t K, class Callback>
void doFormatArg(FormatArg& arg, Callback& cb) const {
std::get<K>(this->values_).format(arg, cb);
}
friend class BaseFormatter<Formatter<containerMode, Args...>,
containerMode,
Args...>;
friend class BaseFormatter<
Formatter<containerMode, Args...>,
containerMode,
Args...>;
template <class... A>
friend Formatter<false, A...> format(StringPiece fmt, A&&... arg);
......@@ -208,9 +217,10 @@ class Formatter : public BaseFormatter<Formatter<containerMode, Args...>,
/**
* Formatter objects can be written to streams.
*/
template<bool containerMode, class... Args>
std::ostream& operator<<(std::ostream& out,
const Formatter<containerMode, Args...>& formatter) {
template <bool containerMode, class... Args>
std::ostream& operator<<(
std::ostream& out,
const Formatter<containerMode, Args...>& formatter) {
auto writer = [&out](StringPiece sp) {
out.write(sp.data(), std::streamsize(sp.size()));
};
......@@ -222,8 +232,9 @@ std::ostream& operator<<(std::ostream& out,
* Formatter objects can be written to stdio FILEs.
*/
template <class Derived, bool containerMode, class... Args>
void writeTo(FILE* fp,
const BaseFormatter<Derived, containerMode, Args...>& formatter);
void writeTo(
FILE* fp,
const BaseFormatter<Derived, containerMode, Args...>& formatter);
/**
* Create a formatter object.
......@@ -234,8 +245,7 @@ void writeTo(FILE* fp,
*/
template <class... Args>
Formatter<false, Args...> format(StringPiece fmt, Args&&... args) {
return Formatter<false, Args...>(
fmt, std::forward<Args>(args)...);
return Formatter<false, Args...>(fmt, std::forward<Args>(args)...);
}
/**
......@@ -262,8 +272,7 @@ inline std::string sformat(StringPiece fmt, Args&&... args) {
*/
template <class Container>
Formatter<true, Container> vformat(StringPiece fmt, Container&& container) {
return Formatter<true, Container>(
fmt, std::forward<Container>(container));
return Formatter<true, Container>(fmt, std::forward<Container>(container));
}
/**
......@@ -283,20 +292,20 @@ inline std::string svformat(StringPiece fmt, Container&& container) {
* format("[no_such_key"], defaulted(map, 42)) -> 42
*/
namespace detail {
template <class Container, class Value> struct DefaultValueWrapper {
template <class Container, class Value>
struct DefaultValueWrapper {
DefaultValueWrapper(const Container& container, const Value& defaultValue)
: container(container),
defaultValue(defaultValue) {
}
: container(container), defaultValue(defaultValue) {}
const Container& container;
const Value& defaultValue;
};
} // namespace
} // namespace
template <class Container, class Value>
detail::DefaultValueWrapper<Container, Value>
defaulted(const Container& c, const Value& v) {
detail::DefaultValueWrapper<Container, Value> defaulted(
const Container& c,
const Value& v) {
return detail::DefaultValueWrapper<Container, Value>(c, v);
}
......@@ -345,25 +354,28 @@ void formatString(StringPiece val, FormatArg& arg, FormatCallback& cb);
* field width")
*/
template <class FormatCallback>
void formatNumber(StringPiece val, int prefixLen, FormatArg& arg,
FormatCallback& cb);
void formatNumber(
StringPiece val,
int prefixLen,
FormatArg& arg,
FormatCallback& cb);
/**
* Format a Formatter object recursively. Behaves just like
* formatString(fmt.str(), arg, cb); but avoids creating a temporary
* string if possible.
*/
template <class FormatCallback,
class Derived,
bool containerMode,
class... Args>
template <
class FormatCallback,
class Derived,
bool containerMode,
class... Args>
void formatFormatter(
const BaseFormatter<Derived, containerMode, Args...>& formatter,
FormatArg& arg,
FormatCallback& cb);
} // namespace format_value
} // namespace format_value
/*
* Specialize folly::FormatValue for your type.
......@@ -411,8 +423,9 @@ inline std::string sformatChecked(StringPiece fmt, Args&&... args) {
return formatChecked(fmt, std::forward<Args>(args)...).str();
}
template <class Container>
Formatter<true, Container> vformatChecked(StringPiece fmt,
Container&& container) {
Formatter<true, Container> vformatChecked(
StringPiece fmt,
Container&& container) {
return vformat(fmt, std::forward<Container>(container));
}
template <class Container>
......@@ -430,7 +443,7 @@ vformatChecked(Str* out, StringPiece fmt, Container&& container) {
vformatChecked(fmt, std::forward<Container>(container)).appendTo(*out);
}
} // namespace folly
} // namespace folly
#include <folly/Format-inl.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment