class Bitfield
constructor: (@type, @flags = []) ->
decode: (stream) ->
val = @type.decode(stream)
res = {}
for flag, i in @flags when flag?
res[flag] = !!(val & (1 << i))
return res
size: ->
@type.size()
encode: (stream, keys) ->
val = 0
for flag, i in @flags when flag?
val |= (1 << i) if keys[flag]
@type.encode(stream, val)
module.exports = Bitfield