class type cilVisitor =object..end
Cil.nopCilVisitor. Each of the
specialized visiting functions can also call the queueInstr to specify
that some instructions should be inserted before the current instruction
or statement. Use syntax like self#queueInstr to call a method
associated with the current object.
Important Note for Frama-C Users: Unless you really know what you are
doing, you should probably inherit from the
Visitor.generic_frama_c_visitor instead of Cil.genericCilVisitor or
Cil.nopCilVisitor
Consult the Plugin Development Guide for additional details.
method behavior : visitor_behaviormethod project : Project.t optionmethod plain_copy_visitor : cilVisitorbehaviormethod vfile : Cil_types.file -> Cil_types.file visitAction
method vvdec : Cil_types.varinfo -> Cil_types.varinfo visitActionGVar, GVarDecl, GFun and
GFunDecl globals, the formals of functions prototypes, and the
formals and locals of function definitions. This means that the list
of formals of a function may be traversed multiple times if there exists
both a declaration and a definition, or multiple declarations.method vvrbl : Cil_types.varinfo -> Cil_types.varinfo visitActionSkipChildren and
ChangeTo actions make sense since there are no subtrees. Note that
the type and attributes of the variable are not traversed for a
variable use.method vexpr : Cil_types.exp -> Cil_types.exp visitActionCast or SizeOf expression) or the
variable use.method vlval : Cil_types.lval -> Cil_types.lval visitActionmethod voffs : Cil_types.offset -> Cil_types.offset visitActionmethod vinitoffs : Cil_types.offset -> Cil_types.offset visitActionmethod vinst : Cil_types.instr -> Cil_types.instr list visitActionChangeTo action can
replace this instruction with a list of instructionsmethod vstmt : Cil_types.stmt -> Cil_types.stmt visitActionDoChildren action does not create a
new statement when the components change. Instead it updates the contents
of the original statement. This is done to preserve the sharing with
Goto and Case statements that point to the original statement. If you
use the ChangeTo action then you should take care of preserving that
sharing yourself.method vblock : Cil_types.block -> Cil_types.block visitActionmethod vfunc : Cil_types.fundec -> Cil_types.fundec visitActionmethod vglob : Cil_types.global -> Cil_types.global list visitAction
method vinit : Cil_types.varinfo ->
Cil_types.offset -> Cil_types.init -> Cil_types.init visitActionmethod vtype : Cil_types.typ -> Cil_types.typ visitActionTComp, TEnum and TNamed are not visited again.method vcompinfo : Cil_types.compinfo -> Cil_types.compinfo visitActionmethod venuminfo : Cil_types.enuminfo -> Cil_types.enuminfo visitActionmethod vfieldinfo : Cil_types.fieldinfo -> Cil_types.fieldinfo visitActionmethod venumitem : Cil_types.enumitem -> Cil_types.enumitem visitActionmethod vattr : Cil_types.attribute -> Cil_types.attribute list visitActionmethod vattrparam : Cil_types.attrparam -> Cil_types.attrparam visitActionmethod queueInstr : Cil_types.instr list -> unitmethod unqueueInstr : unit -> Cil_types.instr listmethod current_stmt : Cil_types.stmt option
NB: for copy visitor, the stmt is the original one (use
get_stmt to obtain the corresponding copy)
method current_kinstr : Cil_types.kinstrKstmt stmt when visiting statement stmt, Kglobal when called outside
of a statement.method push_stmt : Cil_types.stmt -> unit
method pop_stmt : Cil_types.stmt -> unit
method current_func : Cil_types.fundec option
NB: for copy visitors, the fundec is the original one.
method set_current_func : Cil_types.fundec -> unit
method reset_current_func : unit -> unit
method vlogic_type : Cil_types.logic_type -> Cil_types.logic_type visitAction
method vmodel_info : Cil_types.model_info -> Cil_types.model_info visitAction
method videntified_term : Cil_types.identified_term -> Cil_types.identified_term visitAction
method vterm : Cil_types.term -> Cil_types.term visitAction
method vterm_node : Cil_types.term_node -> Cil_types.term_node visitAction
method vterm_lval : Cil_types.term_lval -> Cil_types.term_lval visitAction
method vterm_lhost : Cil_types.term_lhost -> Cil_types.term_lhost visitAction
method vterm_offset : Cil_types.term_offset -> Cil_types.term_offset visitAction
method vlogic_label : Cil_types.logic_label -> Cil_types.logic_label visitAction
method vlogic_info_decl : Cil_types.logic_info -> Cil_types.logic_info visitActionmethod vlogic_info_use : Cil_types.logic_info -> Cil_types.logic_info visitActionmethod vlogic_type_info_decl : Cil_types.logic_type_info -> Cil_types.logic_type_info visitActionmethod vlogic_type_info_use : Cil_types.logic_type_info -> Cil_types.logic_type_info visitActionmethod vlogic_type_def : Cil_types.logic_type_def -> Cil_types.logic_type_def visitAction
method vlogic_ctor_info_decl : Cil_types.logic_ctor_info -> Cil_types.logic_ctor_info visitActionmethod vlogic_ctor_info_use : Cil_types.logic_ctor_info -> Cil_types.logic_ctor_info visitActionmethod vlogic_var_decl : Cil_types.logic_var -> Cil_types.logic_var visitActionmethod vlogic_var_use : Cil_types.logic_var -> Cil_types.logic_var visitActionmethod vquantifiers : Cil_types.quantifiers -> Cil_types.quantifiers visitAction
method videntified_predicate : Cil_types.identified_predicate ->
Cil_types.identified_predicate visitActionmethod vpredicate : Cil_types.predicate -> Cil_types.predicate visitAction
method vpredicate_named : Cil_types.predicate Cil_types.named ->
Cil_types.predicate Cil_types.named visitAction
method vbehavior : Cil_types.funbehavior -> Cil_types.funbehavior visitAction
method vspec : Cil_types.funspec -> Cil_types.funspec visitAction
method vassigns : Cil_types.identified_term Cil_types.assigns ->
Cil_types.identified_term Cil_types.assigns visitAction
method vfrees : Cil_types.identified_term list ->
Cil_types.identified_term list visitActionmethod vallocates : Cil_types.identified_term list ->
Cil_types.identified_term list visitActionmethod vallocation : Cil_types.identified_term Cil_types.allocation ->
Cil_types.identified_term Cil_types.allocation visitActionmethod vloop_pragma : Cil_types.term Cil_types.loop_pragma ->
Cil_types.term Cil_types.loop_pragma visitAction
method vslice_pragma : Cil_types.term Cil_types.slice_pragma ->
Cil_types.term Cil_types.slice_pragma visitAction
method vimpact_pragma : Cil_types.term Cil_types.impact_pragma ->
Cil_types.term Cil_types.impact_pragma visitAction
method vdeps : Cil_types.identified_term Cil_types.deps ->
Cil_types.identified_term Cil_types.deps visitAction
method vfrom : Cil_types.identified_term Cil_types.from ->
Cil_types.identified_term Cil_types.from visitAction
method vcode_annot : Cil_types.code_annotation -> Cil_types.code_annotation visitAction
method vannotation : Cil_types.global_annotation -> Cil_types.global_annotation visitAction
method fill_global_tables : unitmethod get_filling_actions : (unit -> unit) Queue.t