abseil-cpp/absl/strings/internal/str_format/extension.cc
Go to the documentation of this file.
1 //
2 // Copyright 2017 The Abseil Authors.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // https://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 #include "absl/strings/internal/str_format/extension.h"
17 
18 #include <errno.h>
19 #include <algorithm>
20 #include <string>
21 
22 namespace absl {
24 namespace str_format_internal {
25 
27  std::string s;
28  s.append(FlagsContains(v, Flags::kLeft) ? "-" : "");
29  s.append(FlagsContains(v, Flags::kShowPos) ? "+" : "");
30  s.append(FlagsContains(v, Flags::kSignCol) ? " " : "");
31  s.append(FlagsContains(v, Flags::kAlt) ? "#" : "");
32  s.append(FlagsContains(v, Flags::kZero) ? "0" : "");
33  return s;
34 }
35 
36 #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
37 
38 #define ABSL_INTERNAL_X_VAL(id) \
39  constexpr absl::FormatConversionChar FormatConversionCharInternal::id;
41 #undef ABSL_INTERNAL_X_VAL
42 // NOLINTNEXTLINE(readability-redundant-declaration)
44 
45 #define ABSL_INTERNAL_CHAR_SET_CASE(c) \
46  constexpr FormatConversionCharSet FormatConversionCharSetInternal::c;
48 #undef ABSL_INTERNAL_CHAR_SET_CASE
49 
55 
56 #endif // ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
57 
59  int precision, bool left) {
60  size_t space_remaining = 0;
61  if (width >= 0) space_remaining = width;
62  size_t n = value.size();
63  if (precision >= 0) n = std::min(n, static_cast<size_t>(precision));
64  string_view shown(value.data(), n);
65  space_remaining = Excess(shown.size(), space_remaining);
66  if (!left) Append(space_remaining, ' ');
67  Append(shown);
68  if (left) Append(space_remaining, ' ');
69  return true;
70 }
71 
72 } // namespace str_format_internal
74 } // namespace absl
absl::str_format_internal::Flags
Definition: bloaty/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h:131
absl::str_format_internal::FormatConversionCharSetInternal::kStar
static constexpr FormatConversionCharSet kStar
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:382
width
int width
Definition: libuv/docs/code/tty-gravity/main.c:10
precision
int precision
Definition: abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:448
absl::str_format_internal::Flags::kSignCol
@ kSignCol
absl::string_view
Definition: abseil-cpp/absl/strings/string_view.h:167
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
absl::str_format_internal::Flags::kShowPos
@ kShowPos
absl::str_format_internal::FormatConversionCharSetInternal::kFloating
static constexpr FormatConversionCharSet kFloating
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:387
absl::str_format_internal::FormatSinkImpl::Append
void Append(size_t n, char c)
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:78
absl::FormatConversionChar::s
@ s
ABSL_NAMESPACE_END
#define ABSL_NAMESPACE_END
Definition: third_party/abseil-cpp/absl/base/config.h:171
absl::str_format_internal::Excess
size_t Excess(size_t used, size_t capacity)
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:439
absl::str_format_internal::Flags::kLeft
@ kLeft
absl::str_format_internal::FlagsContains
constexpr bool FlagsContains(Flags haystack, Flags needle)
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:150
ABSL_NAMESPACE_BEGIN
#define ABSL_NAMESPACE_BEGIN
Definition: third_party/abseil-cpp/absl/base/config.h:170
absl::string_view::size
constexpr size_type size() const noexcept
Definition: abseil-cpp/absl/strings/string_view.h:277
setup.v
v
Definition: third_party/bloaty/third_party/capstone/bindings/python/setup.py:42
absl::str_format_internal::Flags::kZero
@ kZero
ABSL_INTERNAL_X_VAL
#define ABSL_INTERNAL_X_VAL(id)
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:199
min
#define min(a, b)
Definition: qsort.h:83
absl::str_format_internal::FormatSinkImpl::PutPaddedString
bool PutPaddedString(string_view v, int width, int precision, bool left)
Definition: abseil-cpp/absl/strings/internal/str_format/extension.cc:58
n
int n
Definition: abseil-cpp/absl/container/btree_test.cc:1080
value
const char * value
Definition: hpack_parser_table.cc:165
absl::str_format_internal::FormatConversionCharSetInternal::kNumeric
static constexpr FormatConversionCharSet kNumeric
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:389
absl::FormatConversionChar
FormatConversionChar
Definition: abseil-cpp/absl/strings/str_format.h:636
absl::FormatConversionCharSet
FormatConversionCharSet
Definition: abseil-cpp/absl/strings/str_format.h:737
absl::str_format_internal::Flags::kAlt
@ kAlt
absl::str_format_internal::FormatConversionCharSetInternal::kIntegral
static constexpr FormatConversionCharSet kIntegral
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:385
absl::str_format_internal::FormatConversionCharInternal::kNone
static constexpr FormatConversionChar kNone
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:204
ABSL_INTERNAL_CHAR_SET_CASE
#define ABSL_INTERNAL_CHAR_SET_CASE(c)
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:375
absl
Definition: abseil-cpp/absl/algorithm/algorithm.h:31
absl::str_format_internal::FormatConversionCharSetInternal::kPointer
static constexpr FormatConversionCharSet kPointer
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:391
ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_
#define ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_(X_VAL, X_SEP)
Definition: abseil-cpp/absl/strings/internal/str_format/extension.h:162
str_format_internal
errno.h
absl::str_format_internal::FlagsToString
std::string FlagsToString(Flags v)
Definition: abseil-cpp/absl/strings/internal/str_format/extension.cc:26


grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:20