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)


218
219
220
# File 'lib/llvm/target.rb', line 218

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

Class Method Details

.from_ptr(ptr) ⇒ Object



223
224
225
226
227
# File 'lib/llvm/target.rb', line 223

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.



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

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.



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

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.



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

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.



254
255
256
# File 'lib/llvm/target.rb', line 254

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.



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

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

#disposeObject

Destroys this instance of TargetDataLayout.



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

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.



311
312
313
# File 'lib/llvm/target.rb', line 311

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



268
269
270
# File 'lib/llvm/target.rb', line 268

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.



316
317
318
# File 'lib/llvm/target.rb', line 316

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



261
262
263
# File 'lib/llvm/target.rb', line 261

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:



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

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.



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

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

#to_ptrObject



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

def to_ptr
  @ptr
end

#to_sString

Returns string representation of target data layout.

Returns:

  • (String)


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

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