本文整理汇总了C++中FileFormat::init方法的典型用法代码示例。如果您正苦于以下问题:C++ FileFormat::init方法的具体用法?C++ FileFormat::init怎么用?C++ FileFormat::init使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileFormat
的用法示例。
在下文中一共展示了FileFormat::init方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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;
}