00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00037 #ifndef __NUSMV_CORE_TRACE_TRACE_MGR_H__
00038 #define __NUSMV_CORE_TRACE_TRACE_MGR_H__
00039
00040 #include "nusmv/core/dd/dd.h"
00041 #include "nusmv/core/utils/utils.h"
00042 #include "nusmv/core/utils/array.h"
00043 #include "nusmv/core/utils/error.h"
00044 #include "nusmv/core/trace/plugins/TracePlugin.h"
00045 #include "nusmv/core/trace/exec/PartialTraceExecutor.h"
00046 #include "nusmv/core/trace/exec/CompleteTraceExecutor.h"
00047 #include "nusmv/core/trace/eval/BaseEvaluator.h"
00048 #include "nusmv/core/trace/TraceLabel.h"
00049 #include "nusmv/core/trace/TraceOpt.h"
00050 #include "nusmv/core/node/node.h"
00051
00052
00053
00054
00055
00061 #define TRACE_MGR_DEFAULT_PLUGIN -1
00062
00068 #define TRACE_MGR_LAST_TRACE -1
00069
00085 #define ENV_TRACE_EXPLAINER_CHANGES_ONLY "env_trace_explainer_changes_only"
00086
00092 #define ENV_TRACE_EXPLAINER "env_trace_explainer"
00093
00099 #define ENV_TRACE_TABLE_COLUMN "env_trace_table_column"
00100
00106 #define ENV_TRACE_TABLE_ROW "env_trace_table_row"
00107
00113 #define ENV_TRACE_XML_DUMPER "env_trace_xml_dumper"
00114
00120 #define ENV_TRACE_COMPACT "env_trace_compact"
00121
00127 #define ENV_TRACE_EMBEDDED_XML_DUMPER "env_trace_embedded_xml_dumper"
00128
00134 #define ENV_TRACE_EMPTY_INDEX "etraceemptyindex"
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00179 typedef struct TraceMgr_TAG* TraceMgr_ptr;
00180
00181
00182
00183
00184
00185
00186
00187
00188
00194 #define TRACE_MGR(x) \
00195 ((TraceMgr_ptr) x)
00196
00202 #define TRACE_MGR_CHECK_INSTANCE(x) \
00203 (nusmv_assert(TRACE_MGR(x) != TRACE_MGR(NULL)))
00204
00207
00208
00209
00210
00211
00212
00219 TraceMgr_ptr TraceMgr_create(NuSMVEnv_ptr env);
00220
00228 void TraceMgr_destroy(TraceMgr_ptr self);
00229
00230
00231
00239 int TraceMgr_get_size(const TraceMgr_ptr self);
00240
00247 Trace_ptr
00248 TraceMgr_get_trace_at_index(const TraceMgr_ptr self,
00249 int index);
00250
00251
00252
00263 int TraceMgr_register_trace(TraceMgr_ptr self,
00264 Trace_ptr trace);
00265
00266
00267
00274 BaseEvaluator_ptr
00275 TraceMgr_get_evaluator(TraceMgr_ptr self);
00276
00284 void
00285 TraceMgr_register_evaluator(TraceMgr_ptr self,
00286 BaseEvaluator_ptr eval);
00287
00296 void TraceMgr_unregister_evaluator(TraceMgr_ptr self);
00297
00298
00299
00311 void
00312 TraceMgr_register_complete_trace_executor(TraceMgr_ptr self,
00313 const char* executor_name, const char* executor_desc,
00314 const CompleteTraceExecutor_ptr executor);
00315
00328 CompleteTraceExecutor_ptr
00329 TraceMgr_get_complete_trace_executor(const TraceMgr_ptr self,
00330 const char* name);
00331
00341 array_t*
00342 TraceMgr_get_complete_trace_executor_ids(const TraceMgr_ptr self);
00343
00357 const char*
00358 TraceMgr_get_complete_trace_executor_desc(const TraceMgr_ptr self,
00359 const char* name);
00360
00374 CompleteTraceExecutor_ptr
00375 TraceMgr_get_default_complete_trace_executor(
00376 const TraceMgr_ptr global_trace_manager);
00377
00378
00379
00387 void
00388 TraceMgr_register_partial_trace_executor(TraceMgr_ptr self,
00389 const char* executor_name, const char* executor_desc,
00390 const PartialTraceExecutor_ptr executor);
00391
00401 array_t*
00402 TraceMgr_get_partial_trace_executor_ids(const TraceMgr_ptr self);
00403
00417 PartialTraceExecutor_ptr
00418 TraceMgr_get_partial_trace_executor(const TraceMgr_ptr self,
00419 const char* name);
00420
00430 const char*
00431 TraceMgr_get_partial_trace_executor_desc(const TraceMgr_ptr self,
00432 const char* name);
00433
00446 PartialTraceExecutor_ptr
00447 TraceMgr_get_default_partial_trace_executor(const TraceMgr_ptr global_trace_manager);
00448
00449
00450
00465 void
00466 TraceMgr_register_layer(TraceMgr_ptr self,
00467 const char* layer_name);
00468
00478 void
00479 TraceMgr_unregister_layer(TraceMgr_ptr self,
00480 const char* layer_name);
00481
00491 boolean
00492 TraceMgr_is_layer_registered(const TraceMgr_ptr self,
00493 const char* layer_name);
00494
00501 array_t*
00502 TraceMgr_get_registered_layers(const TraceMgr_ptr self);
00503
00504
00505
00506
00513 void
00514 TraceMgr_set_current_trace_number(TraceMgr_ptr self,
00515 int trace_id);
00516
00523 int
00524 TraceMgr_get_current_trace_number(TraceMgr_ptr self);
00525
00542 boolean
00543 TraceMgr_is_visible_symbol(TraceMgr_ptr self, node_ptr symbol);
00544
00550 int TraceMgr_show_traces(TraceMgr_ptr const self,
00551 const int plugin_index,
00552 const boolean is_all,
00553 const int trace,
00554 TraceOpt_ptr const trace_opt,
00555 const int traceno,
00556 int from_state,
00557 int to_state);
00558
00564 int
00565 TraceMgr_execute_traces(TraceMgr_ptr const self,
00566 CompleteTraceExecutor_ptr const executor,
00567 const int first_trace,
00568 const int last_trace);
00569
00575 int
00576 TraceMgr_execute_partial_traces(TraceMgr_ptr const self,
00577 PartialTraceExecutor_ptr const executor,
00578 const int first_trace,
00579 const int last_trace);
00580
00581
00582
00592 boolean
00593 TraceMgr_is_label_valid(TraceMgr_ptr self, TraceLabel label);
00594
00602 TraceIter
00603 TraceMgr_get_iterator_from_label(TraceMgr_ptr self,
00604 TraceLabel label);
00605
00612 int
00613 TraceMgr_get_abs_index_from_label(TraceMgr_ptr self,
00614 TraceLabel label);
00615
00616
00617
00626 int TraceMgr_get_plugin_size(const TraceMgr_ptr self);
00627
00636 int
00637 TraceMgr_get_internal_plugin_size(const TraceMgr_ptr self);
00638
00645 TracePlugin_ptr
00646 TraceMgr_get_plugin_at_index(const TraceMgr_ptr self,
00647 int index);
00648
00655 void TraceMgr_init_plugins(TraceMgr_ptr self);
00656
00664 int TraceMgr_register_plugin(TraceMgr_ptr self,
00665 TracePlugin_ptr plugin);
00666
00690 int TraceMgr_execute_plugin(const TraceMgr_ptr self,
00691 const TraceOpt_ptr opt,
00692 int plugin_index,
00693 int trace_index);
00694
00702 void
00703 TraceMgr_set_default_plugin(TraceMgr_ptr self,
00704 int plugin_id);
00705
00712 int
00713 TraceMgr_get_default_plugin(TraceMgr_ptr self);
00714
00720 int TraceMgr_show_plugins(TraceMgr_ptr const self,
00721 const boolean is_show_all,
00722 const int dp);
00723
00732 boolean
00733 TraceMgr_is_plugin_internal(const TraceMgr_ptr self, int index);
00734
00735
00736
00737
00741 #endif