25#ifndef LLVM_SUPPORT_FORMATVARIADIC_H
26#define LLVM_SUPPORT_FORMATVARIADIC_H
72 size_t &
Align,
char &Pad);
74 static std::pair<ReplacementItem, StringRef>
101 Align.format(S, R.Options);
125 operator std::string()
const {
return str(); }
133 std::array<support::detail::format_adapter *, std::tuple_size<Tuple>::value>
143 struct create_adapters {
144 template <
typename... Ts>
145 std::array<support::detail::format_adapter *, std::tuple_size<Tuple>::value>
146 operator()(Ts &...Items) {
147 return {{&Items...}};
154 Parameters(
std::
move(Params)) {
155 ParameterPointers = std::apply(create_adapters(), Parameters);
162 Parameters(
std::
move(rhs.Parameters)) {
163 ParameterPointers = std::apply(create_adapters(), Parameters);
250template <
typename... Ts>
251inline auto formatv(
const char *Fmt, Ts &&...Vals)
254 using ParamTuple =
decltype(std::make_tuple(
258 std::forward<Ts>(Vals))...));
This file defines the SmallString class.
This file defines the SmallVector class.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
The instances of the Type class are immutable: once they are created, they are never changed.
This class implements an extremely fast bulk output stream that can only output to a stream.
A raw_ostream that writes to an std::string.
A raw_ostream that writes to an SmallVector or SmallString.
std::enable_if_t< uses_format_member< T >::value, T > build_format_adapter(T &&Item)
This is an optimization pass for GlobalISel generic memory operations.
auto formatv(const char *Fmt, Ts &&...Vals) -> formatv_object< decltype(std::make_tuple(support::detail::build_format_adapter(std::forward< Ts >(Vals))...))>
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.
This struct is a compact representation of a valid (non-zero power of two) alignment.
ReplacementItem(StringRef Literal)
ReplacementItem()=default
ReplacementItem(StringRef Spec, size_t Index, size_t Align, AlignStyle Where, char Pad, StringRef Options)