X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FIntParser.ih;h=16099c1cfc1c8ee0568c1cce552c3257e26b9603;hb=c45c112ae88196ea8da9c5a9efb0e167196744d2;hp=fdc7b85632d0c84173f3221e670c3f273207823d;hpb=f2ee096196e21c52de0ea56b874c63bfad088237;p=senf.git diff --git a/Packets/IntParser.ih b/Packets/IntParser.ih index fdc7b85..16099c1 100644 --- a/Packets/IntParser.ih +++ b/Packets/IntParser.ih @@ -23,8 +23,8 @@ /** \file \brief IntParser internal header */ -#ifndef IH_IntParser_ -#define IH_IntParser_ 1 +#ifndef IH_SENF_Packets_IntParser_ +#define IH_SENF_Packets_IntParser_ 1 // Custom includes #include "PacketTypes.hh" @@ -114,6 +114,25 @@ namespace packet { i[1] = ( v ) & 0xff; } + /** \brief Internal: Extract 16bit least significant bit order value + + \internal + */ + inline boost::uint16_t parse_uint16LSB(iterator i) + { + return i[0] | i[1]<<8; + } + + /** \brief Internal: Write 16bit least significant bit order value + + \internal + */ + inline void write_uint16LSB(iterator i, boost::uint16_t v) + { + i[0] = ( v ) & 0xff; + i[1] = ( v >> 8 ) & 0xff; + } + /** \brief Internal: Extract 24bit network byte order value \internal @@ -155,6 +174,27 @@ namespace packet { i[3] = ( v ) & 0xff; } + /** \brief Internal: Extract 32bit network byte order value + + \internal + */ + inline boost::uint32_t parse_uint32LSB(iterator i) + { + return i[0] | i[1]<<8 | i[2]<<16 | i[3]<<24; + } + + /** \brief Internal: Write 32bit network byte order value + + \internal + */ + inline void write_uint32LSB(iterator i, boost::uint32_t v) + { + i[3] = ( v >> 24 ) & 0xff; + i[2] = ( v >> 16 ) & 0xff; + i[1] = ( v >> 8 ) & 0xff; + i[0] = ( v ) & 0xff; + } + /** \brief Internal: Extract 64bit network byte order value \internal @@ -183,6 +223,34 @@ namespace packet { i[7] = ( v ) & 0xff; } + /** \brief Internal: Extract 64bit least significant bit order value + + \internal + */ + inline boost::uint64_t parse_uint64LSB(iterator i) + { + return ((boost::uint64_t)i[0]) | ((boost::uint64_t)i[1])<<8 + | ((boost::uint64_t)i[2])<<16 | ((boost::uint64_t)i[3])<<24 + | ((boost::uint64_t)i[4])<<32 | ((boost::uint64_t)i[5])<<40 + | ((boost::uint64_t)i[6])<<48 | ((boost::uint64_t)i[7])<<56; + } + + /** \brief Internal: Write 64bit least significant bit order value + + \internal + */ + inline void write_uint64LSB(iterator i, boost::uint64_t v) + { + i[0] = ( v ) & 0xff; + i[1] = ( v >> 8 ) & 0xff; + i[2] = ( v >> 16 ) & 0xff; + i[3] = ( v >> 24 ) & 0xff; + i[4] = ( v >> 32 ) & 0xff; + i[5] = ( v >> 40 ) & 0xff; + i[6] = ( v >> 48 ) & 0xff; + i[7] = ( v >> 56 ) & 0xff; + } + /////////////////////////////////////////////////////////////////////////// // bitfield extraction