module AdLint::Cc1::InterpreterMediator
Public Instance Methods
constant_expression?(expr)
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 291 def constant_expression?(expr) expr.constant?(_interp_syntax_bridge_) end
current_branch()
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 267 def current_branch environment.current_branch end
interpret(node, *opts)
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 259 def interpret(node, *opts) interpreter.execute(node, *opts) end
object_to_pointer(obj, init_or_expr = nil)
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 303 def object_to_pointer(obj, init_or_expr = nil) obj.to_pointer(_interp_object_bridge_).tap do |ptr| if init_or_expr notify_address_derivation_performed(init_or_expr, obj, ptr) end end end
object_to_variable(obj, init_or_expr = nil)
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 295 def object_to_variable(obj, init_or_expr = nil) obj.to_variable(_interp_object_bridge_).tap do |var| if init_or_expr && !obj.type.pointer? && var.type.pointer? notify_address_derivation_performed(init_or_expr, obj, var) end end end
pointer_value_of(obj)
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 315 def pointer_value_of(obj) obj.to_pointer_value(_interp_object_bridge_) end
reset_environment()
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 263 def reset_environment environment.reset end
scalar_value_of(numeric)
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 271 def scalar_value_of(numeric) ScalarValue.of(numeric, logical_right_shift?) end
scalar_value_of_arbitrary()
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 287 def scalar_value_of_arbitrary ScalarValue.of_arbitrary(logical_right_shift?) end
scalar_value_of_false()
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 279 def scalar_value_of_false ScalarValue.of_false(logical_right_shift?) end
scalar_value_of_null()
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 283 def scalar_value_of_null ScalarValue.of_null(logical_right_shift?) end
scalar_value_of_true()
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 275 def scalar_value_of_true ScalarValue.of_true(logical_right_shift?) end
value_of(obj)
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 311 def value_of(obj) obj.to_value(_interp_object_bridge_) end
Private Instance Methods
branched_eval(expr = nil, *opts, &block)
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 327 def branched_eval(expr = nil, *opts, &block) cur_branch = environment.enter_branch(*opts) interpreter.notify_branch_started(cur_branch) cur_branch.execute(interpreter, expr, &block) ensure interpreter.notify_branch_ended(cur_branch) environment.leave_branch_group if cur_branch.final? environment.leave_branch end
resolve_unresolved_type(node)
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 337 def resolve_unresolved_type(node) interpreter.type_resolver.resolve(node) if node.type.unresolved? end
scoped_eval() { || ... }
click to toggle source
# File lib/adlint/cc1/mediator.rb, line 320 def scoped_eval(&block) environment.enter_scope yield ensure environment.leave_scope end