| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | //// Copyright 2017 The Abseil Authors.//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at////      https://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.#include "absl/strings/internal/str_format/extension.h"#include <errno.h>#include <algorithm>#include <string>namespace absl {ABSL_NAMESPACE_BEGINnamespace str_format_internal {std::string Flags::ToString() const {  std::string s;  s.append(left     ? "-" : "");  s.append(show_pos ? "+" : "");  s.append(sign_col ? " " : "");  s.append(alt      ? "#" : "");  s.append(zero     ? "0" : "");  return s;}#define ABSL_INTERNAL_X_VAL(id) \  constexpr absl::FormatConversionChar FormatConversionCharInternal::id;ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_(ABSL_INTERNAL_X_VAL, )#undef ABSL_INTERNAL_X_VAL// NOLINTNEXTLINE(readability-redundant-declaration)constexpr absl::FormatConversionChar FormatConversionCharInternal::kNone;#define ABSL_INTERNAL_CHAR_SET_CASE(c) \  constexpr FormatConversionCharSet FormatConversionCharSetInternal::c;ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_(ABSL_INTERNAL_CHAR_SET_CASE, )#undef ABSL_INTERNAL_CHAR_SET_CASE// NOLINTNEXTLINE(readability-redundant-declaration)constexpr FormatConversionCharSet FormatConversionCharSetInternal::kStar;// NOLINTNEXTLINE(readability-redundant-declaration)constexpr FormatConversionCharSet FormatConversionCharSetInternal::kIntegral;// NOLINTNEXTLINE(readability-redundant-declaration)constexpr FormatConversionCharSet FormatConversionCharSetInternal::kFloating;// NOLINTNEXTLINE(readability-redundant-declaration)constexpr FormatConversionCharSet FormatConversionCharSetInternal::kNumeric;// NOLINTNEXTLINE(readability-redundant-declaration)constexpr FormatConversionCharSet FormatConversionCharSetInternal::kPointer;bool FormatSinkImpl::PutPaddedString(string_view value, int width,                                     int precision, bool left) {  size_t space_remaining = 0;  if (width >= 0) space_remaining = width;  size_t n = value.size();  if (precision >= 0) n = std::min(n, static_cast<size_t>(precision));  string_view shown(value.data(), n);  space_remaining = Excess(shown.size(), space_remaining);  if (!left) Append(space_remaining, ' ');  Append(shown);  if (left) Append(space_remaining, ' ');  return true;}}  // namespace str_format_internalABSL_NAMESPACE_END}  // namespace absl
 |