Method: DL::CStructEntity#set_ctypes

Defined in:
lib/dl/struct.rb

#set_ctypes(types) ⇒ Object

Given types, calculate the offsets and sizes for the types in the struct.



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/dl/struct.rb', line 127

def set_ctypes(types)
  @ctypes = types
  @offset = []
  offset = 0

  max_align = types.map { |type, count = 1|
    orig_offset = offset
    align = ALIGN_MAP[type]
    offset = PackInfo.align(orig_offset, align)

    @offset << offset

    offset += (SIZE_MAP[type] * count)

    align
  }.max

  @size = PackInfo.align(offset, max_align)
end