Method: CTypes::Bitfield::Builder#unsigned

Defined in:
lib/ctypes/bitfield/builder.rb

#unsigned(name, bits = 1) ⇒ Object

append a new unsigned field to the bitfield

Parameters:

  • name (String, Symbol)

    name of the field

  • bits (Integer) (defaults to: 1)

    number of bits

Raises:



147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/ctypes/bitfield/builder.rb', line 147

def unsigned(name, bits = 1)
  unless @offset
    raise Error,
      "cannot mix `#unsigned` and `#field` in Bitfield layout"
  end

  name = name.to_sym
  raise Error, "duplicate field: %p" % [name] if
      @fields.any? { |(n, _)| n == name }

  @layout << ((bits == 1) ?
      "unsigned %p" % [name] :
      "unsigned %p, %d" % [name, bits])

  __field_impl(name:, bits:, offset: @offset, signed: false)
  @offset += bits
  self
end