#pragma once #include #include #include #include #include #include #include namespace reanimated::css { template struct DelayedItem { const double timestamp; const TValue value; DelayedItem(double timestamp, TValue value); }; template struct DelayedItemComparator { bool operator()( const DelayedItem &lhs, const DelayedItem &rhs) const; }; template class DelayedItemsManager { using Item = DelayedItem; using ItemSet = std::set>; using ItemMap = std::unordered_map; ItemSet itemsSet_; ItemMap itemsMap_; public: void add(double timestamp, TValue value); Item pop(); bool remove(TValue value); const Item &top() const; bool empty() const; size_t size() const; }; } // namespace reanimated::css