Class: LLVM::TargetDataLayout

Inherits:
Object
  • Object
show all
Defined in:
lib/llvm/target.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(representation) ⇒ TargetDataLayout

Creates a target data layout from a string representation.

Parameters:

  • representation (String)


216
217
218
# File 'lib/llvm/target.rb', line 216

def initialize(representation)
  @ptr = C.create_target_data(representation.to_s)
end

Class Method Details

.from_ptr(ptr) ⇒ Object



221
222
223
224
225
# File 'lib/llvm/target.rb', line 221

def self.from_ptr(ptr)
  target = allocate
  target.instance_variable_set :@ptr, ptr
  target
end

Instance Method Details

#abi_alignment_of(type) ⇒ Object

Computes the ABI alignment of a type in bytes for a target.



286
287
288
# File 'lib/llvm/target.rb', line 286

def abi_alignment_of(type)
  C.abi_alignment_of_type(self, type)
end

#abi_size_of(type) ⇒ Object

Computes the ABI size of a type in bytes for a target.



281
282
283
# File 'lib/llvm/target.rb', line 281

def abi_size_of(type)
  C.abi_size_of_type(self, type)
end

#bit_size_of(type) ⇒ Object

Computes the size of a type in bits for a target.



271
272
273
# File 'lib/llvm/target.rb', line 271

def bit_size_of(type)
  C.size_of_type_in_bits(self, type)
end

#byte_orderObject

Returns the byte order of a target, either :big_endian or :little_endian.



252
253
254
# File 'lib/llvm/target.rb', line 252

def byte_order
  C.byte_order(self)
end

#call_frame_alignment_of(type) ⇒ Object

Computes the call frame alignment of a type in bytes for a target.



291
292
293
# File 'lib/llvm/target.rb', line 291

def call_frame_alignment_of(type)
  C.call_frame_alignment_of_type(self, type)
end

#disposeObject

Destroys this instance of TargetDataLayout.



233
234
235
236
237
238
# File 'lib/llvm/target.rb', line 233

def dispose
  return if ptr.nil?

  C.dispose_target_data(self)
  @ptr = nil
end

#element_at_offset(type, offset) ⇒ Object

Computes the structure element that contains the byte offset for a target.



309
310
311
# File 'lib/llvm/target.rb', line 309

def element_at_offset(type, offset)
  C.element_at_offset(self, type, offset)
end

#int_ptr_type(addr_space = 0) ⇒ Object

Returns the integer type that is the same size as a pointer on a target.

Parameters:

  • addr_space (Integer) (defaults to: 0)

    address space number



266
267
268
# File 'lib/llvm/target.rb', line 266

def int_ptr_type(addr_space = 0)
  Type.from_ptr(C.int_ptr_type_for_as(self, addr_space), :integer)
end

#offset_of_element(type, element) ⇒ Object

Computes the byte offset of the indexed struct element for a target.



314
315
316
# File 'lib/llvm/target.rb', line 314

def offset_of_element(type, element)
  C.offset_of_element(self, type, element)
end

#pointer_size(addr_space = 0) ⇒ Object

Returns the pointer size in bytes for a target.

Parameters:

  • addr_space (Integer) (defaults to: 0)

    address space number



259
260
261
# File 'lib/llvm/target.rb', line 259

def pointer_size(addr_space = 0)
  C.pointer_size_for_as(self, addr_space)
end

#preferred_alignment_of(entity) ⇒ Object

Computes the preferred alignment of a type or a global variable in bytes for a target.

Parameters:



299
300
301
302
303
304
305
306
# File 'lib/llvm/target.rb', line 299

def preferred_alignment_of(entity)
  case entity
  when LLVM::Type
    C.preferred_alignment_of_type(self, entity)
  when LLVM::GlobalValue
    C.preferred_alignment_of_global(self, entity)
  end
end

#storage_size_of(type) ⇒ Object

Computes the storage size of a type in bytes for a target.



276
277
278
# File 'lib/llvm/target.rb', line 276

def storage_size_of(type)
  C.store_size_of_type(self, type)
end

#to_ptrObject



228
229
230
# File 'lib/llvm/target.rb', line 228

def to_ptr
  @ptr
end

#to_sString

Returns string representation of target data layout.

Returns:

  • (String)


243
244
245
246
247
248
249
# File 'lib/llvm/target.rb', line 243

def to_s
  string_ptr = C.copy_string_rep_of_target_data(self)
  string = string_ptr.read_string
  C.dispose_message(string_ptr)

  string
end