21 #include <initializer_list> 33 if (c ==
' ' || c ==
'\t' || c ==
'\r' || c ==
'\n') {
80 :
name_(name), type_(STRING) {}
82 :
name_(name), type_(STRING) {}
86 std::pair<HTTPHeaderName,folly::StringPiece>>;
106 template <typename
T>
108 template <typename
T>
144 template <
typename T>
146 const std::string& separator=COMBINE_SEPARATOR)
const;
157 template <
typename LAMBDA>
158 inline void forEach(LAMBDA func)
const;
172 template <
typename LAMBDA>
189 template <
typename LAMBDA>
197 template <
typename T>
221 template <
typename LAMBDA>
223 template <
typename LAMBDA>
296 template <
typename T>
307 template <
typename T>
315 #define ITERATE_OVER_CODES(Code, Block) \ 317 const HTTPHeaderCode* ptr = codes_.data(); \ 319 ptr = (HTTPHeaderCode*)memchr( \ 320 (void*)ptr, (Code), codes_.size() - (ptr - codes_.data())); \ 321 if (ptr == nullptr) \ 323 const size_t pos = ptr - codes_.data(); \ 329 #define ITERATE_OVER_STRINGS(String, Block) \ 330 ITERATE_OVER_CODES(HTTP_HEADER_OTHER, { \ 331 if (caseInsensitiveEqual((String), *headerNames_[pos])) { \ 336 template <
typename LAMBDA>
345 template <
typename LAMBDA>
354 template <
typename LAMBDA>
370 template <
typename LAMBDA>
381 template <
typename T>
386 if (combined.empty()) {
387 combined.append(value);
389 combined.append(separator).append(value);
397 template <
typename LAMBDA>
399 bool removed =
false;
419 template <
typename T>
423 if (res !=
nullptr) {
433 if (res ==
nullptr) {
440 #ifndef PROXYGEN_HTTPHEADERS_IMPL 441 #undef ITERATE_OVER_CODES 442 #undef ITERATE_OVER_STRINGS 443 #endif // PROXYGEN_HTTPHEADERS_IMPL
constexpr size_type size() const
—— Concurrent Priority Queue Implementation ——
requires E e noexcept(noexcept(s.error(std::move(e))))
void push_back(const T &value)
constexpr Iter data() const
static const char *const value
void emplace_back(Args &&...args)
const std::string empty_string
Range< const char * > StringPiece
size_type size() const noexcept