Method: CTypes::Struct#pretty_print

Defined in:
lib/ctypes/struct.rb

#pretty_print(q) ⇒ Object

:nodoc:



508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
# File 'lib/ctypes/struct.rb', line 508

def pretty_print(q) # :nodoc:
  open = if (name = self.class.type_name || self.class.name)
    "struct #{name} {"
  else
    "struct {"
  end
  q.group(4, open, "}") do
    # strip out pad fields
    fields = self.class.field_layout.reject do |(_, type)|
      type.is_a?(CTypes::Pad)
    end
    q.seplist(fields, -> { q.breakable("") }) do |name, _|
      names = name.is_a?(::Array) ? name : [name]
      names.each do |name|
        next if name.is_a?(CTypes::Pad)
        q.text(".#{name} = ")
        q.pp(instance_variable_get(:"@#{name}"))
        q.text(", ")
      end
    end
  end
end