Class: LLVM::TargetDataLayout
- Inherits:
-
Object
- Object
- LLVM::TargetDataLayout
- Defined in:
- lib/llvm/target.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#abi_alignment_of(type) ⇒ Object
Computes the ABI alignment of a type in bytes for a target.
-
#abi_size_of(type) ⇒ Object
Computes the ABI size of a type in bytes for a target.
-
#bit_size_of(type) ⇒ Object
Computes the size of a type in bits for a target.
-
#byte_order ⇒ Object
Returns the byte order of a target, either :big_endian or :little_endian.
-
#call_frame_alignment_of(type) ⇒ Object
Computes the call frame alignment of a type in bytes for a target.
-
#dispose ⇒ Object
Destroys this instance of TargetDataLayout.
-
#element_at_offset(type, offset) ⇒ Object
Computes the structure element that contains the byte offset for a target.
-
#initialize(representation) ⇒ TargetDataLayout
constructor
Creates a target data layout from a string representation.
-
#int_ptr_type(addr_space = 0) ⇒ Object
Returns the integer type that is the same size as a pointer on a target.
-
#offset_of_element(type, element) ⇒ Object
Computes the byte offset of the indexed struct element for a target.
-
#pointer_size(addr_space = 0) ⇒ Object
Returns the pointer size in bytes for a target.
-
#preferred_alignment_of(entity) ⇒ Object
Computes the preferred alignment of a type or a global variable in bytes for a target.
-
#storage_size_of(type) ⇒ Object
Computes the storage size of a type in bytes for a target.
- #to_ptr ⇒ Object
-
#to_s ⇒ String
Returns string representation of target data layout.
Constructor Details
#initialize(representation) ⇒ TargetDataLayout
Creates a target data layout from a string representation.
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_order ⇒ Object
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 |
#dispose ⇒ Object
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.
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.
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.
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_ptr ⇒ Object
241 242 243 |
# File 'lib/llvm/target.rb', line 241 def to_ptr @ptr end |
#to_s ⇒ String
Returns string representation of target data layout.
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.(string_ptr) string end |