Class: RCGTK::Value
Overview
This class represents LLVM IR “data”, including integer and float literals, functions, and constant arrays, structs, and vectors.
Direct Known Subclasses
Defined Under Namespace
Classes: AttrCollection
Instance Attribute Summary
Attributes included from BindingClass
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
Compare one Value to another.
-
#attributes ⇒ AttrCollection
(also: #attrs)
Proxy object for inspecing a value’s attributes.
-
#bitcast(type) ⇒ ConstantExpr
Bitcast a value to a given type.
-
#constant? ⇒ Boolean
If this value is a constant.
-
#dump ⇒ void
Print the LLVM IR representation of this value to standard error.
-
#hash ⇒ Fixnum
Hashed value of the pointer representing this value.
-
#initialize(ptr) ⇒ Value
constructor
Instantiate a Value object from a pointer.
-
#name ⇒ String
Name of this value in LLVM IR.
-
#name=(str) ⇒ String
Set the name of this value in LLVM IR.
-
#null? ⇒ Boolean
If the value is null or not.
-
#print ⇒ String
LLVM IR representation of this value.
-
#trunc(type) ⇒ ConstantExpr
Truncate a value to a given type.
-
#trunc_or_bitcast(type) ⇒ ConstantExpr
Truncate or bitcast a value to the given type as is appropriate.
-
#type ⇒ Type
Type of this value.
-
#undefined? ⇒ Boolean
If the value is undefined or not.
-
#zextend(type) ⇒ ConstantExpr
Zero extend the value to the length of type.
-
#zextend_or_bitcast(type) ⇒ ConstantExpr
Zero extend or bitcast the value to the given type as is appropriate.
Constructor Details
#initialize(ptr) ⇒ Value
Instantiate a Value object from a pointer. This should never be done by library users, and is only used internally.
33 34 35 |
# File 'lib/rcgtk/value.rb', line 33 def initialize(ptr) @ptr = check_type(ptr, FFI::Pointer, 'ptr') end |
Instance Method Details
#==(other) ⇒ Boolean
Compare one Value to another.
42 43 44 |
# File 'lib/rcgtk/value.rb', line 42 def ==(other) other.is_a?(Value) and @ptr == other.ptr end |
#attributes ⇒ AttrCollection Also known as: attrs
Returns Proxy object for inspecing a value’s attributes.
47 48 49 |
# File 'lib/rcgtk/value.rb', line 47 def attributes @attributes ||= AttrCollection.new(@ptr) end |
#bitcast(type) ⇒ ConstantExpr
Bitcast a value to a given type.
57 58 59 |
# File 'lib/rcgtk/value.rb', line 57 def bitcast(type) ConstantExpr.new(Bindings.const_bit_cast(@ptr, check_cg_type(type))) end |
#constant? ⇒ Boolean
Returns If this value is a constant.
62 63 64 |
# File 'lib/rcgtk/value.rb', line 62 def constant? Bindings.is_constant(@ptr).to_bool end |
#dump ⇒ void
This method returns an undefined value.
Print the LLVM IR representation of this value to standard error. This function is the debugging version of the more general purpose #print method.
73 74 75 |
# File 'lib/rcgtk/value.rb', line 73 def dump Bindings.dump_value(@ptr) end |
#hash ⇒ Fixnum
Returns Hashed value of the pointer representing this value.
78 79 80 |
# File 'lib/rcgtk/value.rb', line 78 def hash @ptr.address.hash end |
#name ⇒ String
Returns Name of this value in LLVM IR.
83 84 85 |
# File 'lib/rcgtk/value.rb', line 83 def name Bindings.get_value_name(@ptr) end |
#name=(str) ⇒ String
Set the name of this value in LLVM IR.
92 93 94 |
# File 'lib/rcgtk/value.rb', line 92 def name=(str) str.tap { Bindings.set_value_name(@ptr, check_type(str, String)) } end |
#null? ⇒ Boolean
Returns If the value is null or not.
97 98 99 |
# File 'lib/rcgtk/value.rb', line 97 def null? Bindings.is_null(@ptr).to_bool end |
#print ⇒ String
Returns LLVM IR representation of this value.
102 103 104 |
# File 'lib/rcgtk/value.rb', line 102 def print Bindings.print_value_to_string(@ptr) end |
#trunc(type) ⇒ ConstantExpr
Truncate a value to a given type.
111 112 113 |
# File 'lib/rcgtk/value.rb', line 111 def trunc(type) ConstantExpr.new(Bindings.const_trunc(check_cg_type(type))) end |
#trunc_or_bitcast(type) ⇒ ConstantExpr
Truncate or bitcast a value to the given type as is appropriate.
120 121 122 |
# File 'lib/rcgtk/value.rb', line 120 def trunc_or_bitcast(type) ConstantExpr.new(Bindings.const_trunc_or_bit_cast(check_cg_type(type))) end |
#type ⇒ Type
Returns Type of this value.
125 126 127 |
# File 'lib/rcgtk/value.rb', line 125 def type @type ||= Type.from_ptr(Bindings.type_of(@ptr)) end |
#undefined? ⇒ Boolean
Returns If the value is undefined or not.
130 131 132 |
# File 'lib/rcgtk/value.rb', line 130 def undefined? Bindings.is_undef(@ptr).to_bool end |
#zextend(type) ⇒ ConstantExpr
Zero extend the value to the length of type.
139 140 141 |
# File 'lib/rcgtk/value.rb', line 139 def zextend(type) ConstantExpr.new(Bindings.const_z_ext(check_cg_type(type))) end |
#zextend_or_bitcast(type) ⇒ ConstantExpr
Zero extend or bitcast the value to the given type as is appropriate.
148 149 150 |
# File 'lib/rcgtk/value.rb', line 148 def zextend_or_bitcast(type) ConstantExpr.new(Bindings.const_z_ext_or_bit_cast(check_cg_type(type))) end |