本文整理汇总了C++中service_ptr_t::is_eof方法的典型用法代码示例。如果您正苦于以下问题:C++ service_ptr_t::is_eof方法的具体用法?C++ service_ptr_t::is_eof怎么用?C++ service_ptr_t::is_eof使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类service_ptr_t
的用法示例。
在下文中一共展示了service_ptr_t::is_eof方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
static void parse_id666( service_ptr_t< file > & p_file, LPID666TAG lpTag, bool aligned, abort_callback & p_abort )
{
while ( ! p_file->is_eof( p_abort ) )
{
t_uint8 id, type;
t_uint16 data;
p_file->read_object_t( id, p_abort );
p_file->read_object_t( type, p_abort );
p_file->read_lendian_t( data, p_abort );
switch ( type )
{
case XTYPE_STR:
{
if ( data < 1 || data > 256 ) throw exception_io_data();
switch ( id )
{
case XID_SONG:
p_file->read_object( lpTag->szTitle, data, p_abort );
break;
case XID_GAME:
p_file->read_object( lpTag->szGame, data, p_abort );
break;
case XID_ARTIST:
p_file->read_object( lpTag->szArtist, data, p_abort );
break;
case XID_PUB:
p_file->read_object( lpTag->szPublisher, data, p_abort );
break;
case XID_OST:
p_file->read_object( lpTag->szOST, data, p_abort );
break;
case XID_DUMPER:
p_file->read_object( lpTag->szDumper, data, p_abort );
break;
case XID_CMNTS:
p_file->read_object( lpTag->szComment, data, p_abort );
break;
default:
p_file->skip( data, p_abort );
break;
}
if ( aligned && ( data & 3 ) ) p_file->skip( 4 - ( data & 3 ), p_abort );
}
break;
case XTYPE_INT:
{
if ( data != 4 ) throw exception_io_data();
t_uint32 value;
p_file->read_lendian_t( value, p_abort );
switch ( id )
{
case XID_DATE:
SetDate( lpTag->szDate, ( value >> 16 ) & 255, ( value >> 8 ) & 255, value & 255 );
break;
case XID_INTRO:
if ( value > 383999999 ) value = 383999999;
lpTag->uSong_ms = value / 64;
break;
case XID_LOOP:
if ( value > 383999999 ) value = 383999999;
lpTag->uLoop_ms = value / 64;
break;
case XID_END:
if ( value > 383999999 ) value = 383999999;
lpTag->uEnd_ms = value / 64;
break;
case XID_FADE:
if ( value > 3839999 ) value = 3839999;
lpTag->uFade_ms = value / 64;
break;
case XID_AMP:
if ( value < 32768 ) value = 32768;
else if ( value > 524288 ) value = 524288;
lpTag->uAmplification = value;
break;
}
}
break;
case XTYPE_DATA:
{
//.........这里部分代码省略.........