class AdLint::Cc1::TypedObject

Attributes

type[R]

Public Class Methods

new(type, dcl_or_def = nil) click to toggle source
Calls superclass method AdLint::Cc1::Object::new
# File lib/adlint/cc1/object.rb, line 163
def initialize(type, dcl_or_def = nil)
  super(dcl_or_def)
  @type = type
end

Public Instance Methods

to_pointer(interp_bridge) click to toggle source
# File lib/adlint/cc1/object.rb, line 178
def to_pointer(interp_bridge)
  if @type.array?
    ptr_type = @type.type_table.pointer_type(@type.base_type)
  else
    ptr_type = @type.type_table.pointer_type(@type)
  end
  interp_bridge[:create_tmpvar][ptr_type, to_pointer_value(interp_bridge)]
end
to_pointer_value(interp_bridge) click to toggle source
# File lib/adlint/cc1/object.rb, line 195
def to_pointer_value(interp_bridge)
  interp_bridge[:scalar_value_of][binding.memory.address]
end
to_value(interp_bridge) click to toggle source
# File lib/adlint/cc1/object.rb, line 187
def to_value(interp_bridge)
  if @type.array? || @type.function?
    to_pointer_value(interp_bridge)
  else
    value.to_single_value
  end
end
to_variable(interp_bridge) click to toggle source
# File lib/adlint/cc1/object.rb, line 170
def to_variable(interp_bridge)
  if function? or variable? && @type.array?
    to_pointer(interp_bridge)
  else
    self
  end
end