当前位置: 首页>>代码示例>>C++>>正文


C++ buf_t::resize方法代码示例

本文整理汇总了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;
}
开发者ID:JohnnyonFlame,项目名称:odamex,代码行数:31,代码来源:i_net.cpp

示例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;
}
开发者ID:JohnnyonFlame,项目名称:odamex,代码行数:28,代码来源:i_net.cpp

示例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;
}
开发者ID:JohnnyonFlame,项目名称:odamex,代码行数:25,代码来源:i_net.cpp

示例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();
}
开发者ID:JoachimSchurig,项目名称:CppCDDB,代码行数:37,代码来源:untar.cpp

示例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;
}
开发者ID:JohnnyonFlame,项目名称:odamex,代码行数:27,代码来源:i_net.cpp

示例6: resize

 void resize(size_t len)
 {
     buf.resize(len);
 }
开发者ID:friederschueler,项目名称:hexahedra,代码行数:4,代码来源:compression.hpp


注:本文中的buf_t::resize方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。