Method: CTypes::Bitfield.layout

Defined in:
lib/ctypes/bitfield.rb

.layout(&block) ⇒ Object

describe the layout of the bitfield

Examples:

right-to-left bit layout

layout do
  unsigned :bit             # single bit for a
  skip 1                    # skip one bit
  unsigned :two, 2          # two bits for this field
  signed :nibble, 4         # four bit nibble as a signed int
end

explicit bit layout

layout do
  field :bit, offset: 0, bits: 1
  field :two, offset: 2, bits: 2
  field :nibble, offset: 4, bits: 4
end

create a two-byte bitfield, but only one bit declared

layout do
  size 2                    # bitfield will take two bytes
  field :bit, offset: 9, bits: 1
end

Raises:



66
67
68
69
70
71
# File 'lib/ctypes/bitfield.rb', line 66

def self.layout(&block)
  raise Error, "no block given" unless block
  builder = Builder.new(&block)
  builder.instance_eval(&block)
  apply_layout(builder)
end