STD1::uint32_t ExternalFiles::write( std::FILE *out ) { if( table.empty() ) return 0; STD1::uint32_t start( std::ftell( out ) ); for( ConstTableIter itr = table.begin(); itr != table.end(); ++itr ) { std::string buffer; wtomb_string( itr->first, buffer ); std::size_t length( buffer.size() ); if( length > 255 ) { buffer.erase( 255 ); length = 255; } std::size_t written; if( std::fputc( static_cast< STD1::uint8_t >( length + 1 ), out) == EOF || ( written = std::fwrite( buffer.data(), sizeof( char ), length, out ) ) != length ) throw FatalError( ERR_WRITE ); bytes += static_cast< STD1::uint32_t >( written + 1 ); } return start; }
STD1::uint32_t ControlButton::write( std::FILE *out ) const { STD1::uint32_t bytes( sizeof( STD1::uint16_t ) * 2 ); STD1::uint16_t type( 1 ); if( std::fwrite( &type, sizeof( STD1::uint16_t), 1, out) != 1 ) throw FatalError( ERR_WRITE ); if( std::fwrite( &res, sizeof( STD1::uint16_t), 1, out) != 1 ) throw FatalError( ERR_WRITE ); std::string buffer; wtomb_string( txt, buffer ); std::size_t length( buffer.size() ); if( length > 255 ) { buffer.erase( 255 ); length = 255; } if( std::fputc( static_cast< STD1::uint8_t >( length ), out) == EOF || std::fwrite( buffer.data(), sizeof( char ), length, out ) != length ) throw FatalError( ERR_WRITE ); bytes += length + 1; return bytes; }