New cpp folder structure

Signed-off-by: Alexander Borsuk <me@alex.bio>
This commit is contained in:
Alexander Borsuk
2025-07-17 22:35:52 +03:00
committed by Konstantin Pastbin
parent c9cbb64f12
commit 76ffc99abd
2390 changed files with 345 additions and 339 deletions

View File

@@ -0,0 +1,49 @@
#pragma once
#include "drape/pointers.hpp"
#include "drape/binding_info.hpp"
#include "base/shared_buffer_manager.hpp"
#include <cstdint>
#include <map>
#include <utility>
#include <vector>
namespace dp
{
struct MutateRegion
{
MutateRegion() : m_offset(0), m_count(0) {}
MutateRegion(uint32_t offset, uint32_t count) : m_offset(offset), m_count(count) {}
uint32_t m_offset; // Offset from buffer begin in "Elements" not in bytes.
uint32_t m_count; // Count of "Elements".
};
struct MutateNode
{
MutateRegion m_region;
ref_ptr<void> m_data;
};
class AttributeBufferMutator
{
using TBufferNode = std::pair<SharedBufferManager::shared_buffer_ptr_t, size_t>;
using TBufferArray = std::vector<TBufferNode>;
using TMutateNodes = std::vector<MutateNode>;
using TMutateData = std::map<BindingInfo, TMutateNodes>;
public:
~AttributeBufferMutator();
void AddMutation(BindingInfo const & info, MutateNode const & node);
void * AllocateMutationBuffer(size_t byteCount);
private:
friend class VertexArrayBuffer;
TMutateData const & GetMutateData() const { return m_data; }
TMutateData m_data;
TBufferArray m_array;
};
} // namespace dp