Module: AdLint::Cc1::InterpreterMediator
- Extended by:
- Forwardable
- Includes:
- ArithmeticAccessor, EnumeratorTableMediator, FunctionTableMediator, InterpObjectBridge, InterpSyntaxBridge, MemoryPoolMediator, TypeTableMediator, VariableTableMediator
- Included in:
- InitializerInterpreter, Interpreter, SubInterpreter, ValueDomainManipulator, ValueDomainNarrowing, Exam::CBuiltin::W0023, Exam::CBuiltin::W0024, Exam::CBuiltin::W0028, Exam::CBuiltin::W0030, Exam::CBuiltin::W0066, Exam::CBuiltin::W0079, Exam::CBuiltin::W0081, Exam::CBuiltin::W0082, Exam::CBuiltin::W0093, Exam::CBuiltin::W0096, Exam::CBuiltin::W0097, Exam::CBuiltin::W0101, Exam::CBuiltin::W0102, Exam::CBuiltin::W0103, Exam::CBuiltin::W0107, Exam::CBuiltin::W0115, Exam::CBuiltin::W0116, Exam::CBuiltin::W0119, Exam::CBuiltin::W0255, Exam::CBuiltin::W0421, Exam::CBuiltin::W0422, Exam::CBuiltin::W0441, Exam::CBuiltin::W0461, Exam::CBuiltin::W0462, Exam::CBuiltin::W0534, Exam::CBuiltin::W0543, Exam::CBuiltin::W0568, Exam::CBuiltin::W0569, Exam::CBuiltin::W0570, Exam::CBuiltin::W0580, Exam::CBuiltin::W0582, Exam::CBuiltin::W0583, Exam::CBuiltin::W0584, Exam::CBuiltin::W0585, Exam::CBuiltin::W0607, Exam::CBuiltin::W0608, Exam::CBuiltin::W0611, Exam::CBuiltin::W0612, Exam::CBuiltin::W0614, Exam::CBuiltin::W0649, Exam::CBuiltin::W0650, Exam::CBuiltin::W0705, Exam::CBuiltin::W0707, Exam::CBuiltin::W0708, Exam::CBuiltin::W0719, Exam::CBuiltin::W0720, Exam::CBuiltin::W0722, Exam::CBuiltin::W0723, Exam::CBuiltin::W0728, Exam::CBuiltin::W0729, Exam::CBuiltin::W0730, Exam::CBuiltin::W0738, Exam::CBuiltin::W0739, Exam::CBuiltin::W0740, Exam::CBuiltin::W0741, Exam::CBuiltin::W0742, Exam::CBuiltin::W0743, Exam::CBuiltin::W0744, Exam::CBuiltin::W0745, Exam::CBuiltin::W0777, Exam::CBuiltin::W0780, Exam::CBuiltin::W0786, Exam::CBuiltin::W0794, Exam::CBuiltin::W0949, Exam::CBuiltin::W1047, Exam::CBuiltin::W1049, Exam::CBuiltin::W1050, Exam::CBuiltin::W1051, Exam::CBuiltin::W1052, Exam::CBuiltin::W1053, Exam::CBuiltin::W1056, Exam::CBuiltin::W1057, Exam::CBuiltin::W1058, Exam::CBuiltin::W1061, Exam::CBuiltin::W1062, Exam::CBuiltin::W1063, Exam::CBuiltin::W1066, Exam::CBuiltin::W9003
- Defined in:
- lib/adlint/cc1/mediator.rb
Instance Method Summary
collapse
#_interp_syntax_bridge_
#_interp_object_bridge_
#arithmetic, #logical_right_shift?
#declare_explicit_function, #declare_implicit_function, #define_anonymous_function, #define_explicit_function
#create_tmpvar, #local_variables
#pointee_of
Instance Method Details
#constant_expression?(expr) ⇒ Boolean
291
292
293
|
# File 'lib/adlint/cc1/mediator.rb', line 291
def constant_expression?(expr)
expr.constant?(_interp_syntax_bridge_)
end
|
#current_branch ⇒ Object
267
268
269
|
# File 'lib/adlint/cc1/mediator.rb', line 267
def current_branch
environment.current_branch
end
|
#interpret(node, *opts) ⇒ Object
259
260
261
|
# 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) ⇒ Object
303
304
305
306
307
308
309
|
# 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) ⇒ Object
295
296
297
298
299
300
301
|
# 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) ⇒ Object
315
316
317
|
# File 'lib/adlint/cc1/mediator.rb', line 315
def pointer_value_of(obj)
obj.to_pointer_value(_interp_object_bridge_)
end
|
#reset_environment ⇒ Object
263
264
265
|
# File 'lib/adlint/cc1/mediator.rb', line 263
def reset_environment
environment.reset
end
|
#scalar_value_of(numeric) ⇒ Object
271
272
273
|
# File 'lib/adlint/cc1/mediator.rb', line 271
def scalar_value_of(numeric)
ScalarValue.of(numeric, logical_right_shift?)
end
|
#scalar_value_of_arbitrary ⇒ Object
287
288
289
|
# File 'lib/adlint/cc1/mediator.rb', line 287
def scalar_value_of_arbitrary
ScalarValue.of_arbitrary(logical_right_shift?)
end
|
#scalar_value_of_false ⇒ Object
279
280
281
|
# File 'lib/adlint/cc1/mediator.rb', line 279
def scalar_value_of_false
ScalarValue.of_false(logical_right_shift?)
end
|
#scalar_value_of_null ⇒ Object
283
284
285
|
# File 'lib/adlint/cc1/mediator.rb', line 283
def scalar_value_of_null
ScalarValue.of_null(logical_right_shift?)
end
|
#scalar_value_of_true ⇒ Object
275
276
277
|
# File 'lib/adlint/cc1/mediator.rb', line 275
def scalar_value_of_true
ScalarValue.of_true(logical_right_shift?)
end
|
#value_of(obj) ⇒ Object
311
312
313
|
# File 'lib/adlint/cc1/mediator.rb', line 311
def value_of(obj)
obj.to_value(_interp_object_bridge_)
end
|