[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mapping data



Steven Shaw wrote:
> Erlang has something called "bit syntax".
> 
> 	http://c2.com/cgi/wiki?ErlangBitSyntax
> 

I was about to suggest a look at Erlang's Bit Syntax when Steven beat me 
to it.  Anyone who is interested should take a look at

http://www.erlang.org/doc/r9c/pdf/programming_examples-5.3.pdf

specfically section 1.4.  One interesting example is erlang code to 
match an IP datagram

-define(IP_VERSION, 4).
-define(IP_MIN_HDR_LEN, 5).

DgramSize = size(Dgram),
case Dgram of
   <<?IP_VERSION:4, HLen:4, SrvcType:8, TotLen:16,
     ID:16, Flgs:3, FragOff:13,
     TTL:8, Proto:8, HdrChkSum:16,
     SrcIP:32,
     DestIP:32, RestDgram/binary>> when HLen >= 5, 4*HLen =< DgramSize ->
       OptsLen = 4*(HLen - ?IP_MIN_HDR_LEN),
       <<Opts:OptsLen/binary,Data/binary>> = RestDgram,
   ...
end.

I also need to make clear that I do not currently know erlang 
sufficiently to discuss it properly.  I am currently learning erlang for 
my own interest, and thought of this thread when I saw this code.

Andrae Muys

-- 
  Andrae Muys    <andrae.muys@braintree.com.au>
  Engineer       Braintree Communications