本文整理汇总了C++中buf_t::reserve方法的典型用法代码示例。如果您正苦于以下问题:C++ buf_t::reserve方法的具体用法?C++ buf_t::reserve怎么用?C++ buf_t::reserve使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类buf_t
的用法示例。
在下文中一共展示了buf_t::reserve方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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();
}
示例2: write_internal
void write_internal(VALUE self, VALUE handle, VALUE obj, VALUE type, buf_t& buf) {
Model& model = MODEL(handle);
Msg& msg = get_msg_for_type(model, type);
buf.reserve(MSG_INITIAL_CAPACITY);
msg.write(buf, msg, obj);
}