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
00039 #ifndef __NUSMV_CORE_HRC_DUMPERS_HRC_DUMPER_PRIVATE_H__
00040 #define __NUSMV_CORE_HRC_DUMPERS_HRC_DUMPER_PRIVATE_H__
00041
00042
00043 #include "nusmv/core/hrc/dumpers/HrcDumper.h"
00044
00045 #include "nusmv/core/node/node.h"
00046 #include "nusmv/core/utils/EnvObject.h"
00047 #include "nusmv/core/utils/EnvObject_private.h"
00048 #include "nusmv/core/utils/utils.h"
00049
00050
00060 typedef struct HrcDumper_TAG
00061 {
00062
00063 INHERITS_FROM(EnvObject);
00064
00065
00066
00067
00068
00069 MasterPrinter_ptr printer;
00070 FILE* fout;
00071 boolean use_indentation;
00072 int indent;
00073 size_t indent_size;
00074 boolean indent_pending;
00075 unsigned int columns;
00076 boolean use_mod_suffix;
00077
00078
00079
00080
00081 void (*dump_snippet)(HrcDumper_ptr self,
00082 HrcDumperSnippet snippet,
00083 const HrcDumperInfo* info);
00084
00085 void (*dump_comment)(HrcDumper_ptr self,
00086 const char* msg);
00087
00088 void (*dump_header)(HrcDumper_ptr self,
00089 const char* msg);
00090
00091 void (*dump_node)(HrcDumper_ptr self,
00092 node_ptr node);
00093 } HrcDumper;
00094
00095
00096
00097
00098
00099
00105 #define HRC_DEFAULT_COLUMNS 79
00106
00112 #define HRC_MODULE_SUFFIX "_hrc"
00113
00114
00115 #define _HRC_DUMP_STR(x) \
00116 { \
00117 hrc_dumper_dump_indent(self); \
00118 fprintf(self->fout, x); \
00119 }
00120
00121 #define _HRC_DUMP_STR_NL(x) \
00122 { \
00123 hrc_dumper_dump_indent(self); \
00124 fprintf(self->fout, x); \
00125 hrc_dumper_nl(self); \
00126 }
00127
00128 #define _HRC_DUMP_NL() \
00129 { \
00130 hrc_dumper_nl(self); \
00131 }
00132
00133 #define _HRC_DUMP_NODE(x) \
00134 { \
00135 hrc_dumper_dump_indent(self); \
00136 self->dump_node(self, x); \
00137 }
00138
00139 #define _HRC_DUMP_COMMENT(x) \
00140 { \
00141 self->dump_comment(self, x); \
00142 }
00143
00144 #define _HRC_DUMP_HEADER(x) \
00145 { \
00146 self->dump_header(self, x); \
00147 }
00148
00149
00150
00151
00152
00153
00154
00163 void hrc_dumper_init(HrcDumper_ptr self,
00164 const NuSMVEnv_ptr env,
00165 FILE* fout);
00166
00175 void hrc_dumper_deinit(HrcDumper_ptr self);
00176
00183 void hrc_dumper_dump_snippet(HrcDumper_ptr self,
00184 HrcDumperSnippet snippet,
00185 const HrcDumperInfo* info);
00186
00193 void hrc_dumper_dump_comment(HrcDumper_ptr self,
00194 const char* msg);
00195
00202 void hrc_dumper_dump_header(HrcDumper_ptr self, const char* msg);
00203
00210 void hrc_dumper_dump_node(HrcDumper_ptr self, node_ptr node);
00211
00218 void hrc_dumper_dump_indent(HrcDumper_ptr self);
00219
00226 void hrc_dumper_nl(HrcDumper_ptr self);
00227
00239 void hrc_dumper_dump_var_type(HrcDumper_ptr self, node_ptr node);
00240
00241 #endif