Method: CTypes::Struct.export_type

Defined in:
lib/ctypes/struct.rb

.export_type(q) ⇒ Object



341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
# File 'lib/ctypes/struct.rb', line 341

def self.export_type(q)
  q << "CTypes::Struct.builder()"
  q.break
  q.nest(2) do
    q << ".name(%p)\n" % [@name] if @name
    q << ".endian(%p)\n" % [@endian] if @endian
    @fields.each do |name, type|
      case name
      when Symbol
        q << ".attribute(%p, " % [name]
        q << type
        q << ")"
        q.break
      when ::Array
        q << ".attribute("
        q << type
        q << ")"
        q.break
      when Pad
        q << type
        q.break
      else
        raise Error, "unsupported field name type: %p" % [name]
      end
    end
    q << ".build()"
  end
end