本文整理汇总了C++中Listener::bufferOffset方法的典型用法代码示例。如果您正苦于以下问题:C++ Listener::bufferOffset方法的具体用法?C++ Listener::bufferOffset怎么用?C++ Listener::bufferOffset使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Listener
的用法示例。
在下文中一共展示了Listener::bufferOffset方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char * const argv[])
{
Listener listener;
IrRepo repo(listener);
CarCallbacks carCbs(listener);
char *buffer = NULL;
int length = 0, ch, justHeader = 0;
#if defined(WIN32)
int optind = 1;
if (strcmp(argv[optind], "-?") == 0)
{
usage(argv[0]);
exit(-1);
}
else if (strcmp(argv[optind], "-h") == 0)
{
justHeader++;
optind++;
}
#else
while ((ch = ::getopt(argc, argv, "h")) != -1)
{
switch (ch)
{
case 'h':
justHeader++;
break;
case '?':
default:
usage(argv[0]);
break;
}
}
#endif /* WIN32 */
// load IR from .sbeir file
if (repo.loadFromFile(argv[optind]) < 0)
{
std::cout << "could not load IR" << std::endl;
exit(-1);
}
// load data from file into a buffer
if ((buffer = ::readFileIntoBuffer(argv[optind+1], &length)) == NULL)
{
std::cout << "could not load encoding" << std::endl;
exit(-1);
}
std::cout << "Decoding..." << std::endl;
// if all we want is header, then set up IR for header, decode, and print out offset and header fields
if (justHeader)
{
listener.ir(repo.header())
.resetForDecode(buffer, length)
.subscribe(&carCbs, &carCbs, &carCbs);
std::cout << "Message starts at offset " << listener.bufferOffset() << "\n";
return 0;
}
// set up listener and kick off decoding with subscribe
listener.dispatchMessageByHeader(repo.header(), &repo)
.resetForDecode(buffer, length)
.subscribe(&carCbs, &carCbs, &carCbs);
std::cout << "Message ends at offset " << listener.bufferOffset() << "\n";
delete[] buffer;
return 0;
}