package frama-c
Install
dune-project
Dependency
Authors
-
MMichele Alberti
-
TThibaud Antignac
-
GGergö Barany
-
PPatrick Baudin
-
TThibaut Benjamin
-
AAllan Blanchard
-
LLionel Blatter
-
FFrançois Bobot
-
RRichard Bonichon
-
QQuentin Bouillaguet
-
DDavid Bühler
-
ZZakaria Chihani
-
LLoïc Correnson
-
JJulien Crétin
-
PPascal Cuoq
-
ZZaynah Dargaye
-
BBasile Desloges
-
JJean-Christophe Filliâtre
-
PPhilippe Herrmann
-
MMaxime Jacquemin
-
FFlorent Kirchner
-
AAlexander Kogtenkov
-
TTristan Le Gall
-
JJean-Christophe Léchenet
-
MMatthieu Lemerre
-
DDara Ly
-
DDavid Maison
-
CClaude Marché
-
AAndré Maroneze
-
TThibault Martin
-
FFonenantsoa Maurica
-
MMelody Méaulle
-
BBenjamin Monate
-
YYannick Moy
-
PPierre Nigron
-
AAnne Pacalet
-
VValentin Perrelle
-
GGuillaume Petiot
-
DDario Pinto
-
VVirgile Prevosto
-
AArmand Puccetti
-
FFélix Ridoux
-
VVirgile Robles
-
JJan Rochel
-
MMuriel Roger
-
JJulien Signoles
-
NNicolas Stouls
-
KKostyantyn Vorobyov
-
BBoris Yakobowski
Maintainers
Sources
sha256=29612882330ecb6eddd0b4ca3afc0492b70d0feb3379a1b8e893194c6e173983
doc/frama-c.kernel/Frama_c_kernel/Visitor/index.html
Module Frama_c_kernel.Visitor
Frama-C visitors dealing with projects.
class type frama_c_visitor = object ... endClass type for a Db-aware visitor. This is done by defining auxiliary methods that can be redefined in inherited classes, while the corresponding ones from Cil.cilVisitor must retain their values as defined here. Otherwise, annotations may not be visited properly. The replaced functions are
class frama_c_inplace : frama_c_visitorin-place visitor; always act in the current project.
class frama_c_copy : Project.t -> frama_c_visitorCopying visitor. The Project.t argument specifies in which project the visitor creates the new values. (Technically, the method fill_global_tables is called inside this project.) See File.init_project_from_visitor and create_project_from_visitor for possible uses.
class frama_c_refresh : Project.t -> frama_c_visitorSimilar to frama_c_copy, but ids will be refreshed in the copy.
Generic class that abstracts over frama_c_inplace and frama_c_copy.
val visitFramacFileCopy : frama_c_visitor -> Cil_types.file -> Cil_types.fileVisit a file. This will re-cons all globals TWICE (so that it is tail-recursive). Use Cil.visitCilFileSameGlobals if your visitor will not change the list of globals.
val visitFramacFile : frama_c_visitor -> Cil_types.file -> unitSame thing, but the result is ignored. The given visitor must thus be an inplace visitor. Nothing is done if the visitor is a copy visitor.
val visitFramacFileSameGlobals : frama_c_visitor -> Cil_types.file -> unitA visitor for the whole file that does not change the globals (but maybe changes things inside the globals). Use this function instead of Visitor.visitFramacFile whenever appropriate because it is more efficient for long files.
val visitFramacFileFunctions : frama_c_visitor -> Cil_types.file -> unitVisit all function definitions of a file. Use this function instead of Visitor.visitFramacFile or Visitor.visitFramacFileSameGlobals if your visitor only needs function bodies to avoid visiting other globals, including libc functions and their specifications.
val visitFramacGlobal :
frama_c_visitor ->
Cil_types.global ->
Cil_types.global listVisit a global.
Warning Do not call this function during another visit using the same visitor, as it is not reentrant: the inner visit will leave the visitor in an inconsistent state for the outer visit.
val visitFramacKf : frama_c_visitor -> Kernel_function.t -> Kernel_function.tVisit a kernel_function. More precisely, the entry point for the visit will be the global corresponding to the last declaration/definition of the kf. The returned kf is the one that has the varinfo associated to the varinfo of the original kf. If this is a new kf, it is however the responsibility of the visitor to insert it in the AST at the appropriate place.
val visitFramacFunction :
frama_c_visitor ->
Cil_types.fundec ->
Cil_types.fundecVisit a function definition.
val visitFramacExpr : frama_c_visitor -> Cil_types.exp -> Cil_types.expVisit an expression
val visitFramacLval : frama_c_visitor -> Cil_types.lval -> Cil_types.lvalVisit an lvalue
val visitFramacOffset : frama_c_visitor -> Cil_types.offset -> Cil_types.offsetVisit an lvalue or recursive offset
val visitFramacInitOffset :
frama_c_visitor ->
Cil_types.offset ->
Cil_types.offsetVisit an initializer offset
val visitFramacInstr :
frama_c_visitor ->
Cil_types.instr ->
Cil_types.instr listVisit an instruction
val visitFramacStmt : frama_c_visitor -> Cil_types.stmt -> Cil_types.stmtVisit a statement
val visitFramacBlock : frama_c_visitor -> Cil_types.block -> Cil_types.blockVisit a block
val visitFramacType : frama_c_visitor -> Cil_types.typ -> Cil_types.typVisit a type
val visitFramacVarDecl :
frama_c_visitor ->
Cil_types.varinfo ->
Cil_types.varinfoVisit a variable declaration
val visitFramacLogicVarDecl :
frama_c_visitor ->
Cil_types.logic_var ->
Cil_types.logic_varVisit a logic variable declaration
val visitFramacInit :
frama_c_visitor ->
Cil_types.varinfo ->
Cil_types.offset ->
Cil_types.init ->
Cil_types.initVisit an initializer, pass also the global to which this belongs and the * offset.
val visitFramacAttributes :
frama_c_visitor ->
Cil_types.attribute list ->
Cil_types.attribute listVisit a list of attributes
val visitFramacAnnotation :
frama_c_visitor ->
Cil_types.global_annotation ->
Cil_types.global_annotationval visitFramacCodeAnnotation :
frama_c_visitor ->
Cil_types.code_annotation ->
Cil_types.code_annotationval visitFramacAllocation :
frama_c_visitor ->
Cil_types.allocation ->
Cil_types.allocationval visitFramacAssigns :
frama_c_visitor ->
Cil_types.assigns ->
Cil_types.assignsval visitFramacFrom : frama_c_visitor -> Cil_types.from -> Cil_types.fromval visitFramacDeps : frama_c_visitor -> Cil_types.deps -> Cil_types.depsval visitFramacFunspec :
frama_c_visitor ->
Cil_types.funspec ->
Cil_types.funspecval visitFramacLogicType :
frama_c_visitor ->
Cil_types.logic_type ->
Cil_types.logic_typeval visitFramacPredicateNode :
frama_c_visitor ->
Cil_types.predicate_node ->
Cil_types.predicate_nodeval visitFramacPredicate :
frama_c_visitor ->
Cil_types.predicate ->
Cil_types.predicateval visitFramacIdPredicate :
frama_c_visitor ->
Cil_types.identified_predicate ->
Cil_types.identified_predicateval visitFramacPredicates :
frama_c_visitor ->
Cil_types.identified_predicate list ->
Cil_types.identified_predicate listval visitFramacIdTerm :
frama_c_visitor ->
Cil_types.identified_term ->
Cil_types.identified_termvisit identified_term.
val visitFramacTerm : frama_c_visitor -> Cil_types.term -> Cil_types.termval visitFramacTermLval :
frama_c_visitor ->
Cil_types.term_lval ->
Cil_types.term_lvalval visitFramacTermLhost :
frama_c_visitor ->
Cil_types.term_lhost ->
Cil_types.term_lhostval visitFramacTermOffset :
frama_c_visitor ->
Cil_types.term_offset ->
Cil_types.term_offsetval visitFramacLogicInfo :
frama_c_visitor ->
Cil_types.logic_info ->
Cil_types.logic_infoval visitFramacBehavior :
frama_c_visitor ->
Cil_types.funbehavior ->
Cil_types.funbehaviorval visitFramacBehaviors :
frama_c_visitor ->
Cil_types.funbehavior list ->
Cil_types.funbehavior listval visitFramacModelInfo :
frama_c_visitor ->
Cil_types.model_info ->
Cil_types.model_infoval visitFramacExtended :
frama_c_visitor ->
Cil_types.acsl_extension ->
Cil_types.acsl_extension