Go to the documentation of this file.
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<detail::format_adapter *, std::tuple_size<Tuple>::value>
143 struct create_adapters {
144 template <
typename... Ts>
145 std::array<detail::format_adapter *, std::tuple_size<Tuple>::value>
146 operator()(Ts &... Items) {
147 return {{&Items...}};
154 Parameters(
std::
move(Params)) {
155 ParameterPointers =
apply_tuple(create_adapters(), Parameters);
162 Parameters(
std::
move(rhs.Parameters)) {
163 ParameterPointers =
apply_tuple(create_adapters(), Parameters);
250 template <
typename... Ts>
253 using ParamTuple = decltype(
262 #endif // LLVM_SUPPORT_FORMATVARIADIC_H
This is an optimization pass for GlobalISel generic memory operations.
A raw_ostream that writes to an std::string.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
The instances of the Type class are immutable: once they are created, they are never changed.
decltype(auto) apply_tuple(F &&f, Tuple &&t)
Given an input tuple (a1, a2, ..., an), pass the arguments of the tuple variadically to f as if by ca...
std::enable_if_t< uses_format_member< T >::value, T > build_format_adapter(T &&Item)
auto formatv(const char *Fmt, Ts &&... Vals) -> formatv_object< decltype(std::make_tuple(detail::build_format_adapter(std::forward< Ts >(Vals))...))>
ReplacementItem(StringRef Spec, size_t Index, size_t Align, AlignStyle Where, char Pad, StringRef Options)
This class implements an extremely fast bulk output stream that can only output to a stream.
This struct is a compact representation of a valid (non-zero power of two) alignment.
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
ReplacementItem()=default
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
StringRef - Represent a constant reference to a string, i.e.
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
ReplacementItem(StringRef Literal)
A raw_ostream that writes to an SmallVector or SmallString.