commonlib
direct_array_buffer.h File Reference

Interfaces for buffers which are backed by the array (circular buffers, array buffers, ...). On such buffers data transfering is done without without intermediate buffer. More...

#include "buffer.h"
#include <cstring>
#include <algorithm>

Go to the source code of this file.

Classes

class  IDirectArraySourceBuffer< T, Locking >
 Interface to array-backed source buffers. More...
 
class  IDirectArrayTargetBuffer< T >
 Interface to array-backed target buffers. More...
 

Functions

template<typename T , typename Locking = UseLock>
size_t transferBuffer (ISourceBuffer< T > &source, IDirectArrayTargetBuffer< T > &target, bool incrementPosition=true, size_t samplesCount=(std::numeric_limits< size_t >::max)())
 Transferring data from one buffer to another without intermediate buffer. More...
 
template<typename T >
size_t transferBuffer (IDirectArraySourceBuffer< T > &source, ITargetBuffer< T > &target, bool incrementPosition=true, size_t samplesCount=(std::numeric_limits< size_t >::max)(), bool earlyReleaseSourceLock=false)
 Transferring data from one buffer to another without intermediate buffer. More...
 
template<typename T >
size_t transferBuffer (IDirectArraySourceBuffer< T > &source, IDirectArrayTargetBuffer< T > &target, bool incrementPosition=true, size_t samplesCount=(std::numeric_limits< size_t >::max)())
 Transferring data from one buffer to another without intermediate buffer. More...
 

Detailed Description

Interfaces for buffers which are backed by the array (circular buffers, array buffers, ...). On such buffers data transfering is done without without intermediate buffer.

Author
Anže Škerjanc
Date
01/02/2019
Version
1.0

Function Documentation

◆ transferBuffer() [1/3]

template<typename T , typename Locking = UseLock>
size_t transferBuffer ( ISourceBuffer< T > &  source,
IDirectArrayTargetBuffer< T > &  target,
bool  incrementPosition = true,
size_t  samplesCount = (std::numeric_limits<size_t>::max)() 
)

Transferring data from one buffer to another without intermediate buffer.

Parameters
sourcesource buffer
targetdestination buffer
incrementPositionan option if change position
samplesCounta number of samples to be transferred
Returns
number of transferred samples

◆ transferBuffer() [2/3]

template<typename T >
size_t transferBuffer ( IDirectArraySourceBuffer< T > &  source,
ITargetBuffer< T > &  target,
bool  incrementPosition = true,
size_t  samplesCount = (std::numeric_limits<size_t>::max)(),
bool  earlyReleaseSourceLock = false 
)

Transferring data from one buffer to another without intermediate buffer.

Parameters
sourcesource buffer
targetdestination buffer
incrementPositionan option if change position
samplesCounta number of samples to be transferred
earlyReleaseSourceLockreleases source lock as early as possible
Returns
number of transferred samples

◆ transferBuffer() [3/3]

template<typename T >
size_t transferBuffer ( IDirectArraySourceBuffer< T > &  source,
IDirectArrayTargetBuffer< T > &  target,
bool  incrementPosition = true,
size_t  samplesCount = (std::numeric_limits<size_t>::max)() 
)

Transferring data from one buffer to another without intermediate buffer.

Parameters
sourcesource buffer
targetdestination buffer
incrementPositionan option if change position
samplesCounta number of samples to be transferred
Returns
number of transferred samples