1# FTL 2 3FTL is a template library shared by SurfaceFlinger and InputFlinger, inspired by 4and supplementing the C++ Standard Library. The intent is to fill gaps for areas 5not (yet) covered—like cache-efficient data structures and lock-free concurrency 6primitives—and implement proposals that are missing or experimental in Android's 7libc++ branch. The design takes some liberties with standard compliance, notably 8assuming that exceptions are disabled. 9 10## Tests 11 12 atest ftl_test 13 14## Style 15 16- Based on [Google C++ Style](https://google.github.io/styleguide/cppguide.html). 17- Informed by [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). 18 19Naming conventions are as follows: 20 21- `PascalCase` 22 - Types and aliases, except standard interfaces. 23 - Template parameters, including non-type ones. 24- `snake_case` 25 - Variables, and data members with trailing underscore. 26 - Functions, free and member alike. 27 - Type traits, with standard `_t` and `_v` suffixes. 28- `kCamelCase` 29 - Enumerators and `constexpr` constants with static storage duration. 30- `MACRO_CASE` 31 - Macros, with `FTL_` prefix unless `#undef`ed. 32 33Template parameter packs are named with the following convention: 34 35 typename T, typename... Ts 36 typename Arg, typename... Args 37 38 std::size_t I, std::size_t... Is 39 std::size_t Size, std::size_t... Sizes 40 41The `details` namespace contains implementation details. 42