📄 mmsavar.c
字号:
if (make_objname (obj)) { temp[MAX_IDENT_LEN] = '\x00'; strcpy (tname, temp); dom = ms_find_dom_objs (obj, chan); if (dom == NULL) { printf ("\n There is no Domain associated with this Object. "); } else { if (dom->num_named_var==0) /* Binary search is being used */ { printf ("\n There are no variables associated with this Domain. "); } else { CLEARSCR; printf ("\n\n\n\n"); printf ("\n The following variables are found in this Domain.\n"); for (i=0; i<dom->num_named_var; i++) { list_named_var (dom->named_var_array[i]); } } } wait_msg (""); } (*menu_set_fun) ();#endif }/************************************************************************//* do_set_local_var_data *//************************************************************************/ ST_VOID do_set_local_var_data (ST_VOID) {OBJECT_NAME var_obj;NAMED_VAR *var;ST_CHAR *dest; printf ("\n To modify Local Named Variable : "); if (!get_objname (&var_obj)) { (*menu_set_fun)(); return; } var = ms_find_named_var_obj (&var_obj, 0); if (!var) { wait_msg (" Variable name not found"); (*menu_set_fun)(); return; } dest = u_get_named_addr (var); if (!dest) { wait_msg (" u_get_named_addr failure"); (*menu_set_fun)(); return; } get_arb_write_data (dest, var->type->rt_head, var->type->rt_num); (*menu_set_fun)(); }/************************************************************************//* do_show_local_var_data *//************************************************************************/ST_VOID do_show_local_var_data (ST_VOID) {OBJECT_NAME var_obj;NAMED_VAR *var;ST_CHAR *src; printf ("\n For display of Local Named Variable :"); if (!get_objname (&var_obj)) { (*menu_set_fun)(); return; } var = ms_find_named_var_obj (&var_obj, 0); if (!var) { wait_msg (" Variable name not found"); (*menu_set_fun)(); return; } src = u_get_named_addr (var); if (!src) { wait_msg (" u_get_named_addr failure"); (*menu_set_fun)(); return; } print_arb_data (src, var->type, SD_FALSE, SD_FALSE, NULL); wait_msg (""); (*menu_set_fun)(); }/************************************************************************//* do_add_named_var_list *//************************************************************************/ST_VOID do_add_named_var_list (ST_VOID) {#if MMS_VA_ENDOMAIN_OBJS *dom;OBJECT_NAME list;VARIABLE_LIST *vl_ptr;ST_INT chan;ST_INT temp;ST_INT num_of_vars;ST_CHAR *name; nxt_buf = source_buf; if (!get_chan (&chan)) { (*menu_set_fun) (); return; } printf ("\n Select Variable List Scope and Name : "); if (get_objname (&list)) { /* we need the pointer to the name not an OBJECT_NAME *. All names */ /* are unioned in the same spot. */ name = (ST_CHAR *)list.obj_name.item_id; if ((dom = ms_find_dom_objs (&list, chan)) != NULL) { vl_ptr = (VARIABLE_LIST *)dest_buffer; if (get_var_list (vl_ptr, &temp,SD_FALSE)) { num_of_vars = (ST_INT)temp; if (ms_add_nvlist (dom, name, num_of_vars, vl_ptr)) wait_msg ("\n The specified list has been added to the MMS-EASE VM."); else wait_msg ("\n Could not add the specified list."); } } } (*menu_set_fun) ();#endif }/************************************************************************//* do_del_named_var_list *//************************************************************************/ST_VOID do_del_named_var_list (ST_VOID) {#if MMS_VA_ENOBJECT_NAME obj;DOMAIN_OBJS *dom;ST_INT chan;ST_RET ret; nxt_buf = source_buf; if (!get_chan (&chan)) { (*menu_set_fun) (); return; } printf (" \nEnter Variable List Name : "); if (get_objname (&obj)) { dom = ms_find_dom_objs (&obj, chan); if ((ret = ms_del_nvlist (dom,obj.obj_name.item_id))) print_perror_wait (ret,"\n Delete Error : "); } (*menu_set_fun) ();#endif }/************************************************************************//* list_named_var_list *//************************************************************************/static ST_VOID list_named_var_list (NAMED_VAR_LIST *cur_var_list) {#if MMS_VA_ENVARIABLE_LIST *vl_ptr;ST_INT num_vars; printf (" \n %s : ", cur_var_list->name); if (cur_var_list->deletable) printf ("TRUE "); else printf ("FALSE"); num_vars = cur_var_list->num_vars; printf (": Num of vars = %d", num_vars); vl_ptr = (VARIABLE_LIST *) (cur_var_list + 1); print_var_list (vl_ptr, num_vars); wait_msg ("");#endif }/************************************************************************//* do_list_named_var_list *//************************************************************************/ST_VOID do_list_named_var_list (ST_VOID) {OBJECT_NAME *obj;DOMAIN_OBJS *dom;OBJECT_NAME temp_obj;ST_INT chan;ST_CHAR tname[MAX_IDENT_LEN + 1];ST_CHAR temp[256];ST_INT i; chan = 0; nxt_buf = source_buf; obj = &temp_obj; if (make_objname (obj)) { temp[MAX_IDENT_LEN] = '\x00'; strcpy (tname, temp); dom = ms_find_dom_objs (obj, chan); if (dom == NULL) { printf ("\n There is no Domain associated with this Object. "); } else { if (dom->num_nvlist == 0) { printf ("\n There are no variable lists associated with this Domain. "); } else { CLEARSCR; printf ("\n\n\n\n"); printf ("\n The following variable lists are found in this Domain.\n"); for (i=0; i<dom->num_nvlist; i++) { list_named_var_list(dom->nvlist_array[i]); } } } } (*menu_set_fun) (); }/************************************************************************//* do_set_local_var_list_data *//************************************************************************/ ST_VOID do_set_local_var_list_data (ST_VOID) {OBJECT_NAME var_obj;NAMED_VAR_LIST *var_list;NAMED_VAR *var;ST_CHAR *dest;ST_INT num_of_vars;VARIABLE_LIST *vl_ptr;ST_INT i; printf ("\n To modify Local Named Variable List : "); if (!get_objname (&var_obj)) { (*menu_set_fun)(); return; } var_list = ms_find_nvlist_obj (&var_obj, 0); if (!var_list) { wait_msg (" Variable name not found"); (*menu_set_fun)(); return; } num_of_vars = var_list->num_vars; vl_ptr = (VARIABLE_LIST *)(var_list + 1); for (i = 0; i < num_of_vars; i++) { switch (vl_ptr->var_spec.var_spec_tag) { case VA_SPEC_NAMED: if (var = ms_find_named_var_obj (&(vl_ptr->var_spec.vs.name), 0)) { dest = u_get_named_addr (var); if (!dest) { wait_msg (" u_get_named_addr failure"); (*menu_set_fun)(); return; } printf ("\n Variable (%d) is Named Var: '%s'", i + 1, vl_ptr->var_spec.vs.name.obj_name.vmd_spec); get_arb_write_data (dest, var->type->rt_head, var->type->rt_num); } break; case VA_SPEC_ADDRESSED: case VA_SPEC_DESCRIBED: case VA_SPEC_SCATTERED: case VA_SPEC_INVALIDATED: default: break; } vl_ptr++; } (*menu_set_fun)(); }/************************************************************************//* do_show_local_var_list_data *//************************************************************************/ST_VOID do_show_local_var_list_data (ST_VOID) {OBJECT_NAME var_obj;NAMED_VAR_LIST *var_list;NAMED_VAR *var;ST_CHAR *src;ST_INT num_of_vars;VARIABLE_LIST *vl_ptr;ST_INT i; printf ("\n For display of Local Named Variable List data :"); if (!get_objname (&var_obj)) { (*menu_set_fun)(); return; } var_list = ms_find_nvlist_obj (&var_obj, 0); if (!var_list) { wait_msg (" Variable Name List not found"); (*menu_set_fun)(); return; } num_of_vars = var_list->num_vars; vl_ptr = (VARIABLE_LIST *)(var_list + 1); for (i = 0; i < num_of_vars; i++) { switch (vl_ptr->var_spec.var_spec_tag) { case VA_SPEC_NAMED: if (var = ms_find_named_var_obj (&(vl_ptr->var_spec.vs.name), 0)) { src = u_get_named_addr (var); if (!src) { wait_msg (" u_get_named_addr failure"); (*menu_set_fun)(); return; } printf ("\n Variable (%d) is Named Var: '%s'", i + 1, vl_ptr->var_spec.vs.name.obj_name.vmd_spec); print_arb_data (src, var->type, SD_FALSE, SD_FALSE, NULL); wait_msg (""); } break; case VA_SPEC_ADDRESSED: case VA_SPEC_DESCRIBED: case VA_SPEC_SCATTERED: case VA_SPEC_INVALIDATED: default: break; } vl_ptr++; } (*menu_set_fun)(); }/************************************************************************//************************************************************************//* Common user input routines for variable access. *//************************************************************************//* init_nxtbuf *//* initialize input buffer start address *//************************************************************************/ST_VOID init_nxtbuf (ST_VOID) { nxt_buf = source_buf; }/************************************************************************//* get_objname *//* get object name from operator *//************************************************************************/ST_BOOLEAN get_objname (OBJECT_NAME *info) {ST_BOOLEAN data_entered;ST_INT num;ST_CHAR temp[256]; printf ("\n (0:VMD-Specific, 1:DOM-Specific, 2:AA-Specific)"); printf ("\n Enter Object Scope (default = 0) : "); num = VMD_SPEC; intget (&num); if ((num == VMD_SPEC) || (num == DOM_SPEC) || (num == AA_SPEC)) info->object_tag = num; else num = VMD_SPEC; switch (num) { case (VMD_SPEC) : printf (" Enter VMD-Specific Name : (R) "); if (data_entered = strget (temp)) { temp[MAX_IDENT_LEN] = 0; strcpy (info->obj_name.vmd_spec, temp); } break; case (DOM_SPEC) : printf (" DOM-Specific Name, Enter Domain Id : (R) "); if (data_entered = strget (temp)) { temp[MAX_IDENT_LEN] = '\x00'; strcpy (info->domain_id, temp); printf (" Enter Item Id : (R) "); if (data_entered = strget (temp)) { temp[MAX_IDENT_LEN] = '\x00'; strcpy (info->obj_name.item_id, temp); } } break; case (AA_SPEC) : printf (" Enter AA-Specific Name : (R) "); if (data_entered = strget (temp)) { temp[MAX_IDENT_LEN] = '\x00'; strcpy (info->obj_name.aa_spec, temp); } break; } return (data_entered); }/************************************************************************//* make_objname *//* Get enough information from the operator to construct an object_name *//* for ms_find_dom_objs. *//************************************************************************/ST_BOOLEAN make_objname (OBJECT_NAME *info) {ST_BOOLEAN data_entered;ST_INT num;ST_CHAR temp[256]; printf ("\n (0:VMD-Specific, 1:DOM-Specific, 2:AA-Specific)"); printf ("\n Enter Object Scope (default = 0): "); num = VMD_SPEC; intget (&num); if ((num == VMD_SPEC) || (num == DOM_SPEC) || (num == AA_SPEC)) info->object_tag = num; else num = VMD_SPEC; data_entered = SD_TRUE; switch (num) { case (VMD_SPEC) : case (AA_SPEC) : break; case (DOM_SPEC) : printf (" Enter Domain Name: (R) "); if (data_entered = strget (temp)) { temp[MAX_IDENT_LEN] = '\x00'; strcpy (info->domain_id, temp); } break; } return (data_entered); }/************************************************************************//* get_address *//* get address from operator *//************************************************************************/ST_BOOLEAN get_address (VAR_ACC_ADDR *info) {ST_UCHAR naddr [5];ST_UCHAR *na;ST_INT i;ST_INT data_entered;ST_INT num;ST_INT len; printf ("\n Enter Variable Name Address Type:"); printf ("\n (0:Numeric, 1:Symbolic, 2:Unconstrained)"); printf ("\n Enter Address Type (default = 1) : "); num = SYM_ADDR; intget (&num); if ((num == SYM_ADDR) || (num == UNCON_ADDR) || (num == NUM_ADDR)) info->addr_tag = num; else num = SYM_ADDR; switch (num) { case (NUM_ADDR) : printf (" Enter Numeric Address : (R) "); naddr[0] = (ST_UCHAR)'\000';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -