本文整理汇总了C++中buf_t::resize方法的典型用法代码示例。如果您正苦于以下问题:C++ buf_t::resize方法的具体用法?C++ buf_t::resize怎么用?C++ buf_t::resize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类buf_t
的用法示例。
在下文中一共展示了buf_t::resize方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MSG_CompressMinilzo
//
// MSG_CompressMinilzo
//
bool MSG_CompressMinilzo (buf_t &buf, size_t start_offset, size_t write_gap)
{
if(buf.size() < MINILZO_COMPRESS_MINPACKETSIZE)
return false;
lzo_uint outlen = OUT_LEN(buf.maxsize() - start_offset - write_gap);
size_t total_len = outlen + start_offset + write_gap;
if(compressed.maxsize() < total_len)
compressed.resize(total_len);
int r = lzo1x_1_compress (buf.ptr() + start_offset,
buf.size() - start_offset,
compressed.ptr() + start_offset + write_gap,
&outlen,
wrkmem);
// worth the effort?
if(r != LZO_E_OK || outlen >= (buf.size() - start_offset - write_gap))
return false;
memcpy(compressed.ptr(), buf.ptr(), start_offset);
SZ_Clear(&buf);
MSG_WriteChunk(&buf, compressed.ptr(), outlen + start_offset + write_gap);
return true;
}
示例2: MSG_DecompressMinilzo
//
// MSG_DecompressMinilzo
//
bool MSG_DecompressMinilzo ()
{
// decompress back onto the receive buffer
size_t left = MSG_BytesLeft();
if(decompressed.maxsize() < net_message.maxsize())
decompressed.resize(net_message.maxsize());
lzo_uint newlen = net_message.maxsize();
unsigned int r = lzo1x_decompress_safe (net_message.ptr() + net_message.BytesRead(), left, decompressed.ptr(), &newlen, NULL);
if(r != LZO_E_OK)
{
Printf(PRINT_HIGH, "Error: minilzo packet decompression failed with error %X\n", r);
return false;
}
net_message.clear();
memcpy(net_message.ptr(), decompressed.ptr(), newlen);
net_message.cursize = newlen;
return true;
}
示例3: MSG_DecompressAdaptive
//
// MSG_DecompressAdaptive
//
bool MSG_DecompressAdaptive (huffman &huff)
{
// decompress back onto the receive buffer
size_t left = MSG_BytesLeft();
if(decompressed.maxsize() < net_message.maxsize())
decompressed.resize(net_message.maxsize());
size_t newlen = net_message.maxsize();
bool r = huff.decompress (net_message.ptr() + net_message.BytesRead(), left, decompressed.ptr(), newlen);
if(!r)
return false;
net_message.clear();
memcpy(net_message.ptr(), decompressed.ptr(), newlen);
net_message.cursize = newlen;
return true;
}
示例4: entry
TarHeader::EntryType UnTar::entry(buf_t& buf, int accepted_types, bool skip_apple_resource_forks)
{
do {
m_header.reset();
read(*m_header, TarHeader::HeaderLen);
m_header.analyze();
// this is the only valid exit condition from reading a tar archive - end header reached
if (m_header.is_end()) return TarHeader::Unknown;
if (m_header.type() == TarHeader::File) {
// make sure we reserve space for at least one more character than the file size
// (to cheaply add a 0 byte if the user wants to)
buf.reserve(m_header.filesize() + 1);
// resize the buffer to be able to read the file size
buf.resize(m_header.filesize());
// read the file into the buffer
read(&buf[0], m_header.filesize());
// check if we have to skip some padding bytes (tar files have a block size of 512)
size_t padding = (TarHeader::HeaderLen - (m_header.filesize() % TarHeader::HeaderLen)) % TarHeader::HeaderLen;
if (padding) {
// this invalidates the (raw) header, but it is a handy buffer to read up to 512 bytes into here
read(*m_header, padding);
}
}
} while ((m_header.type() & accepted_types) == 0 || (skip_apple_resource_forks && CDDB::begins_with(m_header.filename(), ("./._"))));
return m_header.type();
}
示例5: MSG_CompressAdaptive
//
// MSG_CompressAdaptive
//
bool MSG_CompressAdaptive (huffman &huff, buf_t &buf, size_t start_offset, size_t write_gap)
{
size_t outlen = OUT_LEN(buf.maxsize() - start_offset - write_gap);
size_t total_len = outlen + start_offset + write_gap;
if(compressed.maxsize() < total_len)
compressed.resize(total_len);
bool r = huff.compress (buf.ptr() + start_offset,
buf.size() - start_offset,
compressed.ptr() + start_offset + write_gap,
outlen);
// worth the effort?
if(!r || outlen >= (buf.size() - start_offset - write_gap))
return false;
memcpy(compressed.ptr(), buf.ptr(), start_offset);
SZ_Clear(&buf);
MSG_WriteChunk(&buf, compressed.ptr(), outlen + start_offset + write_gap);
return true;
}
示例6: resize
void resize(size_t len)
{
buf.resize(len);
}