Function extractToBuffer
Synopsis
#include <include/bitarchiveopener.hpp>
void extractToBuffer(const BitInputArchive &in_archive, vector< byte_t > &out_buffer, unsigned int index) const
Description
No description yet.
Source
Lines 75-92 in src/bitarchiveopener.cpp. Line 64 in include/bitarchiveopener.hpp.
void BitArchiveOpener::extractToBuffer( const BitInputArchive& in_archive,
vector< byte_t >& out_buffer,
unsigned int index ) const {
uint32_t number_items = in_archive.itemsCount();
if ( index >= number_items ) {
throw BitException( L"Index " + std::to_wstring( index ) + L" is out of range", E_INVALIDARG );
}
if ( in_archive.isItemFolder( index ) ) { //Consider only files, not folders
throw BitException( kCannotExtractFolderToBuffer, E_INVALIDARG );
}
const vector< uint32_t > indices( 1, index );
map< wstring, vector< byte_t > > buffers_map;
CMyComPtr< ExtractCallback > extract_callback = new BufferExtractCallback( *this, in_archive, buffers_map );
in_archive.extract( indices, extract_callback );
out_buffer = std::move( buffers_map.begin()->second );
}