Exemple #1
0
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;
}
Exemple #2
0
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;
}