MAGE  v0.171.0
Matthias Advanced Game Engine
mage::rendering::BufferLock Class Reference

#include <buffer_lock.hpp>

Public Member Functions

 BufferLock (ID3D11DeviceContext &device_context, ID3D11Buffer &buffer, D3D11_MAP map_type, D3D11_MAPPED_SUBRESOURCE &mapped_buffer)
 
 BufferLock (const BufferLock &buffer_lock)=delete
 
 BufferLock (BufferLock &&buffer_lock) noexcept=default
 
 ~BufferLock ()
 
BufferLockoperator= (const BufferLock &buffer_lock)=delete
 
BufferLockoperator= (BufferLock &&buffer_lock) noexcept=default
 

Private Member Functions

void MapBuffer (D3D11_MAP map_type, D3D11_MAPPED_SUBRESOURCE &mapped_buffer)
 
void UnmapBuffer () const noexcept
 

Private Attributes

std::reference_wrapper< ID3D11DeviceContext > m_device_context
 
std::reference_wrapper< ID3D11Buffer > m_buffer
 

Detailed Description

A class of buffer locks.

Constructor & Destructor Documentation

◆ BufferLock() [1/3]

mage::rendering::BufferLock::BufferLock ( ID3D11DeviceContext &  device_context,
ID3D11Buffer &  buffer,
D3D11_MAP  map_type,
D3D11_MAPPED_SUBRESOURCE &  mapped_buffer 
)
explicit

Constructs a buffer lock.

Parameters
[in,out]device_contextA reference to the device context.
[in,out]bufferA reference to the buffer.
[in]map_typeThe map type specifying the CPU's read and write permissions for the buffer of this buffer lock.
[in,out]mapped_bufferA reference to map the buffer of this buffer lock to.
Exceptions
ExceptionFailed to map the buffer.

◆ BufferLock() [2/3]

mage::rendering::BufferLock::BufferLock ( const BufferLock buffer_lock)
delete

Constructs a buffer lock from the given buffer lock.

Parameters
[in]buffer_lockA reference to the buffer lock to copy.

◆ BufferLock() [3/3]

mage::rendering::BufferLock::BufferLock ( BufferLock &&  buffer_lock)
defaultnoexcept

Constructs a buffer lock by moving the given buffer lock.

Parameters
[in]buffer_lockA reference to the buffer lock to move.

◆ ~BufferLock()

mage::rendering::BufferLock::~BufferLock ( )

Destructs this buffer lock.

Member Function Documentation

◆ MapBuffer()

void mage::rendering::BufferLock::MapBuffer ( D3D11_MAP  map_type,
D3D11_MAPPED_SUBRESOURCE &  mapped_buffer 
)
private

Maps the buffer of this buffer lock.

Parameters
[in]map_typeThe map type specifying the CPU's read and write permissions for the buffer of this buffer lock.
[out]mapped_bufferA reference to map the buffer of this buffer lock to.
Exceptions
ExceptionFailed to map the buffer.

◆ operator=() [1/2]

BufferLock& mage::rendering::BufferLock::operator= ( const BufferLock buffer_lock)
delete

Copies the given buffer lock to this buffer lock.

Parameters
[in]buffer_lockA reference to the buffer lock to copy.
Returns
A reference to the copy of the given buffer lock (i.e. this buffer lock)

◆ operator=() [2/2]

BufferLock& mage::rendering::BufferLock::operator= ( BufferLock &&  buffer_lock)
defaultnoexcept

Moves the given buffer lock to this buffer lock.

Parameters
[in]buffer_lockA reference to the buffer lock to move.
Returns
A reference to the moved buffer lock (i.e. this buffer lock)

◆ UnmapBuffer()

void mage::rendering::BufferLock::UnmapBuffer ( ) const
privatenoexcept

Unmaps the buffer of this buffer lock.

Precondition
The buffer of this buffer lock must be mapped with mage::rendering::BufferLock::MapBuffer(D3D11_MAP, D3D11_MAPPED_SUBRESOURCE&) before it can be unmapped.

Member Data Documentation

◆ m_buffer

std::reference_wrapper< ID3D11Buffer > mage::rendering::BufferLock::m_buffer
private

A reference to the buffer of this lock.

◆ m_device_context

std::reference_wrapper< ID3D11DeviceContext > mage::rendering::BufferLock::m_device_context
private

A reference to the device context of this buffer lock.