xref: /aosp_15_r20/external/openscreen/third_party/abseil/src/README.md (revision 3f982cf4871df8771c9d4abe6e9a6f8d829b2736)
1*3f982cf4SFabien Sanglard# Abseil - C++ Common Libraries
2*3f982cf4SFabien Sanglard
3*3f982cf4SFabien SanglardThe repository contains the Abseil C++ library code. Abseil is an open-source
4*3f982cf4SFabien Sanglardcollection of C++ code (compliant to C++11) designed to augment the C++
5*3f982cf4SFabien Sanglardstandard library.
6*3f982cf4SFabien Sanglard
7*3f982cf4SFabien Sanglard## Table of Contents
8*3f982cf4SFabien Sanglard
9*3f982cf4SFabien Sanglard- [About Abseil](#about)
10*3f982cf4SFabien Sanglard- [Quickstart](#quickstart)
11*3f982cf4SFabien Sanglard- [Building Abseil](#build)
12*3f982cf4SFabien Sanglard- [Codemap](#codemap)
13*3f982cf4SFabien Sanglard- [License](#license)
14*3f982cf4SFabien Sanglard- [Links](#links)
15*3f982cf4SFabien Sanglard
16*3f982cf4SFabien Sanglard<a name="about"></a>
17*3f982cf4SFabien Sanglard## About Abseil
18*3f982cf4SFabien Sanglard
19*3f982cf4SFabien SanglardAbseil is an open-source collection of C++ library code designed to augment
20*3f982cf4SFabien Sanglardthe C++ standard library. The Abseil library code is collected from Google's
21*3f982cf4SFabien Sanglardown C++ code base, has been extensively tested and used in production, and
22*3f982cf4SFabien Sanglardis the same code we depend on in our daily coding lives.
23*3f982cf4SFabien Sanglard
24*3f982cf4SFabien SanglardIn some cases, Abseil provides pieces missing from the C++ standard; in
25*3f982cf4SFabien Sanglardothers, Abseil provides alternatives to the standard for special needs
26*3f982cf4SFabien Sanglardwe've found through usage in the Google code base. We denote those cases
27*3f982cf4SFabien Sanglardclearly within the library code we provide you.
28*3f982cf4SFabien Sanglard
29*3f982cf4SFabien SanglardAbseil is not meant to be a competitor to the standard library; we've
30*3f982cf4SFabien Sanglardjust found that many of these utilities serve a purpose within our code
31*3f982cf4SFabien Sanglardbase, and we now want to provide those resources to the C++ community as
32*3f982cf4SFabien Sanglarda whole.
33*3f982cf4SFabien Sanglard
34*3f982cf4SFabien Sanglard<a name="quickstart"></a>
35*3f982cf4SFabien Sanglard## Quickstart
36*3f982cf4SFabien Sanglard
37*3f982cf4SFabien SanglardIf you want to just get started, make sure you at least run through the
38*3f982cf4SFabien Sanglard[Abseil Quickstart](https://abseil.io/docs/cpp/quickstart). The Quickstart
39*3f982cf4SFabien Sanglardcontains information about setting up your development environment, downloading
40*3f982cf4SFabien Sanglardthe Abseil code, running tests, and getting a simple binary working.
41*3f982cf4SFabien Sanglard
42*3f982cf4SFabien Sanglard<a name="build"></a>
43*3f982cf4SFabien Sanglard## Building Abseil
44*3f982cf4SFabien Sanglard
45*3f982cf4SFabien Sanglard[Bazel](https://bazel.build) is the official build system for Abseil,
46*3f982cf4SFabien Sanglardwhich is supported on most major platforms (Linux, Windows, macOS, for example)
47*3f982cf4SFabien Sanglardand compilers. See the [quickstart](https://abseil.io/docs/cpp/quickstart) for
48*3f982cf4SFabien Sanglardmore information on building Abseil using the Bazel build system.
49*3f982cf4SFabien Sanglard
50*3f982cf4SFabien Sanglard<a name="cmake"></a>
51*3f982cf4SFabien SanglardIf you require CMake support, please check the
52*3f982cf4SFabien Sanglard[CMake build instructions](CMake/README.md).
53*3f982cf4SFabien Sanglard
54*3f982cf4SFabien Sanglard## Codemap
55*3f982cf4SFabien Sanglard
56*3f982cf4SFabien SanglardAbseil contains the following C++ library components:
57*3f982cf4SFabien Sanglard
58*3f982cf4SFabien Sanglard* [`base`](absl/base/) Abseil Fundamentals
59*3f982cf4SFabien Sanglard  <br /> The `base` library contains initialization code and other code which
60*3f982cf4SFabien Sanglard  all other Abseil code depends on. Code within `base` may not depend on any
61*3f982cf4SFabien Sanglard  other code (other than the C++ standard library).
62*3f982cf4SFabien Sanglard* [`algorithm`](absl/algorithm/)
63*3f982cf4SFabien Sanglard  <br /> The `algorithm` library contains additions to the C++ `<algorithm>`
64*3f982cf4SFabien Sanglard  library and container-based versions of such algorithms.
65*3f982cf4SFabien Sanglard* [`container`](absl/container/)
66*3f982cf4SFabien Sanglard  <br /> The `container` library contains additional STL-style containers,
67*3f982cf4SFabien Sanglard  including Abseil's unordered "Swiss table" containers.
68*3f982cf4SFabien Sanglard* [`debugging`](absl/debugging/)
69*3f982cf4SFabien Sanglard  <br /> The `debugging` library contains code useful for enabling leak
70*3f982cf4SFabien Sanglard  checks, and stacktrace and symbolization utilities.
71*3f982cf4SFabien Sanglard* [`hash`](absl/hash/)
72*3f982cf4SFabien Sanglard  <br /> The `hash` library contains the hashing framework and default hash
73*3f982cf4SFabien Sanglard  functor implementations for hashable types in Abseil.
74*3f982cf4SFabien Sanglard* [`memory`](absl/memory/)
75*3f982cf4SFabien Sanglard  <br /> The `memory` library contains C++11-compatible versions of
76*3f982cf4SFabien Sanglard  `std::make_unique()` and related memory management facilities.
77*3f982cf4SFabien Sanglard* [`meta`](absl/meta/)
78*3f982cf4SFabien Sanglard  <br /> The `meta` library contains C++11-compatible versions of type checks
79*3f982cf4SFabien Sanglard  available within C++14 and C++17 versions of the C++ `<type_traits>` library.
80*3f982cf4SFabien Sanglard* [`numeric`](absl/numeric/)
81*3f982cf4SFabien Sanglard  <br /> The `numeric` library contains C++11-compatible 128-bit integers.
82*3f982cf4SFabien Sanglard* [`strings`](absl/strings/)
83*3f982cf4SFabien Sanglard  <br /> The `strings` library contains a variety of strings routines and
84*3f982cf4SFabien Sanglard  utilities, including a C++11-compatible version of the C++17
85*3f982cf4SFabien Sanglard  `std::string_view` type.
86*3f982cf4SFabien Sanglard* [`synchronization`](absl/synchronization/)
87*3f982cf4SFabien Sanglard  <br /> The `synchronization` library contains concurrency primitives (Abseil's
88*3f982cf4SFabien Sanglard  `absl::Mutex` class, an alternative to `std::mutex`) and a variety of
89*3f982cf4SFabien Sanglard  synchronization abstractions.
90*3f982cf4SFabien Sanglard* [`time`](absl/time/)
91*3f982cf4SFabien Sanglard  <br /> The `time` library contains abstractions for computing with absolute
92*3f982cf4SFabien Sanglard  points in time, durations of time, and formatting and parsing time within
93*3f982cf4SFabien Sanglard  time zones.
94*3f982cf4SFabien Sanglard* [`types`](absl/types/)
95*3f982cf4SFabien Sanglard  <br /> The `types` library contains non-container utility types, like a
96*3f982cf4SFabien Sanglard  C++11-compatible version of the C++17 `std::optional` type.
97*3f982cf4SFabien Sanglard* [`utility`](absl/utility/)
98*3f982cf4SFabien Sanglard  <br /> The `utility` library contains utility and helper code.
99*3f982cf4SFabien Sanglard
100*3f982cf4SFabien Sanglard## License
101*3f982cf4SFabien Sanglard
102*3f982cf4SFabien SanglardThe Abseil C++ library is licensed under the terms of the Apache
103*3f982cf4SFabien Sanglardlicense. See [LICENSE](LICENSE) for more information.
104*3f982cf4SFabien Sanglard
105*3f982cf4SFabien Sanglard## Links
106*3f982cf4SFabien Sanglard
107*3f982cf4SFabien SanglardFor more information about Abseil:
108*3f982cf4SFabien Sanglard
109*3f982cf4SFabien Sanglard* Consult our [Abseil Introduction](https://abseil.io/about/intro)
110*3f982cf4SFabien Sanglard* Read [Why Adopt Abseil](https://abseil.io/about/philosophy) to understand our
111*3f982cf4SFabien Sanglard  design philosophy.
112*3f982cf4SFabien Sanglard* Peruse our
113*3f982cf4SFabien Sanglard  [Abseil Compatibility Guarantees](https://abseil.io/about/compatibility) to
114*3f982cf4SFabien Sanglard  understand both what we promise to you, and what we expect of you in return.
115