Export of internal Abseil changes

--
739f9fb80212c21c015fec473e9e29803a156ef9 by Derek Mauro <dmauro@google.com>:

Define FlagStateInterface::~FlagStateInterface() in the translation
unit in which it is actually declared

Fixes #717

PiperOrigin-RevId: 319083605

--
913ef1f23113268b22d636d3ae3b992862efdb1a by Derek Mauro <dmauro@google.com>:

Fix ABSL_LOCK_RETURNED statement

PiperOrigin-RevId: 319078667

--
a43b1413da1770d638147c73e7e1693cfaf869c7 by Derek Mauro <dmauro@google.com>:

Fix redeclaration ‘absl::Cord::InlineRep::kMaxInline’, which differs in ‘constexpr’
Fixes #725

PiperOrigin-RevId: 319060910

--
1ad7d491a80f6c9de78a6fc20f09b7765d224503 by Abseil Team <absl-team@google.com>:

Make absl SpinLock trivially destructible when possible

PiperOrigin-RevId: 319049456

--
659ecad3578dfa669854a82279fa590002bdb37f by Derek Mauro <dmauro@google.com>:

Remove the static initialization of global variables used by absl::Mutex
as requested by Chromium

PiperOrigin-RevId: 319031204

--
609c491d8bb4f8bb3b44c5a4c0bee51c583df24c by Abseil Team <absl-team@google.com>:

Add implementation of %a and %A to absl::StrFormat.

Prior to this it just fell back to sprintf.

PiperOrigin-RevId: 318888039

--
5e8ae6392bcd135248aac14c4b9f2a5116868678 by Abseil Team <absl-team@google.com>:

Google-internal changes only.

PiperOrigin-RevId: 318857077

--
4a2578e33e8442954e29e5f0380ddfcf0f033f0d by Greg Falcon <gfalcon@google.com>:

Change of enum constants to accommodate internal change.

PiperOrigin-RevId: 318844716

--
4b578b102816260c213675759f4c15911735578a by Abseil Team <absl-team@google.com>:

Internal change

PiperOrigin-RevId: 318704453

--
0ee82fd24d548b260c9229fa1f54571dae1dfa24 by Gennadiy Rozental <rogeeff@google.com>:

Allow lookup of retired flags.

At the moment we issue warning on attempt to find a retired flag. This way we can't even check if flag is retired without issuing the warning.

With this change we will only issue the warning if one tries to access any functionality of retired flag but it's name "is retired" status, and type.

PiperOrigin-RevId: 318605017

--
3e35fe9b4c79f636fa328c59e2aabb93e29b7c99 by Abseil Team <absl-team@google.com>:

Fix error return from InstallSymbolDecorator().

PiperOrigin-RevId: 318490405

--
ae46063f3eb2998cb961f62a359d932e5908a4bc by Abseil Team <absl-team@google.com>:

Do not make copies of iterated collection elements into the loop variable.

PiperOrigin-RevId: 318423139

--
d06a075a12aab5f6ab98474677ce50d588b21de3 by Abseil Team <absl-team@google.com>:

add missing word making the error code better English

PiperOrigin-RevId: 318335052
GitOrigin-RevId: 739f9fb80212c21c015fec473e9e29803a156ef9
Change-Id: Id77a0a4b1959036b00555deef40e82d51884fbc1
22 files changed
tree: 44d8278f3102055ab0c41059259bb3eacf112323
  1. absl/
  2. ci/
  3. CMake/
  4. .clang-format
  5. .gitignore
  6. ABSEIL_ISSUE_TEMPLATE.md
  7. AUTHORS
  8. BUILD.bazel
  9. CMakeLists.txt
  10. conanfile.py
  11. CONTRIBUTING.md
  12. FAQ.md
  13. LICENSE
  14. LTS.md
  15. README.md
  16. UPGRADES.md
  17. WORKSPACE
README.md

Abseil - C++ Common Libraries

The repository contains the Abseil C++ library code. Abseil is an open-source collection of C++ code (compliant to C++11) designed to augment the C++ standard library.

Table of Contents

About Abseil

Abseil is an open-source collection of C++ library code designed to augment the C++ standard library. The Abseil library code is collected from Google's own C++ code base, has been extensively tested and used in production, and is the same code we depend on in our daily coding lives.

In some cases, Abseil provides pieces missing from the C++ standard; in others, Abseil provides alternatives to the standard for special needs we've found through usage in the Google code base. We denote those cases clearly within the library code we provide you.

Abseil is not meant to be a competitor to the standard library; we've just found that many of these utilities serve a purpose within our code base, and we now want to provide those resources to the C++ community as a whole.

Quickstart

If you want to just get started, make sure you at least run through the Abseil Quickstart. The Quickstart contains information about setting up your development environment, downloading the Abseil code, running tests, and getting a simple binary working.

Building Abseil

Bazel is the official build system for Abseil, which is supported on most major platforms (Linux, Windows, macOS, for example) and compilers. See the quickstart for more information on building Abseil using the Bazel build system.

If you require CMake support, please check the CMake build instructions.

Codemap

Abseil contains the following C++ library components:

  • base Abseil Fundamentals
    The base library contains initialization code and other code which all other Abseil code depends on. Code within base may not depend on any other code (other than the C++ standard library).
  • algorithm
    The algorithm library contains additions to the C++ <algorithm> library and container-based versions of such algorithms.
  • container
    The container library contains additional STL-style containers, including Abseil's unordered “Swiss table” containers.
  • debugging
    The debugging library contains code useful for enabling leak checks, and stacktrace and symbolization utilities.
  • hash
    The hash library contains the hashing framework and default hash functor implementations for hashable types in Abseil.
  • memory
    The memory library contains C++11-compatible versions of std::make_unique() and related memory management facilities.
  • meta
    The meta library contains C++11-compatible versions of type checks available within C++14 and C++17 versions of the C++ <type_traits> library.
  • numeric
    The numeric library contains C++11-compatible 128-bit integers.
  • strings
    The strings library contains a variety of strings routines and utilities, including a C++11-compatible version of the C++17 std::string_view type.
  • synchronization
    The synchronization library contains concurrency primitives (Abseil's absl::Mutex class, an alternative to std::mutex) and a variety of synchronization abstractions.
  • time
    The time library contains abstractions for computing with absolute points in time, durations of time, and formatting and parsing time within time zones.
  • types
    The types library contains non-container utility types, like a C++11-compatible version of the C++17 std::optional type.
  • utility
    The utility library contains utility and helper code.

License

The Abseil C++ library is licensed under the terms of the Apache license. See LICENSE for more information.

Links

For more information about Abseil: