void hrc_dumper_dump_var_type(HrcDumper_ptr self, node_ptr node) { const NuSMVEnv_ptr env = EnvObject_get_environment(ENV_OBJECT(self)); const ErrorMgr_ptr errmgr = ERROR_MGR(NuSMVEnv_get_value(env, ENV_ERROR_MANAGER)); int node_type = node_get_type(node); switch (node_type) { case BOOLEAN: case TWODOTS: /* range */ _HRC_DUMP_NODE(node); break; case INTEGER: _HRC_DUMP_STR("integer"); break; case REAL: _HRC_DUMP_STR("real"); break; case SIGNED_WORD: _HRC_DUMP_STR("signed word["); _HRC_DUMP_NODE(car(node)); _HRC_DUMP_STR("]"); break; case UNSIGNED_WORD: _HRC_DUMP_STR("unsigned word["); _HRC_DUMP_NODE(car(node)); _HRC_DUMP_STR("]"); break; case SCALAR: hrc_dumper_dump_scalar_type(self, node); break; case WORDARRAY_TYPE: _HRC_DUMP_STR("array word["); _HRC_DUMP_NODE(car(node)); _HRC_DUMP_STR("]"); _HRC_DUMP_STR(" of "); /* recursively prints the array type */ hrc_dumper_dump_var_type(self, cdr(node)); break; case INTARRAY_TYPE: _HRC_DUMP_STR("array integer of "); /* recursively prints the array type */ hrc_dumper_dump_var_type(self, car(node)); break; case ARRAY_TYPE: _HRC_DUMP_STR("array "); /* Prints subrange of array n..m */ _HRC_DUMP_NODE(car(node)); _HRC_DUMP_STR(" of "); /* recursively prints the array type */ hrc_dumper_dump_var_type(self, cdr(node)); break; case NFUNCTION_TYPE: { node_ptr iter; boolean is_first = true; NODE_CONS_LIST_FOREACH(car(node), iter) { node_ptr elem = Node_conslist_get(iter); if (! is_first) { _HRC_DUMP_STR(" * "); } is_first = false; hrc_dumper_dump_var_type(self, elem); } _HRC_DUMP_STR(" -> "); hrc_dumper_dump_var_type(self, cdr(node)); break; } default: ErrorMgr_internal_error(errmgr, "Type %d not supported by hrc emitter.\n", node_type); }
/**Function******************************************************************** Synopsis [] Description [] SideEffects [] SeeAlso [] ******************************************************************************/ void hrc_dumper_debug_dump_snippet(HrcDumper_ptr self, HrcDumperSnippet snippet, const HrcDumperInfo* info) { const char* desc; switch (snippet) { case HDS_HRC_TOP: desc = "HDS_HRC_TOP"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_LIST_MODS: desc = "HDS_LIST_MODS"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_MOD: desc = "HDS_MOD"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_MOD_NAME: desc = "HDS_MOD_NAME"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_LIST_MOD_FORMAL_PARAMS: desc = "HDS_LIST_MOD_FORMAL_PARAMS"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_MOD_FORMAL_PARAM: desc = "HDS_MOD_FORMAL_PARAM"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_LIST_MOD_INSTANCES: desc = "HDS_LIST_MOD_INSTANCES"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_MOD_INSTANCE: desc = "HDS_MOD_INSTANCE"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_MOD_INSTANCE_VARNAME: desc = "HDS_MOD_INSTANCE_VARNAME"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_MOD_INSTANCE_MODNAME: desc = "HDS_MOD_INSTANCE_MODNAME"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_LIST_MOD_INSTANCE_ACTUAL_PARAMS: desc = "HDS_LIST_MOD_INSTANCE_ACTUAL_PARAMS"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_MOD_INSTANCE_ACTUAL_PARAM: desc = "HDS_MOD_INSTANCE_ACTUAL_PARAM"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_LIST_SYMBOLS: desc = "HDS_LIST_SYMBOLS"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_SYMBOL: desc = "HDS_SYMBOL"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_LIST_ASSIGNS: desc = "HDS_LIST_ASSIGNS"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_ASSIGN_INIT: desc = "HDS_ASSIGN_INIT"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_ASSIGN_INVAR: desc = "HDS_ASSIGN_INVAR"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_ASSIGN_NEXT: desc = "HDS_ASSIGN_NEXT"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_LIST_CONSTRAINTS: desc = "HDS_LIST_CONSTRAINTS"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_CONSTRAINT_INIT: desc = "HDS_CONSTRAINT_INIT"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_CONSTRAINT_INVAR: desc = "HDS_CONSTRAINT_INVAR"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_CONSTRAINT_TRANS: desc = "HDS_CONSTRAINT_TRANS"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_LIST_FAIRNESS: desc = "HDS_LIST_FAIRNESS"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_JUSTICE: desc = "HDS_JUSTICE"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_COMPASSION: desc = "HDS_COMPASSION"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_LIST_SPECS: desc = "HDS_LIST_SPECS"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_SPEC: desc = "HDS_SPEC"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_LIST_COMPILER_INFO: desc = "HDS_COMPILER_INFO"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_LIST_SYNTAX_ERRORS: desc = "HDS_LIST_SYNTAX_ERRORS"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; case HDS_ERROR: desc = "HDS_ERROR"; if (info->stage & HRC_STAGE_BEGIN) { _HRC_DUMP_STR("Begin "); } if (info->stage & HRC_STAGE_END) { _HRC_DUMP_STR("End "); } _HRC_DUMP_STR_NL(desc); break; default: internal_error("Unexpected node %d", snippet); } }