C and C++ Binaries

Data Type: struct cs_step_visitor_dispatch_t

This struct encapsulates all information about a step visitor, which is applied during CodeSonar's traversal of the program CFGs in the bottom-up phase.

There are several differences between step visitors and the other kinds of visitor:

See Plug-In Tutorial: Part Two for an example using a step visitor.

Defined in file csonar_plugin.h.



Public Attributes

cs_step_user_state_t(* open)(cs_visitor_ctx_t ctx) Create and return a new cs_step_user_state_t.

Called by CodeSonar every time the step traversal enters a function.

Returns A new cs_step_user_state_t.
Parameters
ctx [in] Will be passed the context information that was provided when the visitor was added.
cs_step_user_state_t(* copy)(cs_step_user_state_t s, cs_visitor_ctx_t ctx) Create and return a new copy of a cs_step_user_state_t.

Called by CodeSonar to generate the state argument to transition().

Returns A new copy of s.
Parameters
s [in] The cs_step_user_state_t to be copied
ctx [in] Will be passed the context information that was provided when the visitor was added.
void(* close)(cs_step_user_state_t s, cs_visitor_ctx_t ctx) Close a cs_step_user_state_t and perform any necessary cleanup.

Returns void
Parameters
s [in] The cs_step_user_state_t to close
ctx [in] Will be passed the context information that was provided when the visitor was added.
cs_step_user_state_t(* transition)(cs_step_user_state_t path_state, cs_pdg_vertex source_vertex, cs_edge_label label, cs_pdg_vertex destination_vertex, cs_step_csonar_xform_t since_entry, cs_step_csonar_xform_t this_edge, cs_step_path_t path, cs_visitor_ctx_t ctx) Perform any operations associated with a specified transition in the CFG, and return the resulting cs_step_user_state_t.

Called by CodeSonar every time the step traversal moves from source_vertex to destination_vertex over the edge labeled label.

Returns The cs_step_user_state_t resulting from the specified transition. CodeSonar takes ownership of the returned state, although ownership will eventually be given back via either transition() or close().
Parameters
path_state [in] The path's state so far. The transition function has ownership of path_state, and may therefore consume it.
source_vertex [in] The vertex being transitioned from.
label [in] The label on the edge between source_vertex and destination_vertex.
destination_vertex [in] The vertex being transitioned to.
since_entry [in] The transformation the program has undergone between the function entry point and destination_vertex. Do not attempt to use this cs_step_csonar_xform_t after transition() has returned.
this_edge [in] The transformation the program undergoes between source_vertex and destination_vertex. Do not attempt to use this cs_step_csonar_xform_t after transition() has returned.
path [in] The full step path from the function entry point to destination_vertex
ctx [in] Will be passed the context information that was provided when the visitor was added.