本文整理汇总了C++中FileFormat::writeHeader方法的典型用法代码示例。如果您正苦于以下问题:C++ FileFormat::writeHeader方法的具体用法?C++ FileFormat::writeHeader怎么用?C++ FileFormat::writeHeader使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileFormat
的用法示例。
在下文中一共展示了FileFormat::writeHeader方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
bool
SimpleReadWriter::writeHeader(
const ReaderContext& context,
bool sorted,
int argc,
const char **argv,
const char *version,
const char *rgLine,
bool omitSQLines)
{
char* buffer;
size_t size;
size_t used;
char *localBuffer = NULL;
writer->inHeader(true);
if (! writer->getBuffer(&buffer, &size)) {
return false;
}
char *writerBuffer = buffer;
size_t writerBufferSize = size;
while (!format->writeHeader(context, buffer, size, &used, sorted, argc, argv, version, rgLine, omitSQLines)) {
delete[] localBuffer;
size = 2 * size;
localBuffer = new char[size];
buffer = localBuffer;
}
if (NULL == localBuffer) {
_ASSERT(writerBuffer == buffer);
writer->advance((unsigned)used, 0);
writer->nextBatch();
} else {
size_t bytesRemainingToWrite = used;
size_t bytesWritten = 0;
while (bytesRemainingToWrite > 0) {
size_t bytesToWrite = __min(bytesRemainingToWrite, writerBufferSize);
memcpy(writerBuffer, localBuffer + bytesWritten, bytesToWrite);
writer->advance(bytesToWrite);
writer->nextBatch();
if (!writer->getBuffer(&writerBuffer, &writerBufferSize)) {
return false;
}
bytesWritten += bytesToWrite;
bytesRemainingToWrite -= bytesToWrite;
}
delete[] localBuffer;
}
writer->inHeader(false);
return true;
}
示例2: write
bool PlotIO::write(const QString& path, const ros::Time& start, const ros::Time& end)
{
FileFormat* io = 0;
if(path.endsWith(".bag"))
io = new BagFormat;
else if(path.endsWith(".csv"))
io = new CSVFormat;
if(!io)
{
fprintf(stderr, "Could not find output format\n");
return false;
}
if(!io->init(path, start))
return false;
QLinkedList<Plot::LinkedBufferIterator> its = m_rootPlot->iterators(io->defaultFlags());
io->writeHeader(its);
QVector<Plot::LinkedBufferIterator*> to_write(its.size(), 0);
while(1)
{
ros::Time stamp = ros::Time(0);
qFill(to_write, (Plot::LinkedBufferIterator*)0);
// Get a list of iterators with the next timestamp
int i = 0;
for(QLinkedList<Plot::LinkedBufferIterator>::iterator it = its.begin(); it != its.end(); ++it, ++i)
{
Plot::LinkedBufferIterator& buf_it = *it;
if(!buf_it.isValid())
continue;
const Plot::DataPoint& point = *buf_it;
if(point.time < stamp || stamp == ros::Time(0))
{
qFill(to_write, (Plot::LinkedBufferIterator*)0);
to_write[i] = &buf_it;
stamp = point.time;
}
else if(point.time == stamp)
to_write[i] = &buf_it;
}
if(stamp == ros::Time(0))
break;
if(end != ros::Time(0) && stamp > end)
break;
if(stamp >= start)
io->writeData(stamp, to_write);
// Advance all used iterators
Q_FOREACH(Plot::LinkedBufferIterator* it, to_write)
{
if(!it)
continue;
++(*it);
}
}
delete io;
return true;
}