1 /****************************************************************************** 2 * DESCRIPTION: Dinotrace source: Dinotrace functions and callback externs 3 * 4 * This file is part of Dinotrace. 5 * 6 * Author: Wilson Snyder <wsnyder@wsnyder.org> 7 * 8 * Code available from: http://www.veripool.org/dinotrace 9 * 10 ****************************************************************************** 11 * 12 * Some of the code in this file was originally developed for Digital 13 * Semiconductor, a division of Digital Equipment Corporation. They 14 * gratefuly have agreed to share it, and thus the base version has been 15 * released to the public with the following provisions: 16 * 17 * 18 * This software is provided 'AS IS'. 19 * 20 * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THE INFORMATION 21 * (INCLUDING ANY SOFTWARE) PROVIDED, INCLUDING ALL IMPLIED WARRANTIES OF 22 * MERCHANTABILITY AND FITNESS FOR ANY PARTICULAR PURPOSE, AND 23 * NON-INFRINGEMENT. DIGITAL NEITHER WARRANTS NOR REPRESENTS THAT THE USE 24 * OF ANY SOURCE, OR ANY DERIVATIVE WORK THEREOF, WILL BE UNINTERRUPTED OR 25 * ERROR FREE. In no event shall DIGITAL be liable for any damages 26 * whatsoever, and in particular DIGITAL shall not be liable for special, 27 * indirect, consequential, or incidental damages, or damages for lost 28 * profits, loss of revenue, or loss of use, arising out of or related to 29 * any use of this software or the information contained in it, whether 30 * such damages arise in contract, tort, negligence, under statute, in 31 * equity, at law or otherwise. This Software is made available solely for 32 * use by end users for information and non-commercial or personal use 33 * only. Any reproduction for sale of this Software is expressly 34 * prohibited. Any rights not expressly granted herein are reserved. 35 * 36 ****************************************************************************** 37 * 38 * Changes made over the basic version are covered by the GNU public licence. 39 * 40 * Dinotrace is free software; you can redistribute it and/or modify 41 * it under the terms of the GNU General Public License as published by 42 * the Free Software Foundation; either version 3, or (at your option) 43 * any later version. 44 * 45 * Dinotrace is distributed in the hope that it will be useful, 46 * but WITHOUT ANY WARRANTY; without even the implied warranty of 47 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 48 * GNU General Public License for more details. 49 * 50 * You should have received a copy of the GNU General Public License 51 * along with Dinotrace; see the file COPYING. If not, write to 52 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 53 * Boston, MA 02111-1307, USA. 54 * 55 *****************************************************************************/ 56 57 /***********************************************************************/ 58 /* Defined functions.... Really inlines, but old VMS compiler chokes */ 59 60 /***********************************************************************/ 61 /* Relatively generic stuff */ 62 63 /* Utilities */ 64 #ifndef MAX 65 # define MAX(_a_,_b_) ( ( ( _a_ ) > ( _b_ ) ) ? ( _a_ ) : ( _b_ ) ) 66 #endif 67 68 #ifndef MIN 69 # define MIN(_a_,_b_) ( ( ( _a_ ) < ( _b_ ) ) ? ( _a_ ) : ( _b_ ) ) 70 #endif 71 72 #ifndef ABS 73 # define ABS(_a_) ( ( ( _a_ ) < 0 ) ? ( - (_a_) ) : ( _a_ ) ) 74 #endif 75 76 /* Avoid binding error messages on XtFree, NOTE ALSO clears the pointer! */ 77 #define DFree(ptr) { XtFree((char *)ptr); ptr = NULL; } 78 79 /* Xt provides a nice XtNew, but a XtNewCalloc is nice too (clear storage) */ 80 #define DNewCalloc(type) ((type *) XtCalloc(1, (unsigned) sizeof(type))) 81 82 /* Useful for debugging messages */ 83 #define DeNull(_str_) ( ((_str_)==NULL) ? "NULL" : (_str_) ) 84 #define DeNullSignal(_sig_) ( ((_sig_)==NULL) ? "NULLPTR" : (DeNull((_sig_)->signame) ) ) 85 86 /* Correct endianness (little is stored in files, since that's what the program originally used) */ 87 #if WORDS_BIGENDIAN 88 #define LITTLEENDIANIZE32(_lw_) \ 89 ( ( (_lw_<<24)&0xff000000) | ((_lw_<< 8)&0x00ff0000) \ 90 | ((_lw_>> 8)&0x0000ff00) | ((_lw_>>24)&0x000000ff)) 91 #else 92 #define LITTLEENDIANIZE32(_lw_) (_lw_) 93 #endif 94 95 /***********************************************************************/ 96 /* Dinotrace specifics */ 97 98 /* Callback.. force a prototype declaration to avoid warnings */ 99 #define DAddCallback(widget, callback, func, trace) \ 100 (XtAddCallback ((widget), (callback), (XtCallbackProc)(func), (trace))) 101 102 /* Schedule a redraw for trace or everybody */ 103 #define draw_expose_needed(_trace_) { global->redraw_needed |= GRD_TRACE; (_trace_)->redraw_needed |= TRD_EXPOSE; } 104 #define draw_needed(_trace_) { global->redraw_needed |= GRD_TRACE; (_trace_)->redraw_needed |= TRD_REDRAW; } 105 #define draw_all_needed() { global->redraw_needed |= GRD_ALL; } 106 #define draw_manual_needed() { global->redraw_needed |= GRD_MANUAL; } 107 #define draw_needupd_sig_start() { global->updates_needed |= GUD_SIG_START; } 108 #define draw_needupd_sig_search() { global->updates_needed |= GUD_SIG_SEARCH; } 109 #define draw_needupd_val_search() { global->updates_needed |= GUD_VAL_SEARCH; } 110 #define draw_needupd_val_states() { global->updates_needed |= GUD_VAL_STATES; } 111 112 /* dino_message_ack types */ 113 #define dino_error_ack(tr,msg) dino_message_ack (tr, 0, msg) 114 #define dino_warning_ack(tr,msg) dino_message_ack (tr, 1, msg) 115 #define dino_information_ack(tr,msg) dino_message_ack (tr, 2, msg) 116 #define CKPT() printf ("CKPT %s:%d\n", __FILE__, __LINE__) 117 118 #define TIME_TO_XPOS_REL(_xtime_, _base_) \ 119 ((int)( ((_xtime_) - (_base_)) * global->res + global->xstart )) 120 #define TIME_TO_XPOS(_xtime_) TIME_TO_XPOS_REL ((_xtime_), global->time) 121 122 #define TIME_WIDTH(_trace_) \ 123 ((DTime_t)( ((_trace_)->width - XMARGIN - global->xstart) / global->res )) 124 125 /* Point to next (prev) cptr. Sizeof(value) is larger than we increment, */ 126 /* so force types to get pointer += 4 bytes */ 127 #define CPTR_NEXT(cptr) ((Value_t*) (((uint_t*)(cptr)) \ 128 + ((cptr)->siglw.stbits.size))) 129 #define CPTR_PREV(cptr) ((Value_t*) (((uint_t*)(cptr)) \ 130 - ((cptr)->siglw.stbits.size_prev))) 131 #define CPTR_TIME(cptr) ((cptr)->time) 132 #define val_copy(to_cptr,from_cptr) \ 133 {\ 134 (to_cptr)->siglw.number = (from_cptr)->siglw.number;\ 135 (to_cptr)->time = (from_cptr)->time;\ 136 (to_cptr)->number[0] = (from_cptr)->number[0];\ 137 (to_cptr)->number[1] = (from_cptr)->number[1];\ 138 (to_cptr)->number[2] = (from_cptr)->number[2];\ 139 (to_cptr)->number[3] = (from_cptr)->number[3];\ 140 (to_cptr)->number[4] = (from_cptr)->number[4];\ 141 (to_cptr)->number[5] = (from_cptr)->number[5];\ 142 (to_cptr)->number[6] = (from_cptr)->number[6];\ 143 (to_cptr)->number[7] = (from_cptr)->number[7];\ 144 } 145 #define val_zero(to_cptr) \ 146 {\ 147 (to_cptr)->siglw.number = 0;\ 148 (to_cptr)->time = 0;\ 149 (to_cptr)->number[0] = 0;\ 150 (to_cptr)->number[1] = 0;\ 151 (to_cptr)->number[2] = 0;\ 152 (to_cptr)->number[3] = 0;\ 153 (to_cptr)->number[4] = 0;\ 154 (to_cptr)->number[5] = 0;\ 155 (to_cptr)->number[6] = 0;\ 156 (to_cptr)->number[7] = 0;\ 157 } 158 159 /* Also identical commented function in dt_file if this isn't defined */ 160 /* It is critical for speed that this be inlined, so we'll just define it */ 161 #define fil_add_cptr(sig_ptr, value_ptr, nocheck) \ 162 {\ 163 Value_t *cptr;\ 164 ulong_t diff;\ 165 cptr = sig_ptr->cptr;\ 166 if ( (nocheck)\ 167 || ( cptr->siglw.stbits.state != (value_ptr)->siglw.stbits.state )\ 168 || ( cptr->number[0] != (value_ptr)->number[0] )\ 169 || ( cptr->number[1] != (value_ptr)->number[1] )\ 170 | ( cptr->number[2] != (value_ptr)->number[2] )\ 171 | ( cptr->number[3] != (value_ptr)->number[3] )\ 172 || ( cptr->number[4] != (value_ptr)->number[4] )\ 173 | ( cptr->number[5] != (value_ptr)->number[5] )\ 174 | ( cptr->number[6] != (value_ptr)->number[6] )\ 175 | ( cptr->number[7] != (value_ptr)->number[7] ) ) {\ 176 diff = (uint_t*)sig_ptr->cptr - (uint_t*)sig_ptr->bptr;\ 177 if (diff > sig_ptr->blocks) {\ 178 sig_ptr->blocks += BLK_SIZE;\ 179 sig_ptr->bptr = (Value_t *)XtRealloc ((char*)(sig_ptr)->bptr,\ 180 ((sig_ptr)->blocks*sizeof(unsigned int)) + (sizeof(Value_t)*2 + 2));\ 181 sig_ptr->cptr = (Value_t *)((uint_t*)sig_ptr->bptr + diff);\ 182 }\ 183 (value_ptr)->siglw.stbits.size_prev = sig_ptr->cptr->siglw.stbits.size;\ 184 (value_ptr)->siglw.stbits.size = STATE_SIZE((value_ptr)->siglw.stbits.state);\ 185 if (sig_ptr->cptr->siglw.number || sig_ptr->cptr!=sig_ptr->bptr) {\ 186 sig_ptr->cptr = CPTR_NEXT(sig_ptr->cptr);\ 187 }\ 188 val_copy (sig_ptr->cptr, (value_ptr));\ 189 }\ 190 } 191 192 193 /***********************************************************************/ 194 /* Prototypes */ 195 196 /* Dinotrace */ 197 extern char * help_message (void); 198 199 /* dt_dispmgr */ 200 extern Trace_t *create_trace (int xs, int ys, int xp, int yp); 201 extern Trace_t *trace_create_split_window (Trace_t *trace); 202 extern Trace_t *malloc_trace (void); 203 extern void init_globals (void); 204 extern void create_globals (int argc, char **argv, Boolean_t sync); 205 extern void set_cursor (int cursor_num); 206 extern int last_set_cursor (void); 207 208 extern void trace_open_cb (Widget w); 209 extern void trace_close_cb (Widget w); 210 extern void trace_clear_cb (Widget w); 211 extern void trace_exit_cb (Widget w); 212 213 /* dt_customize routines */ 214 extern void cus_dialog_cb (Widget w, Trace_t *trace, XmAnyCallbackStruct *cb); 215 extern void cus_read_cb (Widget w, Trace_t *trace, XmFileSelectionBoxCallbackStruct *cb); 216 extern void cus_read_ok_cb (Widget w, Trace_t *trace, XmFileSelectionBoxCallbackStruct *cb); 217 extern void cus_ok_cb (Widget w, Trace_t *trace, XmAnyCallbackStruct *cb); 218 extern void cus_apply_cb (Widget w, Trace_t *trace, XmAnyCallbackStruct *cb); 219 extern void cus_restore_cb (Widget w, Trace_t *trace, XmAnyCallbackStruct *cb); 220 extern void cus_reread_cb (Widget w, Trace_t *trace, XmAnyCallbackStruct *cb); 221 extern void cus_write_cb (Widget w); 222 extern void cus_write_ok_cb (Widget w, Trace_t *trace, XmFileSelectionBoxCallbackStruct *cb); 223 224 /* dt_cursor routines */ 225 extern DCursor_t *cur_add (DTime_t time, ColorNum_t color, CursorType_t type, const char *note); 226 extern void cur_remove (DCursor_t *); 227 extern void cur_new (DTime_t ctime, ColorNum_t color, CursorType_t type, const char *note); 228 extern void cur_move (DCursor_t *csr_ptr, DTime_t new_time); 229 extern void cur_delete (DCursor_t *csr_ptr); 230 extern void cur_delete_of_type (CursorType_t type); 231 extern void cur_free (DCursor_t *csr_ptr); 232 extern DTime_t cur_time_first (const Trace_t *trace); 233 extern DTime_t cur_time_last (const Trace_t *trace); 234 extern void cur_write (FILE *, const char *c); 235 extern char * cur_examine_string (Trace_t *trace, DCursor_t *cursor_ptr); 236 extern void cur_step (DTime_t step); 237 extern void cur_note (DCursor_t* csr_ptr, const char* note); 238 239 extern void cur_add_cb (Widget w); 240 extern void cur_add_current_cb (Widget w); 241 extern void cur_add_next_cb (Widget w); 242 extern void cur_add_simview_cb (Widget w); 243 extern void cur_mov_cb (Widget w); 244 extern void cur_del_cb (Widget w); 245 extern void cur_clr_cb (Widget w); 246 extern void cur_note_cb (Widget w); 247 extern void cur_step_fwd_cb (Widget w); 248 extern void cur_step_back_cb (Widget w); 249 extern void cur_highlight_cb (Widget w); 250 extern void cur_highlight_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 251 extern void cur_highlight (DCursor_t *csr_ptr, ColorNum_t color); 252 extern void cur_add_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 253 extern void cur_move_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 254 extern void cur_delete_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 255 extern void cur_note_ev (Widget w, Trace_t* trace, XButtonPressedEvent* ev); 256 extern DCursor_t *cur_id_to_cursor (int id); 257 258 /* dt_config routines */ 259 extern void config_read_defaults (Trace_t *trace, Boolean_t); 260 extern void config_read_file (Trace_t *trace, char *, Boolean_t, Boolean_t); 261 extern void config_trace_defaults (Trace_t *); 262 extern void config_global_defaults (void); 263 extern void config_parse_geometry (char *, Geometry_t *); 264 extern void config_update_filenames (Trace_t *trace); 265 extern void config_read_socket (char *line, char *name, int cmdnum, Boolean_t eof); 266 extern void config_write_file (Trace_t *trace, char *filename); 267 extern SignalState_t *signalstate_find (const Trace_t *, const char *); 268 269 /* dt_grid routines */ 270 extern DTime_t grid_primary_period (const Trace_t *trace); 271 extern void grid_calc_autos (Trace_t *trace); 272 extern char * grid_examine_string (Trace_t *trace, Grid_t *grid_ptr, DTime_t time); 273 274 extern void grid_customize_cb (Widget w); 275 extern void grid_reset_cb (Widget w); 276 277 /* dt_signal routines */ 278 extern void sig_update_search (void); 279 extern void sig_free (Trace_t *trace, Signal_t *sig_ptr, Boolean_t select, Boolean_t recurse); 280 extern void sig_highlight_selected (int color); 281 extern void sig_radix_selected (Radix_t *radix_ptr); 282 extern void sig_waveform_selected (Waveform_t waveform); 283 extern void sig_modify_enables (Trace_t *); 284 extern void sig_move_selected (Trace_t *new_trace, const char *after_pattern); 285 extern void sig_rename_selected (const char *new_name); 286 extern void sig_copy_selected (Trace_t *new_trace, const char *after_pattern); 287 extern void sig_delete_selected (Boolean_t constant_flag, Boolean_t ignorexz); 288 extern void sig_note (Signal_t* sig_ptr, const char *note); 289 extern void sig_note_selected (const char *note); 290 extern void sig_wildmat_select (Trace_t *, const char *pattern); 291 extern void sig_goto_pattern (Trace_t *, const char *pattern); 292 extern void sig_cross_preserve (Trace_t *trace); 293 extern void sig_cross_restore (Trace_t *trace) ; 294 extern char * sig_basename (const Trace_t *trace, const Signal_t *sig_ptr); 295 extern Signal_t *sig_find_signame (const Trace_t *trace, const char *signame); 296 extern Signal_t *sig_wildmat_signame (const Trace_t *trace, const char *signame); 297 extern void sig_print_names (Trace_t *trace); 298 extern char * sig_examine_string (const Trace_t *trace, const Signal_t *sig_ptr); 299 extern void sig_new_file (Trace_t *trace, char *signame, int file_pos, int file_code, int bits, int msb, int lsb, union sig_file_type_u file_type); 300 301 extern void sig_add_cb (Widget w); 302 extern void sig_mov_cb (Widget w); 303 extern void sig_copy_cb (Widget w); 304 extern void sig_del_cb (Widget w); 305 extern void sig_radix_cb (Widget w); 306 extern void sig_waveform_cb (Widget w); 307 extern void sig_note_cb (Widget w); 308 extern void sig_add_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 309 extern void sig_move_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 310 extern void sig_copy_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 311 extern void sig_delete_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 312 extern void sig_radix_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 313 extern void sig_waveform_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 314 extern void sig_note_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 315 extern void sig_highlight_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 316 extern void sig_highlight_cb (Widget w); 317 extern void sig_highlight_current_cb (Widget w); 318 extern void sig_highlight_next_cb (Widget w); 319 extern void sig_highlight_keep_cb (Widget w); 320 extern void sig_highlight_clear_cb (Widget w); 321 extern void sig_select_cb (Widget w); 322 extern void sig_cancel_cb (Widget w); 323 extern void sig_search_cb (Widget w); 324 extern void sig_search_ok_cb (Widget w, Trace_t *trace, XmSelectionBoxCallbackStruct *cb); 325 extern void sig_search_apply_cb (Widget w, Trace_t *trace, XmSelectionBoxCallbackStruct *cb); 326 327 /* dt_value routines */ 328 extern void val_minimize (Value_t *value_ptr, Signal_t *sig_ptr); 329 extern void val_update_search (void); 330 extern void val_states_update (void); 331 extern void val_to_string (const Radix_t *radix_ptr, char *strg, const Value_t *value_ptr, int width, 332 Boolean_t display, Boolean_t dropleading); 333 extern Boolean_t val_equal (const Value_t *vptra, const Value_t *vptrb); 334 extern void val_radix_init (void); 335 extern Radix_t *val_radix_find (const char *name); 336 337 extern void val_annotate_cb (Widget w); 338 extern void val_annotate_ok_cb (Widget w, Trace_t *trace, XmAnyCallbackStruct *cb); 339 extern void val_annotate_apply_cb (Widget w, Trace_t *trace, XmAnyCallbackStruct *cb); 340 extern void val_annotate_do_cb (Widget w, Trace_t *trace, XmAnyCallbackStruct *cb); 341 extern void val_examine_cb (Widget w); 342 extern void val_examine_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 343 extern void val_search_cb (Widget w); 344 extern void val_search_ok_cb (Widget w, Trace_t *trace, XmSelectionBoxCallbackStruct *cb); 345 extern void val_search_apply_cb (Widget w, Trace_t *trace, XmSelectionBoxCallbackStruct *cb); 346 extern void val_highlight_cb (Widget w); 347 extern void val_highlight_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 348 349 /* dt_print routines */ 350 extern void print_internal (Trace_t *trace); 351 extern void print_reset (Trace_t *trace); 352 353 extern void print_dialog_cb (Widget w); 354 extern void print_reset_cb (Widget w); 355 extern void print_direct_cb (Widget w); 356 extern void print_req_cb (Widget w); 357 extern void print_range_sensitives_cb (Widget w, RangeWidgets_t *range_ptr, XmSelectionBoxCallbackStruct *cb); 358 359 /* dt_binary routines */ 360 extern void tempest_read (Trace_t *trace, int read_fd); 361 extern void decsim_read_binary (Trace_t *trace, int read_fd); 362 363 /* dt_ascii routines */ 364 extern void ascii_string_add_cptr (Signal_t *sig_ptr, const char *value_strg, DTime_t time, Boolean_t nocheck); 365 extern void ascii_read (Trace_t *trace, int read_fd, FILE *decsim_z_readfp); 366 367 /* dt_file routines */ 368 extern void fil_read (Trace_t *trace); 369 extern void free_data (Trace_t *trace); 370 extern void fil_make_busses (Trace_t *trace, Boolean_t not_tempest); 371 extern void fil_trace_end (Trace_t *trace); 372 extern void fil_select_set_pattern (Trace_t *trace, Widget dialog, char *pattern); 373 #ifndef fil_add_cptr 374 extern void fil_add_cptr (Signal_t *sig_ptr, Value_t *value_ptr, Boolean_t nocheck); 375 #endif 376 extern void trace_reread_all (void); 377 extern void trace_reread (Trace_t* trace); 378 379 extern void fil_format_option_cb (Widget w, Trace_t *trace, XmSelectionBoxCallbackStruct *cb); 380 extern void fil_ok_cb (Widget w, Trace_t *trace, XmFileSelectionBoxCallbackStruct *cb); 381 extern void trace_read_cb (Widget w, Trace_t *trace); 382 extern void trace_reread_all_cb (Widget w, Trace_t *trace); 383 extern void trace_reread_cb (Widget w, Trace_t *trace); 384 extern void help_cb (Widget w); 385 extern void help_trace_cb (Widget w); 386 extern void help_doc_cb (Widget w); 387 388 /* dt_util routines */ 389 extern void print_cptr (Value_t *value_ptr); 390 extern void strcpy_overlap (char *d, char *s); 391 extern void fgets_dynamic_extend (char **line_pptr, uint_t *length_ptr, uint_t newlen); 392 extern void fgets_dynamic (char **line_pptr, uint_t *length_ptr, FILE *readfp); 393 extern int wildmat (const char *s, const char *p); 394 extern void upcase_string (char *tp); 395 extern void file_directory (char *strg); 396 extern void ok_apply_cancel (OkApplyWidgets_t *wid_ptr, Widget, Widget, XtCallbackProc, Trace_t*, 397 XtCallbackProc, Trace_t*, XtCallbackProc, Trace_t*, XtCallbackProc, Trace_t*); 398 extern char * extract_first_xms_segment (XmString); 399 extern char * date_string (time_t time_num); 400 extern void dinodisk_directory (char *filename); 401 #if ! HAVE_STRDUP 402 extern char * strdup (const char *); 403 #endif 404 405 extern void new_time (Trace_t *); 406 extern void get_geometry (Trace_t *trace); 407 extern void get_data_popup (Trace_t *trace, char *string, int type); 408 extern void print_sig_info (Signal_t *sig_ptr); 409 extern Trace_t *widget_to_trace (Widget w); 410 extern Value_t *value_at_time (Signal_t *sig_ptr, DTime_t ctime); 411 extern DTime_t posx_to_time (Trace_t *trace, Position x); 412 extern DTime_t posx_to_time_edge (Trace_t *trace, Position x, Position y); 413 extern Signal_t *posy_to_signal (Trace_t *trace, Position y); 414 extern Grid_t * posx_to_grid (Trace_t *trace, Position x, DTime_t *time_ptr); 415 extern DCursor_t *posx_to_cursor (Trace_t *trace, Position x); 416 extern DCursor_t *time_to_cursor (DTime_t xtime); 417 extern void time_to_string (Trace_t *trace, char *strg, DTime_t ctime, Boolean_t relative); 418 extern double time_to_cyc_num (DTime_t time); 419 extern DTime_t cyc_num_to_time (double cyc_num); 420 extern DTime_t time_units_to_multiplier (TimeRep_t timerep); 421 extern char * time_units_to_string (TimeRep_t timerep, Boolean_t showvalue); 422 extern void string_to_value (Radix_t **radix_pptr, const char *strg, Value_t *value_ptr); 423 extern DTime_t string_to_time (Trace_t *trace, char *strg); 424 425 extern void DManageChild (Widget w, Trace_t *trace, MCKeys_t keys); 426 extern void add_event (int type, EventCallback_t callback); 427 extern void remove_all_events (Trace_t *trace); 428 extern void change_title (Trace_t *trace); 429 extern void dino_message_ack (Trace_t *trace, int type, char *msg); 430 extern XmString string_create_with_cr (const char *); 431 extern ColorNum_t submenu_to_color (Trace_t *trace, Widget, ColorNum_t, int); 432 extern int option_to_number (Widget w, Widget *entry0_ptr, int maxnumber); 433 434 extern void cancel_all_events_cb (Widget w); 435 extern void unmanage_cb (Widget w, Widget tag, XmAnyCallbackStruct *cb); 436 extern void debug_print_screen_traces_cb (Widget w); 437 438 /* dt_window routines */ 439 extern void vscroll_new (Trace_t *trace, int inc); 440 extern void new_res (Trace_t *trace, float res_new); 441 extern void win_full_res (Trace_t *trace); 442 443 extern void win_expose_cb (Widget w, Trace_t *trace); 444 extern void win_resize_cb (Widget w, Trace_t *trace); 445 extern void win_refresh_cb (Widget w, Trace_t *trace); 446 extern void win_goto_cb (Widget w); 447 extern void win_goto_option_cb (Widget w, Trace_t *trace, XmSelectionBoxCallbackStruct *cb); 448 extern void win_goto_ok_cb (Widget w, Trace_t *trace, XmSelectionBoxCallbackStruct *cb); 449 extern void win_goto_cancel_cb (Widget w, Trace_t *trace, XmAnyCallbackStruct *cb); 450 extern void win_chg_res_cb (Widget w); 451 extern void win_begin_cb (Widget w); 452 extern void win_end_cb (Widget w); 453 extern void win_inc_res_cb (Widget w); 454 extern void win_dec_res_cb (Widget w); 455 extern void win_full_res_cb (Widget w); 456 extern void win_zoom_res_cb (Widget w); 457 extern void win_namescroll_change_cb (Widget w); 458 extern void win_note (Trace_t* trace, const char* text1, const char* text2, const char* notetext, Boolean_t forcursor); 459 extern void res_zoom_click_ev (Widget w, Trace_t *trace, XButtonPressedEvent *ev); 460 extern void debug_toggle_print_cb (Widget w); 461 extern void debug_integrity_check_cb (Widget w); 462 extern void debug_increase_debugtemp_cb (Widget w); 463 extern void debug_decrease_debugtemp_cb (Widget w); 464 extern void debug_statistics_cb (Widget w); 465 extern void hscroll_unitinc_cb (Widget w); 466 extern void hscroll_unitdec_cb (Widget w); 467 extern void hscroll_pageinc_cb (Widget w); 468 extern void hscroll_pagedec_cb (Widget w); 469 extern void hscroll_drag_cb (Widget w); 470 extern void vscroll_unitinc_cb (Widget w); 471 extern void vscroll_unitdec_cb (Widget w); 472 extern void vscroll_pageinc_cb (Widget w); 473 extern void vscroll_pagedec_cb (Widget w); 474 extern void vscroll_drag_cb (Widget w); 475 476 /* dt_socket */ 477 extern void socket_set_os_signals (void); 478 extern void socket_create (void); 479 480 /* dt_draw */ 481 extern void update_scrollbar (Widget w, int value, int inc, int min, int max, int size); 482 extern void draw_update_sigstart (void); 483 extern void draw_perform (void); 484 extern void draw_update (void); 485 extern void draw_namescroll (Trace_t *trace); 486 extern void draw_scroll_hook_cb_expose (void); 487 488 /* dt_icon */ 489 extern Pixmap icon_dinos (void); 490 491 /* dt_verilog */ 492 extern void verilog_read (Trace_t *trace, int read_fd); 493 494 /* SimView Hooks */ 495 extern void simview_init (char *cmdlinearg); 496 extern void simview_cur_create (int cur_num, double cyc_num, ColorNum_t color, char *color_name); 497 extern void simview_cur_move (int cur_num, double cyc_num); 498 extern void simview_cur_highlight (int cur_num, ColorNum_t color, char *color_name); 499 extern void simview_cur_delete (int cur_num); 500