$ show stlab/adobe_source_libraries
The Adobe Source Libraries (ASL) is a collection of reusable C++ libraries designed as Boost-compatible extensions for generic programming. It provides algorithms, data structures, property modeling (Adam/UI layout (Eve)), type erasure, serialization, and concurrency utilities. The library is header-forward with select implementation files, targeting integration into applications rather than serving as a standalone end-user product. Architecture emphasizes value semantics, concept-based design, and separation of concerns (e.g., Adam's constraint solver decoupled from Eve's layout engine). Build system uses CMake with GitHub Actions CI, and extensive unit tests validate components via Boost.Test.
The LLM identified 4 files worth highlighting for reuse:
Implements type-ercted container for regular types (copyable, equality-comparable) with small object optimization and value semantics. Self-contained with minimal dependencies (utility headers), extractable for use in projects needing safe type-erased storage like variant or any implementations.
Provides runtime polymorphism with value semantics, enabling heterogeneous object storage without inheritance. Models concepts (e.g., drawable) via type erasure, supporting copyable/moveable semantics. Isolated implementation with clear concept boundaries, reusable in plugin architectures or collections requiring polymorphic behavior.
Standalone open-addressing hash table implementation (robin hood hashing variant) with efficient probing and memory layout. Cache-friendly, supports custom hash/allocators, and avoids std::unordered_map overhead. Minimal internal dependencies, suitable for high-performance applications needing hash-based containers.
Implements string interning via thread-safe sharded string pool for O(1) string comparisons. Name_t type provides interned strings with global uniqueness. Requires extracting string_pool.cpp implementation but offers significant performance gains in applications with heavy string usage (e.g., symbol tables, UI frameworks).