| # FTL |
| |
| FTL is a template library shared by SurfaceFlinger and InputFlinger, inspired by |
| and supplementing the C++ Standard Library. The intent is to fill gaps for areas |
| not (yet) covered—like cache-efficient data structures and lock-free concurrency |
| primitives—and implement proposals that are missing or experimental in Android's |
| libc++ branch. The design takes some liberties with standard compliance, notably |
| assuming that exceptions are disabled. |
| |
| ## Tests |
| |
| atest ftl_test |
| |
| ## Style |
| |
| - Based on [Google C++ Style](https://google.github.io/styleguide/cppguide.html). |
| - Informed by [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). |
| |
| Naming conventions are as follows: |
| |
| - `PascalCase` |
| - Types and aliases, except standard interfaces. |
| - Template parameters, including non-type ones. |
| - `snake_case` |
| - Variables, and data members with trailing underscore. |
| - Functions, free and member alike. |
| - Type traits, with standard `_t` and `_v` suffixes. |
| - `kCamelCase` |
| - Enumerators and `constexpr` constants with static storage duration. |
| - `MACRO_CASE` |
| - Macros, with `FTL_` prefix unless `#undef`ed. |
| |
| Template parameter packs are named with the following convention: |
| |
| typename T, typename... Ts |
| typename Arg, typename... Args |
| |
| std::size_t I, std::size_t... Is |
| std::size_t Size, std::size_t... Sizes |
| |
| The `details` namespace contains implementation details. |