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)


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

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

Class Method Details

.from_ptr(ptr) ⇒ Object



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

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.



299
300
301
# File 'lib/llvm/target.rb', line 299

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.



294
295
296
# File 'lib/llvm/target.rb', line 294

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.



284
285
286
# File 'lib/llvm/target.rb', line 284

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.



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

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.



304
305
306
# File 'lib/llvm/target.rb', line 304

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

#disposeObject

Destroys this instance of TargetDataLayout.



246
247
248
249
250
251
# File 'lib/llvm/target.rb', line 246

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.



322
323
324
# File 'lib/llvm/target.rb', line 322

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



279
280
281
# File 'lib/llvm/target.rb', line 279

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.



327
328
329
# File 'lib/llvm/target.rb', line 327

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



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

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:



312
313
314
315
316
317
318
319
# File 'lib/llvm/target.rb', line 312

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.



289
290
291
# File 'lib/llvm/target.rb', line 289

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

#to_ptrObject



241
242
243
# File 'lib/llvm/target.rb', line 241

def to_ptr
  @ptr
end

#to_sString

Returns string representation of target data layout.

Returns:

  • (String)


256
257
258
259
260
261
262
# File 'lib/llvm/target.rb', line 256

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