/
githubmirror
/
yuzu
Обзор
Документация
Войти
/
githubmirror
/
yuzu
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/common/range_sets.h
73 строки
2 KB
Fernando Sahmkow
Common: Rename SplitRangeSet to OverlapRangeSet
06 фев 2024, 01:01
06 фев 2024, 01:01
fa47ac1
Код
Авторство
О чём код?
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include <memory> #include "common/common_types.h" namespace Common { template <typename AddressType> class RangeSet { public: RangeSet(); ~RangeSet(); RangeSet(RangeSet const&) = delete; RangeSet& operator=(RangeSet const&) = delete; RangeSet(RangeSet&& other); RangeSet& operator=(RangeSet&& other); void Add(AddressType base_address, size_t size); void Subtract(AddressType base_address, size_t size); void Clear(); bool Empty() const; template <typename Func> void ForEach(Func&& func) const; template <typename Func> void ForEachInRange(AddressType device_addr, size_t size, Func&& func) const; private: struct RangeSetImpl; std::unique_ptr<RangeSetImpl> m_impl; }; template <typename AddressType> class OverlapRangeSet { public: OverlapRangeSet(); ~OverlapRangeSet(); OverlapRangeSet(OverlapRangeSet const&) = delete; OverlapRangeSet& operator=(OverlapRangeSet const&) = delete; OverlapRangeSet(OverlapRangeSet&& other); OverlapRangeSet& operator=(OverlapRangeSet&& other); void Add(AddressType base_address, size_t size); void Subtract(AddressType base_address, size_t size); template <typename Func> void Subtract(AddressType base_address, size_t size, Func&& on_delete); void DeleteAll(AddressType base_address, size_t size); void Clear(); bool Empty() const; template <typename Func> void ForEach(Func&& func) const; template <typename Func> void ForEachInRange(AddressType device_addr, size_t size, Func&& func) const; private: struct OverlapRangeSetImpl; std::unique_ptr<OverlapRangeSetImpl> m_impl; }; } // namespace Common