Hi,

I have developed a simple cast function which I found very useful. Here it is:

        template< typename T >
        inline T offset_cast( void* p, unsigned int  offset=0 )
        {
                return reinterpret_cast< T >( static_cast<unsigned char*>( p )+offset 
); 
        }
        
        template< typename T >
        inline T offset_cast( const void* p, unsigned int offset=0 )
        {
                return reinterpret_cast< T >( static_cast<const unsigned char*>( p 
)+offset ); 
        }

Its purposes is to simplify a mapping of C-like structure onto binary data. Here is 
the example: Assume thath you have a network packet in raw format, and you want
to read IP-header information. You could do following:

        ip_header* ip=offset_cast<ip_header>( packet, ip_header_offset );

instead of ugly pointer arithmetic.

Is there any interest for something like this in Boost?


Pavol

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to