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)

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

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

Class Method Details

.from_ptr(ptr) ⇒ Object


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

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.


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

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.


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

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.


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

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.


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

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.


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

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

#disposeObject

Destroys this instance of TargetDataLayout.


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

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.


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

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


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

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.


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

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


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

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:


306
307
308
309
310
311
312
313
# File 'lib/llvm/target.rb', line 306

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.


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

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

#to_ptrObject


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

def to_ptr
  @ptr
end

#to_sString

Returns string representation of target data layout.

Returns:

  • (String)

250
251
252
253
254
255
256
# File 'lib/llvm/target.rb', line 250

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